{
  "_format": "hh-sol-artifact-1",
  "contractName": "VestingWalletUpgradeable",
  "sourceName": "contracts/finance/VestingWalletUpgradeable.sol",
  "abi": [
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeTRC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TRC20Released",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TRXReleased",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "duration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "end",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "startTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "durationSeconds",
          "type": "uint64"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "0x60808060405234601d57d3601d57d2601d57610d0090816100228239f35b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630a17b06b146108765780630fb5a6b414610837578063191655871461063c578063715018a6146105cb578063810ec23b1461059557806386d1a69f146104d85780638da5cb5b1461049a57806396132521146104675780639852595c14610431578063989a836614610241578063a3f8eace146101f6578063be9a6555146101ba578063efbe1c1c14610162578063f2fde38b1461012f5763fbccedae0361000e573461012b57d361012b57d261012b575f36600319011261012b57602061012361010e476101096001600160401b034216915f80516020610c5d83398151915254906108f8565b610a89565b5f80516020610c5d8339815191525490610a0b565b604051908152f35b5f80fd5b3461012b57d361012b57d261012b57602036600319011261012b576100186101556108d9565b61015d610b67565b610a18565b3461012b57d361012b57d261012b575f36600319011261012b5760206101236001600160401b035f80516020610c7d83398151915254166001600160401b035f80516020610c7d8339815191525460401c16906108f8565b3461012b57d361012b57d261012b575f36600319011261012b5760206001600160401b035f80516020610c7d8339815191525416604051908152f35b3461012b57d361012b57d261012b57602036600319011261012b57602061012361021e6108d9565b61023a6102346001600160401b03421683610986565b91610919565b5490610a0b565b3461012b57d361012b57d261012b57606036600319011261012b576102646108d9565b61026c6108c3565b90604435906001600160401b038216820361012b575f80516020610c9d83398151915254926001600160401b0360ff8560401c1615941680159081610429575b600114908161041f575b159081610416575b50610407576103096001600160401b039285600185195f80516020610c9d8339815191525416175f80516020610c9d833981519152556103d2575b610301610c11565b61015d610c11565b610311610c11565b166001600160401b03195f80516020610c7d8339815191525416175f80516020610c7d8339815191525567ffffffffffffffff60401b5f80516020610c7d833981519152549160401b169067ffffffffffffffff60401b1916175f80516020610c7d8339815191525561038057005b60ff60401b195f80516020610c9d83398151915254165f80516020610c9d833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6801000000000000000060ff60401b195f80516020610c9d8339815191525416175f80516020610c9d833981519152556102f9565b63f92ee8a960e01b5f5260045ffd5b905015856102be565b303b1591506102b6565b8591506102ac565b3461012b57d361012b57d261012b57602036600319011261012b57602061045e6104596108d9565b610919565b54604051908152f35b3461012b57d361012b57d261012b575f36600319011261012b5760205f80516020610c5d83398151915254604051908152f35b3461012b57d361012b57d261012b575f36600319011261012b575f80516020610c3d833981519152546040516001600160a01b039091168152602090f35b3461012b57d361012b57d261012b575f36600319011261012b5761001861051c476101096001600160401b034216915f80516020610c5d83398151915254906108f8565b61053f6105385f80516020610c5d833981519152548093610a0b565b80926108f8565b5f80516020610c5d833981519152557ff1e96e85d33bdffcb848433a0e34612dcb6df6e4de4bd3fe83c4d7763d6517846020604051838152a15f80516020610c3d833981519152546001600160a01b0316610b9a565b3461012b57d361012b57d261012b57604036600319011261012b5760206101236105bd6108d9565b6105c56108c3565b90610986565b3461012b57d361012b57d261012b575f36600319011261012b576105ed610b67565b5f80516020610c3d83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57d361012b57d261012b57602036600319011261012b5761065f6108d9565b61067e6106756001600160401b03421683610986565b61023a83610919565b9061068881610919565b6106938382546108f8565b905560018060a01b031690817fea953ea81b4d449352210fe796b6873b52d92190fba9e0ad4f872bd620388f8b6020604051848152a25f80516020610c3d833981519152546040516370a0823160e01b815230600482015291906001600160a01b0316602083602481875afa9283156107d9575f93610803575b506040519063a9059cbb60e01b5f52806004528260245260205f60448180895af160015f51148116156107e4575b50816040523014159283610765575b50505061075357005b63763ddefd60e01b5f5260045260245ffd5b6370a0823160e01b825230600483015291925090602082602481875afa9081156107d9575f916107a3575b61079a9250610a0b565b1082808061074a565b90506020823d6020116107d1575b816107be60209383610951565b8101031261012b5761079a915190610790565b3d91506107b1565b6040513d5f823e3d90fd5b60018115166107fa57853b15153d15161661073b565b823d5f823e3d90fd5b9092506020813d60201161082f575b8161081f60209383610951565b8101031261012b5751918461070d565b3d9150610812565b3461012b57d361012b57d261012b575f36600319011261012b5760206001600160401b035f80516020610c7d8339815191525460401c16604051908152f35b3461012b57d361012b57d261012b57602036600319011261012b576004356001600160401b038116810361012b57610123602091610109475f80516020610c5d83398151915254906108f8565b602435906001600160401b038216820361012b57565b6004356001600160a81b038116810361012b576001600160a01b031690565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39016020526040902090565b90601f801991011681019081106001600160401b0382111761097257604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201529091906020816024816001600160a01b0387165afa9081156107d9575f916109d7575b50610109906109cd6109d494610919565b54906108f8565b90565b90506020813d602011610a03575b816109f260209383610951565b8101031261012b57516109d46109bc565b3d91506109e5565b9190820391821161090557565b6001600160a01b03168015610a76575f80516020610c3d83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b906001600160401b03805f80516020610c7d833981519152541691169081105f14610ab45750505f90565b610af06001600160401b035f80516020610c7d83398151915254166001600160401b035f80516020610c7d8339815191525460401c16906108f8565b8110610afa575090565b610b1c906001600160401b035f80516020610c7d833981519152541690610a0b565b90818102918183041490151715610905576001600160401b035f80516020610c7d8339815191525460401c16908115610b53570490565b634e487b7160e01b5f52601260045260245ffd5b5f80516020610c3d833981519152546001600160a01b03163303610b8757565b63118cdaa760e01b5f523360045260245ffd5b814710610bfa5760405160208101908082106001600160401b03831117610972575f9384938480949381946040525260018060a01b03165af115610bda57565b3d15610beb576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b504763cf47918160e01b5f5260045260245260445ffd5b60ff5f80516020610c9d8339815191525460401c1615610c2d57565b631afcd79f60e31b5f5260045ffdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3902f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e58221220f6d93cd5dd39c6428a5631b64a54187d4e48c7b830d33b48da0e1fdd1d1ec6646c6578706572696d656e74616cf564736f6c634300081a0041",
  "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630a17b06b146108765780630fb5a6b414610837578063191655871461063c578063715018a6146105cb578063810ec23b1461059557806386d1a69f146104d85780638da5cb5b1461049a57806396132521146104675780639852595c14610431578063989a836614610241578063a3f8eace146101f6578063be9a6555146101ba578063efbe1c1c14610162578063f2fde38b1461012f5763fbccedae0361000e573461012b57d361012b57d261012b575f36600319011261012b57602061012361010e476101096001600160401b034216915f80516020610c5d83398151915254906108f8565b610a89565b5f80516020610c5d8339815191525490610a0b565b604051908152f35b5f80fd5b3461012b57d361012b57d261012b57602036600319011261012b576100186101556108d9565b61015d610b67565b610a18565b3461012b57d361012b57d261012b575f36600319011261012b5760206101236001600160401b035f80516020610c7d83398151915254166001600160401b035f80516020610c7d8339815191525460401c16906108f8565b3461012b57d361012b57d261012b575f36600319011261012b5760206001600160401b035f80516020610c7d8339815191525416604051908152f35b3461012b57d361012b57d261012b57602036600319011261012b57602061012361021e6108d9565b61023a6102346001600160401b03421683610986565b91610919565b5490610a0b565b3461012b57d361012b57d261012b57606036600319011261012b576102646108d9565b61026c6108c3565b90604435906001600160401b038216820361012b575f80516020610c9d83398151915254926001600160401b0360ff8560401c1615941680159081610429575b600114908161041f575b159081610416575b50610407576103096001600160401b039285600185195f80516020610c9d8339815191525416175f80516020610c9d833981519152556103d2575b610301610c11565b61015d610c11565b610311610c11565b166001600160401b03195f80516020610c7d8339815191525416175f80516020610c7d8339815191525567ffffffffffffffff60401b5f80516020610c7d833981519152549160401b169067ffffffffffffffff60401b1916175f80516020610c7d8339815191525561038057005b60ff60401b195f80516020610c9d83398151915254165f80516020610c9d833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6801000000000000000060ff60401b195f80516020610c9d8339815191525416175f80516020610c9d833981519152556102f9565b63f92ee8a960e01b5f5260045ffd5b905015856102be565b303b1591506102b6565b8591506102ac565b3461012b57d361012b57d261012b57602036600319011261012b57602061045e6104596108d9565b610919565b54604051908152f35b3461012b57d361012b57d261012b575f36600319011261012b5760205f80516020610c5d83398151915254604051908152f35b3461012b57d361012b57d261012b575f36600319011261012b575f80516020610c3d833981519152546040516001600160a01b039091168152602090f35b3461012b57d361012b57d261012b575f36600319011261012b5761001861051c476101096001600160401b034216915f80516020610c5d83398151915254906108f8565b61053f6105385f80516020610c5d833981519152548093610a0b565b80926108f8565b5f80516020610c5d833981519152557ff1e96e85d33bdffcb848433a0e34612dcb6df6e4de4bd3fe83c4d7763d6517846020604051838152a15f80516020610c3d833981519152546001600160a01b0316610b9a565b3461012b57d361012b57d261012b57604036600319011261012b5760206101236105bd6108d9565b6105c56108c3565b90610986565b3461012b57d361012b57d261012b575f36600319011261012b576105ed610b67565b5f80516020610c3d83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57d361012b57d261012b57602036600319011261012b5761065f6108d9565b61067e6106756001600160401b03421683610986565b61023a83610919565b9061068881610919565b6106938382546108f8565b905560018060a01b031690817fea953ea81b4d449352210fe796b6873b52d92190fba9e0ad4f872bd620388f8b6020604051848152a25f80516020610c3d833981519152546040516370a0823160e01b815230600482015291906001600160a01b0316602083602481875afa9283156107d9575f93610803575b506040519063a9059cbb60e01b5f52806004528260245260205f60448180895af160015f51148116156107e4575b50816040523014159283610765575b50505061075357005b63763ddefd60e01b5f5260045260245ffd5b6370a0823160e01b825230600483015291925090602082602481875afa9081156107d9575f916107a3575b61079a9250610a0b565b1082808061074a565b90506020823d6020116107d1575b816107be60209383610951565b8101031261012b5761079a915190610790565b3d91506107b1565b6040513d5f823e3d90fd5b60018115166107fa57853b15153d15161661073b565b823d5f823e3d90fd5b9092506020813d60201161082f575b8161081f60209383610951565b8101031261012b5751918461070d565b3d9150610812565b3461012b57d361012b57d261012b575f36600319011261012b5760206001600160401b035f80516020610c7d8339815191525460401c16604051908152f35b3461012b57d361012b57d261012b57602036600319011261012b576004356001600160401b038116810361012b57610123602091610109475f80516020610c5d83398151915254906108f8565b602435906001600160401b038216820361012b57565b6004356001600160a81b038116810361012b576001600160a01b031690565b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39016020526040902090565b90601f801991011681019081106001600160401b0382111761097257604052565b634e487b7160e01b5f52604160045260245ffd5b6040516370a0823160e01b81523060048201529091906020816024816001600160a01b0387165afa9081156107d9575f916109d7575b50610109906109cd6109d494610919565b54906108f8565b90565b90506020813d602011610a03575b816109f260209383610951565b8101031261012b57516109d46109bc565b3d91506109e5565b9190820391821161090557565b6001600160a01b03168015610a76575f80516020610c3d83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b906001600160401b03805f80516020610c7d833981519152541691169081105f14610ab45750505f90565b610af06001600160401b035f80516020610c7d83398151915254166001600160401b035f80516020610c7d8339815191525460401c16906108f8565b8110610afa575090565b610b1c906001600160401b035f80516020610c7d833981519152541690610a0b565b90818102918183041490151715610905576001600160401b035f80516020610c7d8339815191525460401c16908115610b53570490565b634e487b7160e01b5f52601260045260245ffd5b5f80516020610c3d833981519152546001600160a01b03163303610b8757565b63118cdaa760e01b5f523360045260245ffd5b814710610bfa5760405160208101908082106001600160401b03831117610972575f9384938480949381946040525260018060a01b03165af115610bda57565b3d15610beb576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b504763cf47918160e01b5f5260045260245260445ffd5b60ff5f80516020610c9d8339815191525460401c1615610c2d57565b631afcd79f60e31b5f5260045ffdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3902f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e58221220f6d93cd5dd39c6428a5631b64a54187d4e48c7b830d33b48da0e1fdd1d1ec6646c6578706572696d656e74616cf564736f6c634300081a0041",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
