{
  "_format": "hh-sol-artifact-1",
  "contractName": "VestingWalletUpgradeable",
  "sourceName": "contracts/finance/VestingWalletUpgradeable.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ERC20Released",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EtherReleased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "beneficiary",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "duration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "releasable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "releasable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "vestedAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "vestedAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610aec806100206000396000f3fe6080604052600436106100a05760003560e01c806386d1a69f1161006457806386d1a69f14610168578063961325211461017d5780639852595c14610192578063a3f8eace146101c8578063be9a6555146101e8578063fbccedae1461020e57600080fd5b80630a17b06b146100ac5780630fb5a6b4146100df57806319165587146100fe57806338af3eed14610120578063810ec23b1461014857600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c73660046108f6565b610223565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060365467ffffffffffffffff166100cc565b34801561010a57600080fd5b5061011e610119366004610928565b610247565b005b34801561012c57600080fd5b506035546040516001600160a01b0390911681526020016100d6565b34801561015457600080fd5b506100cc610163366004610943565b6102e2565b34801561017457600080fd5b5061011e610378565b34801561018957600080fd5b506033546100cc565b34801561019e57600080fd5b506100cc6101ad366004610928565b6001600160a01b031660009081526034602052604090205490565b3480156101d457600080fd5b506100cc6101e3366004610928565b6103ec565b3480156101f457600080fd5b50603554600160a01b900467ffffffffffffffff166100cc565b34801561021a57600080fd5b506100cc610419565b600061024161023160335490565b61023b904761098c565b8361043c565b92915050565b6000610252826103ec565b6001600160a01b03831660009081526034602052604081208054929350839290919061027f90849061098c565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102de826102d86035546001600160a01b031690565b836104ff565b5050565b6001600160a01b038216600090815260346020526040812054610371906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036791906109a4565b61023b919061098c565b9392505050565b6000610382610419565b90508060336000828254610396919061098c565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16103e96103e36035546001600160a01b031690565b82610556565b50565b6001600160a01b03811660009081526034602052604081205461040f83426102e2565b61024191906109bd565b600061042460335490565b61042d42610223565b61043791906109bd565b905090565b603554600090600160a01b900467ffffffffffffffff168267ffffffffffffffff16101561046c57506000610241565b60365467ffffffffffffffff16603554600160a01b900467ffffffffffffffff16610497919061098c565b8267ffffffffffffffff1611156104af575081610241565b60365467ffffffffffffffff16603554600160a01b900467ffffffffffffffff166104e49067ffffffffffffffff85166109bd565b6104ee90856109d4565b6104f891906109f3565b9050610241565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610551908490610674565b505050565b804710156105ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146105f8576040519150601f19603f3d011682016040523d82523d6000602084013e6105fd565b606091505b50509050806105515760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105a2565b60006106c9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107499092919063ffffffff16565b90508051600014806106ea5750808060200190518101906106ea9190610a15565b6105515760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a2565b60606107588484600085610760565b949350505050565b6060824710156107c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105a2565b600080866001600160a01b031685876040516107dd9190610a67565b60006040518083038185875af1925050503d806000811461081a576040519150601f19603f3d011682016040523d82523d6000602084013e61081f565b606091505b50915091506108308783838761083b565b979650505050505050565b606083156108aa5782516000036108a3576001600160a01b0385163b6108a35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105a2565b5081610758565b61075883838151156108bf5781518083602001fd5b8060405162461bcd60e51b81526004016105a29190610a83565b803567ffffffffffffffff811681146108f157600080fd5b919050565b60006020828403121561090857600080fd5b610371826108d9565b80356001600160a01b03811681146108f157600080fd5b60006020828403121561093a57600080fd5b61037182610911565b6000806040838503121561095657600080fd5b61095f83610911565b915061096d602084016108d9565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561099f5761099f610976565b500190565b6000602082840312156109b657600080fd5b5051919050565b6000828210156109cf576109cf610976565b500390565b60008160001904831182151516156109ee576109ee610976565b500290565b600082610a1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a2757600080fd5b8151801515811461037157600080fd5b60005b83811015610a52578181015183820152602001610a3a565b83811115610a61576000848401525b50505050565b60008251610a79818460208701610a37565b9190910192915050565b6020815260008251806020840152610aa2816040850160208701610a37565b601f01601f1916919091016040019291505056fea26469706673582212207045e8fa7b0e7491c62f3a97fa2f4434760d9c3570071c253612f51408ce8fff64736f6c634300080d0033",
  "deployedBytecode": "0x6080604052600436106100a05760003560e01c806386d1a69f1161006457806386d1a69f14610168578063961325211461017d5780639852595c14610192578063a3f8eace146101c8578063be9a6555146101e8578063fbccedae1461020e57600080fd5b80630a17b06b146100ac5780630fb5a6b4146100df57806319165587146100fe57806338af3eed14610120578063810ec23b1461014857600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c73660046108f6565b610223565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060365467ffffffffffffffff166100cc565b34801561010a57600080fd5b5061011e610119366004610928565b610247565b005b34801561012c57600080fd5b506035546040516001600160a01b0390911681526020016100d6565b34801561015457600080fd5b506100cc610163366004610943565b6102e2565b34801561017457600080fd5b5061011e610378565b34801561018957600080fd5b506033546100cc565b34801561019e57600080fd5b506100cc6101ad366004610928565b6001600160a01b031660009081526034602052604090205490565b3480156101d457600080fd5b506100cc6101e3366004610928565b6103ec565b3480156101f457600080fd5b50603554600160a01b900467ffffffffffffffff166100cc565b34801561021a57600080fd5b506100cc610419565b600061024161023160335490565b61023b904761098c565b8361043c565b92915050565b6000610252826103ec565b6001600160a01b03831660009081526034602052604081208054929350839290919061027f90849061098c565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102de826102d86035546001600160a01b031690565b836104ff565b5050565b6001600160a01b038216600090815260346020526040812054610371906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036791906109a4565b61023b919061098c565b9392505050565b6000610382610419565b90508060336000828254610396919061098c565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16103e96103e36035546001600160a01b031690565b82610556565b50565b6001600160a01b03811660009081526034602052604081205461040f83426102e2565b61024191906109bd565b600061042460335490565b61042d42610223565b61043791906109bd565b905090565b603554600090600160a01b900467ffffffffffffffff168267ffffffffffffffff16101561046c57506000610241565b60365467ffffffffffffffff16603554600160a01b900467ffffffffffffffff16610497919061098c565b8267ffffffffffffffff1611156104af575081610241565b60365467ffffffffffffffff16603554600160a01b900467ffffffffffffffff166104e49067ffffffffffffffff85166109bd565b6104ee90856109d4565b6104f891906109f3565b9050610241565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610551908490610674565b505050565b804710156105ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146105f8576040519150601f19603f3d011682016040523d82523d6000602084013e6105fd565b606091505b50509050806105515760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105a2565b60006106c9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107499092919063ffffffff16565b90508051600014806106ea5750808060200190518101906106ea9190610a15565b6105515760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a2565b60606107588484600085610760565b949350505050565b6060824710156107c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105a2565b600080866001600160a01b031685876040516107dd9190610a67565b60006040518083038185875af1925050503d806000811461081a576040519150601f19603f3d011682016040523d82523d6000602084013e61081f565b606091505b50915091506108308783838761083b565b979650505050505050565b606083156108aa5782516000036108a3576001600160a01b0385163b6108a35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105a2565b5081610758565b61075883838151156108bf5781518083602001fd5b8060405162461bcd60e51b81526004016105a29190610a83565b803567ffffffffffffffff811681146108f157600080fd5b919050565b60006020828403121561090857600080fd5b610371826108d9565b80356001600160a01b03811681146108f157600080fd5b60006020828403121561093a57600080fd5b61037182610911565b6000806040838503121561095657600080fd5b61095f83610911565b915061096d602084016108d9565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561099f5761099f610976565b500190565b6000602082840312156109b657600080fd5b5051919050565b6000828210156109cf576109cf610976565b500390565b60008160001904831182151516156109ee576109ee610976565b500290565b600082610a1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a2757600080fd5b8151801515811461037157600080fd5b60005b83811015610a52578181015183820152602001610a3a565b83811115610a61576000848401525b50505050565b60008251610a79818460208701610a37565b9190910192915050565b6020815260008251806020840152610aa2816040850160208701610a37565b601f01601f1916919091016040019291505056fea26469706673582212207045e8fa7b0e7491c62f3a97fa2f4434760d9c3570071c253612f51408ce8fff64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
