diff --git a/hardhat/contracts/LilypadToken.sol b/hardhat/contracts/LilypadToken.sol index 2033b7da..d84c8eea 100644 --- a/hardhat/contracts/LilypadToken.sol +++ b/hardhat/contracts/LilypadToken.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.6; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol"; import "./ControllerOwnable.sol"; /* @@ -33,7 +34,7 @@ import "./ControllerOwnable.sol"; now, only the payments contract can call the escrow functions that pay out */ -contract LilypadToken is ControllerOwnable, ERC20 { +contract LilypadToken is ControllerOwnable, ERC20, ERC20Pausable { // keep track of the current escrow balance for each address mapping(address => uint256) private escrowBalances; @@ -101,4 +102,16 @@ contract LilypadToken is ControllerOwnable, ERC20 { _transfer(address(this), owner(), amount); return true; } -} + + function pause() public onlyOwner { + _pause(); + } + + function unpause() public onlyOwner { + _unpause(); + } + + function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) { + super._beforeTokenTransfer(from, to, amount); + } +} \ No newline at end of file diff --git a/hardhat/test/controller.ts b/hardhat/test/controller.ts index 554e9c72..5b66bf2b 100644 --- a/hardhat/test/controller.ts +++ b/hardhat/test/controller.ts @@ -567,5 +567,14 @@ describe("Controller", () => { await checkAgreement(storage, 'MediationRejected') }) + it("Revert agree on deal when token contract is paused", async function () { + const { + token, + controller, + } = await loadFixture(setupController) + await token.connect(getWallet('admin')).pause() + await expect(agree(controller, 'job_creator')).to.be.revertedWith('ERC20Pausable: token transfer while paused') + }) + }) }) \ No newline at end of file diff --git a/pkg/web3/bindings/token/token.go b/pkg/web3/bindings/token/token.go index 480952e5..e06e094f 100644 --- a/pkg/web3/bindings/token/token.go +++ b/pkg/web3/bindings/token/token.go @@ -31,8 +31,8 @@ var ( // TokenMetaData contains all meta data concerning the Token contract. var TokenMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableChangeControllerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"escrowBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getControllerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"payEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"payJob\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"refundEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_controllerAddress\",\"type\":\"address\"}],\"name\":\"setControllerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slashedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"slashEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405260018060146101000a81548160ff0219169083151502179055503480156200002a575f80fd5b5060405162002a0038038062002a008339818101604052810190620000509190620004a8565b82826200007262000066620000b360201b60201c565b620000ba60201b60201c565b81600590816200008391906200076d565b5080600690816200009591906200076d565b505050620000aa33826200017b60201b60201c565b50505062000962565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e390620008af565b60405180910390fd5b620001ff5f8383620002e160201b60201c565b8060045f828254620002129190620008fc565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002c2919062000947565b60405180910390a3620002dd5f8383620002e660201b60201c565b5050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200034c8262000304565b810181811067ffffffffffffffff821117156200036e576200036d62000314565b5b80604052505050565b5f62000382620002eb565b905062000390828262000341565b919050565b5f67ffffffffffffffff821115620003b257620003b162000314565b5b620003bd8262000304565b9050602081019050919050565b5f5b83811015620003e9578082015181840152602081019050620003cc565b5f8484015250505050565b5f6200040a620004048462000395565b62000377565b90508281526020810184848401111562000429576200042862000300565b5b62000436848285620003ca565b509392505050565b5f82601f830112620004555762000454620002fc565b5b815162000467848260208601620003f4565b91505092915050565b5f819050919050565b620004848162000470565b81146200048f575f80fd5b50565b5f81519050620004a28162000479565b92915050565b5f805f60608486031215620004c257620004c1620002f4565b5b5f84015167ffffffffffffffff811115620004e257620004e1620002f8565b5b620004f0868287016200043e565b935050602084015167ffffffffffffffff811115620005145762000513620002f8565b5b62000522868287016200043e565b9250506040620005358682870162000492565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200058e57607f821691505b602082108103620005a457620005a362000549565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005cb565b620006148683620005cb565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620006556200064f620006498462000470565b6200062c565b62000470565b9050919050565b5f819050919050565b620006708362000635565b620006886200067f826200065c565b848454620005d7565b825550505050565b5f90565b6200069e62000690565b620006ab81848462000665565b505050565b5b81811015620006d257620006c65f8262000694565b600181019050620006b1565b5050565b601f8211156200072157620006eb81620005aa565b620006f684620005bc565b8101602085101562000706578190505b6200071e6200071585620005bc565b830182620006b0565b50505b505050565b5f82821c905092915050565b5f620007435f198460080262000726565b1980831691505092915050565b5f6200075d838362000732565b9150826002028217905092915050565b62000778826200053f565b67ffffffffffffffff81111562000794576200079362000314565b5b620007a0825462000576565b620007ad828285620006d6565b5f60209050601f831160018114620007e3575f8415620007ce578287015190505b620007da858262000750565b86555062000849565b601f198416620007f386620005aa565b5f5b828110156200081c57848901518255600182019150602085019450602081019050620007f5565b868310156200083c578489015162000838601f89168262000732565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000897601f8362000851565b9150620008a48262000861565b602082019050919050565b5f6020820190508181035f830152620008c88162000889565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620009088262000470565b9150620009158362000470565b925082820190508082111562000930576200092f620008cf565b5b92915050565b620009418162000470565b82525050565b5f6020820190506200095c5f83018462000936565b92915050565b61209080620009705f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c806388c2bdfe116100b6578063a47029581161007a578063a4702958146103c4578063a9059cbb146103ce578063c57380a2146103fe578063dd62ed3e1461041c578063f2fde38b1461044c578063f3d3d4481461046857610140565b806388c2bdfe146102f85780638da5cb5b1461032857806395d89b4114610346578063987bf9a714610364578063a457c2d71461039457610140565b8063313ce56711610108578063313ce56714610210578063395093511461022e5780635407e93c1461025e578063599efa6b1461028e57806370a08231146102be578063715018a6146102ee57610140565b8063065e86c81461014457806306fdde0314610174578063095ea7b31461019257806318160ddd146101c257806323b872dd146101e0575b5f80fd5b61015e6004803603810190610159919061156f565b610484565b60405161016b91906115d9565b60405180910390f35b61017c610577565b604051610189919061167c565b60405180910390f35b6101ac60048036038101906101a7919061169c565b610607565b6040516101b991906115d9565b60405180910390f35b6101ca610629565b6040516101d791906116e9565b60405180910390f35b6101fa60048036038101906101f5919061156f565b610632565b60405161020791906115d9565b60405180910390f35b610218610660565b604051610225919061171d565b60405180910390f35b6102486004803603810190610243919061169c565b610668565b60405161025591906115d9565b60405180910390f35b61027860048036038101906102739190611736565b61069e565b60405161028591906115d9565b60405180910390f35b6102a860048036038101906102a3919061169c565b610706565b6040516102b591906115d9565b60405180910390f35b6102d860048036038101906102d39190611761565b610866565b6040516102e591906116e9565b60405180910390f35b6102f66108ac565b005b610312600480360381019061030d919061169c565b6108bf565b60405161031f91906115d9565b60405180910390f35b6103306109b8565b60405161033d919061179b565b60405180910390f35b61034e6109df565b60405161035b919061167c565b60405180910390f35b61037e60048036038101906103799190611761565b610a6f565b60405161038b91906116e9565b60405180910390f35b6103ae60048036038101906103a9919061169c565b610ab5565b6040516103bb91906115d9565b60405180910390f35b6103cc610b2a565b005b6103e860048036038101906103e3919061169c565b610b4e565b6040516103f591906115d9565b60405180910390f35b610406610b70565b604051610413919061179b565b60405180910390f35b610436600480360381019061043191906117b4565b610b98565b60405161044391906116e9565b60405180910390f35b61046660048036038101906104619190611761565b610c1a565b005b610482600480360381019061047d9190611761565b610c9c565b005b5f61048d610da4565b508160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561050e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050590611862565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461055a91906118ad565b9250508190555061056c308484610ed1565b600190509392505050565b6060600580546105869061190d565b80601f01602080910402602001604051908101604052809291908181526020018280546105b29061190d565b80156105fd5780601f106105d4576101008083540402835291602001916105fd565b820191905f5260205f20905b8154815290600101906020018083116105e057829003601f168201915b5050505050905090565b5f80610611611140565b905061061e818585611147565b600191505092915050565b5f600454905090565b5f8061063c611140565b905061064985828561130a565b610654858585610ed1565b60019150509392505050565b5f6012905090565b5f80610672611140565b90506106938185856106848589610b98565b61068e919061193d565b611147565b600191505092915050565b5f6106aa323084610ed1565b8160075f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106f6919061193d565b9250508190555060019050919050565b5f61070f610da4565b505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610775906119e0565b60405180910390fd5b8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f590611862565b60405180910390fd5b8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461084a91906118ad565b9250508190555061085c308484610ed1565b6001905092915050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108b4611395565b6108bd5f611413565b565b5f6108c8610da4565b508160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090611862565b60405180910390fd5b8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461099591906118ad565b925050819055506109ae306109a86109b8565b84610ed1565b6001905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546109ee9061190d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a9061190d565b8015610a655780601f10610a3c57610100808354040283529160200191610a65565b820191905f5260205f20905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80610abf611140565b90505f610acc8286610b98565b905083811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890611a6e565b60405180910390fd5b610b1e8286868403611147565b60019250505092915050565b610b32611395565b5f600160146101000a81548160ff021916908315150217905550565b5f80610b58611140565b9050610b65818585610ed1565b600191505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610c22611395565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8790611afc565b60405180910390fd5b610c9981611413565b50565b610ca4611395565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990611b8a565b60405180910390fd5b600160149054906101000a900460ff16610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5890611c18565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90611b8a565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e74611140565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190611ca6565b60405180910390fd5b6001905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3690611d34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490611dc2565b60405180910390fd5b610fb88383836114d4565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390611e50565b60405180910390fd5b81810360025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161112791906116e9565b60405180910390a361113a8484846114d9565b50505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90611ede565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90611f6c565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112fd91906116e9565b60405180910390a3505050565b5f6113158484610b98565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461138f5781811015611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890611fd4565b60405180910390fd5b61138e8484848403611147565b5b50505050565b61139d611140565b73ffffffffffffffffffffffffffffffffffffffff166113bb6109b8565b73ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114089061203c565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61150b826114e2565b9050919050565b61151b81611501565b8114611525575f80fd5b50565b5f8135905061153681611512565b92915050565b5f819050919050565b61154e8161153c565b8114611558575f80fd5b50565b5f8135905061156981611545565b92915050565b5f805f60608486031215611586576115856114de565b5b5f61159386828701611528565b93505060206115a486828701611528565b92505060406115b58682870161155b565b9150509250925092565b5f8115159050919050565b6115d3816115bf565b82525050565b5f6020820190506115ec5f8301846115ca565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561162957808201518184015260208101905061160e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61164e826115f2565b61165881856115fc565b935061166881856020860161160c565b61167181611634565b840191505092915050565b5f6020820190508181035f8301526116948184611644565b905092915050565b5f80604083850312156116b2576116b16114de565b5b5f6116bf85828601611528565b92505060206116d08582860161155b565b9150509250929050565b6116e38161153c565b82525050565b5f6020820190506116fc5f8301846116da565b92915050565b5f60ff82169050919050565b61171781611702565b82525050565b5f6020820190506117305f83018461170e565b92915050565b5f6020828403121561174b5761174a6114de565b5b5f6117588482850161155b565b91505092915050565b5f60208284031215611776576117756114de565b5b5f61178384828501611528565b91505092915050565b61179581611501565b82525050565b5f6020820190506117ae5f83018461178c565b92915050565b5f80604083850312156117ca576117c96114de565b5b5f6117d785828601611528565b92505060206117e885828601611528565b9150509250929050565b7f4c696c79706164546f6b656e3a206e6f7420656e6f7567682066756e647320695f8201527f6e20657363726f77000000000000000000000000000000000000000000000000602082015250565b5f61184c6028836115fc565b9150611857826117f2565b604082019050919050565b5f6020820190508181035f83015261187981611840565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6118b78261153c565b91506118c28361153c565b92508282039050818111156118da576118d9611880565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061192457607f821691505b602082108103611937576119366118e0565b5b50919050565b5f6119478261153c565b91506119528361153c565b925082820190508082111561196a57611969611880565b5b92915050565b7f4c696c79706164546f6b656e3a20746f416464726573732063616e6e6f7420625f8201527f65207a65726f2061646472657373000000000000000000000000000000000000602082015250565b5f6119ca602e836115fc565b91506119d582611970565b604082019050919050565b5f6020820190508181035f8301526119f7816119be565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611a586025836115fc565b9150611a63826119fe565b604082019050919050565b5f6020820190508181035f830152611a8581611a4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611ae66026836115fc565b9150611af182611a8c565b604082019050919050565b5f6020820190508181035f830152611b1381611ada565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a20436f6e74726f6c6c65722061645f8201527f6472657373206d75737420626520646566696e65640000000000000000000000602082015250565b5f611b746035836115fc565b9150611b7f82611b1a565b604082019050919050565b5f6020820190508181035f830152611ba181611b68565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a2063616e4368616e6765436f6e745f8201527f726f6c6c6572416464726573732069732064697361626c656400000000000000602082015250565b5f611c026039836115fc565b9150611c0d82611ba8565b604082019050919050565b5f6020820190508181035f830152611c2f81611bf6565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a204f6e6c792074686520636f6e745f8201527f726f6c6c65722063616e2063616c6c2074686973206d6574686f640000000000602082015250565b5f611c90603b836115fc565b9150611c9b82611c36565b604082019050919050565b5f6020820190508181035f830152611cbd81611c84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611d1e6025836115fc565b9150611d2982611cc4565b604082019050919050565b5f6020820190508181035f830152611d4b81611d12565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611dac6023836115fc565b9150611db782611d52565b604082019050919050565b5f6020820190508181035f830152611dd981611da0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611e3a6026836115fc565b9150611e4582611de0565b604082019050919050565b5f6020820190508181035f830152611e6781611e2e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ec86024836115fc565b9150611ed382611e6e565b604082019050919050565b5f6020820190508181035f830152611ef581611ebc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611f566022836115fc565b9150611f6182611efc565b604082019050919050565b5f6020820190508181035f830152611f8381611f4a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611fbe601d836115fc565b9150611fc982611f8a565b602082019050919050565b5f6020820190508181035f830152611feb81611fb2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6120266020836115fc565b915061203182611ff2565b602082019050919050565b5f6020820190508181035f8301526120538161201a565b905091905056fea264697066735822122030495cfd6581bec5818670cdcd147e9cad8885e8a153b6e0fd874e64af2e92d064736f6c63430008150033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableChangeControllerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"escrowBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getControllerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"payEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"payJob\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"refundEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_controllerAddress\",\"type\":\"address\"}],\"name\":\"setControllerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slashedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"slashEscrow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405260018060146101000a81548160ff0219169083151502179055503480156200002a575f80fd5b5060405162002efd38038062002efd833981810160405281019062000050919062000559565b82826200007262000066620000cc60201b60201c565b620000d360201b60201c565b81600590816200008391906200081e565b5080600690816200009591906200081e565b5050505f60075f6101000a81548160ff021916908315150217905550620000c333826200019460201b60201c565b50505062000aa7565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000205576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001fc9062000960565b60405180910390fd5b620002185f8383620002fa60201b60201c565b8060045f8282546200022b9190620009ad565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002db9190620009f8565b60405180910390a3620002f65f83836200031260201b60201c565b5050565b6200030d8383836200031760201b60201c565b505050565b505050565b6200032a8383836200038260201b60201c565b6200033a6200038760201b60201c565b156200037d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003749062000a87565b60405180910390fd5b505050565b505050565b5f60075f9054906101000a900460ff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620003fd82620003b5565b810181811067ffffffffffffffff821117156200041f576200041e620003c5565b5b80604052505050565b5f620004336200039c565b9050620004418282620003f2565b919050565b5f67ffffffffffffffff821115620004635762000462620003c5565b5b6200046e82620003b5565b9050602081019050919050565b5f5b838110156200049a5780820151818401526020810190506200047d565b5f8484015250505050565b5f620004bb620004b58462000446565b62000428565b905082815260208101848484011115620004da57620004d9620003b1565b5b620004e78482856200047b565b509392505050565b5f82601f830112620005065762000505620003ad565b5b815162000518848260208601620004a5565b91505092915050565b5f819050919050565b620005358162000521565b811462000540575f80fd5b50565b5f8151905062000553816200052a565b92915050565b5f805f60608486031215620005735762000572620003a5565b5b5f84015167ffffffffffffffff811115620005935762000592620003a9565b5b620005a186828701620004ef565b935050602084015167ffffffffffffffff811115620005c557620005c4620003a9565b5b620005d386828701620004ef565b9250506040620005e68682870162000543565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200063f57607f821691505b602082108103620006555762000654620005fa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200067c565b620006c586836200067c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200070662000700620006fa8462000521565b620006dd565b62000521565b9050919050565b5f819050919050565b6200072183620006e6565b6200073962000730826200070d565b84845462000688565b825550505050565b5f90565b6200074f62000741565b6200075c81848462000716565b505050565b5b818110156200078357620007775f8262000745565b60018101905062000762565b5050565b601f821115620007d2576200079c816200065b565b620007a7846200066d565b81016020851015620007b7578190505b620007cf620007c6856200066d565b83018262000761565b50505b505050565b5f82821c905092915050565b5f620007f45f1984600802620007d7565b1980831691505092915050565b5f6200080e8383620007e3565b9150826002028217905092915050565b6200082982620005f0565b67ffffffffffffffff811115620008455762000844620003c5565b5b62000851825462000627565b6200085e82828562000787565b5f60209050601f83116001811462000894575f84156200087f578287015190505b6200088b858262000801565b865550620008fa565b601f198416620008a4866200065b565b5f5b82811015620008cd57848901518255600182019150602085019450602081019050620008a6565b86831015620008ed5784890151620008e9601f891682620007e3565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000948601f8362000902565b9150620009558262000912565b602082019050919050565b5f6020820190508181035f83015262000979816200093a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620009b98262000521565b9150620009c68362000521565b9250828201905080821115620009e157620009e062000980565b5b92915050565b620009f28162000521565b82525050565b5f60208201905062000a0d5f830184620009e7565b92915050565b7f45524332305061757361626c653a20746f6b656e207472616e736665722077685f8201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b5f62000a6f602a8362000902565b915062000a7c8262000a13565b604082019050919050565b5f6020820190508181035f83015262000aa08162000a61565b9050919050565b6124488062000ab55f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063715018a6116100dc578063a457c2d711610095578063c57380a21161006f578063c57380a214610461578063dd62ed3e1461047f578063f2fde38b146104af578063f3d3d448146104cb57610171565b8063a457c2d7146103f7578063a470295814610427578063a9059cbb1461043157610171565b8063715018a6146103475780638456cb591461035157806388c2bdfe1461035b5780638da5cb5b1461038b57806395d89b41146103a9578063987bf9a7146103c757610171565b8063395093511161012e578063395093511461025f5780633f4ba83a1461028f5780635407e93c14610299578063599efa6b146102c95780635c975abb146102f957806370a082311461031757610171565b8063065e86c81461017557806306fdde03146101a5578063095ea7b3146101c357806318160ddd146101f357806323b872dd14610211578063313ce56714610241575b5f80fd5b61018f600480360381019061018a91906117c9565b6104e7565b60405161019c9190611833565b60405180910390f35b6101ad6105da565b6040516101ba91906118d6565b60405180910390f35b6101dd60048036038101906101d891906118f6565b61066a565b6040516101ea9190611833565b60405180910390f35b6101fb61068c565b6040516102089190611943565b60405180910390f35b61022b600480360381019061022691906117c9565b610695565b6040516102389190611833565b60405180910390f35b6102496106c3565b6040516102569190611977565b60405180910390f35b610279600480360381019061027491906118f6565b6106cb565b6040516102869190611833565b60405180910390f35b610297610701565b005b6102b360048036038101906102ae9190611990565b610713565b6040516102c09190611833565b60405180910390f35b6102e360048036038101906102de91906118f6565b61077b565b6040516102f09190611833565b60405180910390f35b6103016108db565b60405161030e9190611833565b60405180910390f35b610331600480360381019061032c91906119bb565b6108f0565b60405161033e9190611943565b60405180910390f35b61034f610936565b005b610359610949565b005b610375600480360381019061037091906118f6565b61095b565b6040516103829190611833565b60405180910390f35b610393610a54565b6040516103a091906119f5565b60405180910390f35b6103b1610a7b565b6040516103be91906118d6565b60405180910390f35b6103e160048036038101906103dc91906119bb565b610b0b565b6040516103ee9190611943565b60405180910390f35b610411600480360381019061040c91906118f6565b610b51565b60405161041e9190611833565b60405180910390f35b61042f610bc6565b005b61044b600480360381019061044691906118f6565b610bea565b6040516104589190611833565b60405180910390f35b610469610c0c565b60405161047691906119f5565b60405180910390f35b61049960048036038101906104949190611a0e565b610c34565b6040516104a69190611943565b60405180910390f35b6104c960048036038101906104c491906119bb565b610cb6565b005b6104e560048036038101906104e091906119bb565b610d38565b005b5f6104f0610e40565b508160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056890611abc565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105bd9190611b07565b925050819055506105cf308484610f6d565b600190509392505050565b6060600580546105e990611b67565b80601f016020809104026020016040519081016040528092919081815260200182805461061590611b67565b80156106605780601f1061063757610100808354040283529160200191610660565b820191905f5260205f20905b81548152906001019060200180831161064357829003601f168201915b5050505050905090565b5f806106746111dc565b90506106818185856111e3565b600191505092915050565b5f600454905090565b5f8061069f6111dc565b90506106ac8582856113a6565b6106b7858585610f6d565b60019150509392505050565b5f6012905090565b5f806106d56111dc565b90506106f68185856106e78589610c34565b6106f19190611b97565b6111e3565b600191505092915050565b610709611431565b6107116114af565b565b5f61071f323084610f6d565b8160085f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461076b9190611b97565b9250508190555060019050919050565b5f610784610e40565b505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea90611c3a565b60405180910390fd5b8160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90611abc565b60405180910390fd5b8160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108bf9190611b07565b925050819055506108d1308484610f6d565b6001905092915050565b5f60075f9054906101000a900460ff16905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61093e611431565b6109475f611510565b565b610951611431565b6109596115d1565b565b5f610964610e40565b508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90611abc565b60405180910390fd5b8160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a319190611b07565b92505081905550610a4a30610a44610a54565b84610f6d565b6001905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610a8a90611b67565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab690611b67565b8015610b015780601f10610ad857610100808354040283529160200191610b01565b820191905f5260205f20905b815481529060010190602001808311610ae457829003601f168201915b5050505050905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80610b5b6111dc565b90505f610b688286610c34565b905083811015610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490611cc8565b60405180910390fd5b610bba82868684036111e3565b60019250505092915050565b610bce611431565b5f600160146101000a81548160ff021916908315150217905550565b5f80610bf46111dc565b9050610c01818585610f6d565b600191505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610cbe611431565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390611d56565b60405180910390fd5b610d3581611510565b50565b610d40611431565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da590611de4565b60405180910390fd5b600160149054906101000a900460ff16610dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df490611e72565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790611de4565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f106111dc565b73ffffffffffffffffffffffffffffffffffffffff1614610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90611f00565b60405180910390fd5b6001905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290611f8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611049576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110409061201c565b60405180910390fd5b611054838383611633565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf906120aa565b60405180910390fd5b81810360025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111c39190611943565b60405180910390a36111d6848484611643565b50505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890612138565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b6906121c6565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113999190611943565b60405180910390a3505050565b5f6113b18484610c34565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461142b578181101561141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061222e565b60405180910390fd5b61142a84848484036111e3565b5b50505050565b6114396111dc565b73ffffffffffffffffffffffffffffffffffffffff16611457610a54565b73ffffffffffffffffffffffffffffffffffffffff16146114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a490612296565b60405180910390fd5b565b6114b7611648565b5f60075f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6114f96111dc565b60405161150691906119f5565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6115d9611691565b600160075f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861161c6111dc565b60405161162991906119f5565b60405180910390a1565b61163e8383836116db565b505050565b505050565b6116506108db565b61168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906122fe565b60405180910390fd5b565b6116996108db565b156116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090612366565b60405180910390fd5b565b6116e6838383611733565b6116ee6108db565b1561172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906123f4565b60405180910390fd5b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117658261173c565b9050919050565b6117758161175b565b811461177f575f80fd5b50565b5f813590506117908161176c565b92915050565b5f819050919050565b6117a881611796565b81146117b2575f80fd5b50565b5f813590506117c38161179f565b92915050565b5f805f606084860312156117e0576117df611738565b5b5f6117ed86828701611782565b93505060206117fe86828701611782565b925050604061180f868287016117b5565b9150509250925092565b5f8115159050919050565b61182d81611819565b82525050565b5f6020820190506118465f830184611824565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611883578082015181840152602081019050611868565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6118a88261184c565b6118b28185611856565b93506118c2818560208601611866565b6118cb8161188e565b840191505092915050565b5f6020820190508181035f8301526118ee818461189e565b905092915050565b5f806040838503121561190c5761190b611738565b5b5f61191985828601611782565b925050602061192a858286016117b5565b9150509250929050565b61193d81611796565b82525050565b5f6020820190506119565f830184611934565b92915050565b5f60ff82169050919050565b6119718161195c565b82525050565b5f60208201905061198a5f830184611968565b92915050565b5f602082840312156119a5576119a4611738565b5b5f6119b2848285016117b5565b91505092915050565b5f602082840312156119d0576119cf611738565b5b5f6119dd84828501611782565b91505092915050565b6119ef8161175b565b82525050565b5f602082019050611a085f8301846119e6565b92915050565b5f8060408385031215611a2457611a23611738565b5b5f611a3185828601611782565b9250506020611a4285828601611782565b9150509250929050565b7f4c696c79706164546f6b656e3a206e6f7420656e6f7567682066756e647320695f8201527f6e20657363726f77000000000000000000000000000000000000000000000000602082015250565b5f611aa6602883611856565b9150611ab182611a4c565b604082019050919050565b5f6020820190508181035f830152611ad381611a9a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b1182611796565b9150611b1c83611796565b9250828203905081811115611b3457611b33611ada565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b7e57607f821691505b602082108103611b9157611b90611b3a565b5b50919050565b5f611ba182611796565b9150611bac83611796565b9250828201905080821115611bc457611bc3611ada565b5b92915050565b7f4c696c79706164546f6b656e3a20746f416464726573732063616e6e6f7420625f8201527f65207a65726f2061646472657373000000000000000000000000000000000000602082015250565b5f611c24602e83611856565b9150611c2f82611bca565b604082019050919050565b5f6020820190508181035f830152611c5181611c18565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611cb2602583611856565b9150611cbd82611c58565b604082019050919050565b5f6020820190508181035f830152611cdf81611ca6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d40602683611856565b9150611d4b82611ce6565b604082019050919050565b5f6020820190508181035f830152611d6d81611d34565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a20436f6e74726f6c6c65722061645f8201527f6472657373206d75737420626520646566696e65640000000000000000000000602082015250565b5f611dce603583611856565b9150611dd982611d74565b604082019050919050565b5f6020820190508181035f830152611dfb81611dc2565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a2063616e4368616e6765436f6e745f8201527f726f6c6c6572416464726573732069732064697361626c656400000000000000602082015250565b5f611e5c603983611856565b9150611e6782611e02565b604082019050919050565b5f6020820190508181035f830152611e8981611e50565b9050919050565b7f436f6e74726f6c6c65724f776e61626c653a204f6e6c792074686520636f6e745f8201527f726f6c6c65722063616e2063616c6c2074686973206d6574686f640000000000602082015250565b5f611eea603b83611856565b9150611ef582611e90565b604082019050919050565b5f6020820190508181035f830152611f1781611ede565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f78602583611856565b9150611f8382611f1e565b604082019050919050565b5f6020820190508181035f830152611fa581611f6c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612006602383611856565b915061201182611fac565b604082019050919050565b5f6020820190508181035f83015261203381611ffa565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612094602683611856565b915061209f8261203a565b604082019050919050565b5f6020820190508181035f8301526120c181612088565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612122602483611856565b915061212d826120c8565b604082019050919050565b5f6020820190508181035f83015261214f81612116565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121b0602283611856565b91506121bb82612156565b604082019050919050565b5f6020820190508181035f8301526121dd816121a4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612218601d83611856565b9150612223826121e4565b602082019050919050565b5f6020820190508181035f8301526122458161220c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612280602083611856565b915061228b8261224c565b602082019050919050565b5f6020820190508181035f8301526122ad81612274565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f6122e8601483611856565b91506122f3826122b4565b602082019050919050565b5f6020820190508181035f830152612315816122dc565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f612350601083611856565b915061235b8261231c565b602082019050919050565b5f6020820190508181035f83015261237d81612344565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e736665722077685f8201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b5f6123de602a83611856565b91506123e982612384565b604082019050919050565b5f6020820190508181035f83015261240b816123d2565b905091905056fea264697066735822122008f065d2b2036e227dbc3e2b59d5ee295584852d6731ab7f4fb369e6a363d6a364736f6c63430008150033", } // TokenABI is the input ABI used to generate the binding from. @@ -419,6 +419,37 @@ func (_Token *TokenCallerSession) Owner() (common.Address, error) { return _Token.Contract.Owner(&_Token.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Token *TokenCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Token.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Token *TokenSession) Paused() (bool, error) { + return _Token.Contract.Paused(&_Token.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Token *TokenCallerSession) Paused() (bool, error) { + return _Token.Contract.Paused(&_Token.CallOpts) +} + // Symbol is a free data retrieval call binding the contract method 0x95d89b41. // // Solidity: function symbol() view returns(string) @@ -565,6 +596,27 @@ func (_Token *TokenTransactorSession) IncreaseAllowance(spender common.Address, return _Token.Contract.IncreaseAllowance(&_Token.TransactOpts, spender, addedValue) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Token *TokenTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Token.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Token *TokenSession) Pause() (*types.Transaction, error) { + return _Token.Contract.Pause(&_Token.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Token *TokenTransactorSession) Pause() (*types.Transaction, error) { + return _Token.Contract.Pause(&_Token.TransactOpts) +} + // PayEscrow is a paid mutator transaction binding the contract method 0x5407e93c. // // Solidity: function payEscrow(uint256 amount) returns(bool) @@ -754,6 +806,27 @@ func (_Token *TokenTransactorSession) TransferOwnership(newOwner common.Address) return _Token.Contract.TransferOwnership(&_Token.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Token *TokenTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Token.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Token *TokenSession) Unpause() (*types.Transaction, error) { + return _Token.Contract.Unpause(&_Token.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Token *TokenTransactorSession) Unpause() (*types.Transaction, error) { + return _Token.Contract.Unpause(&_Token.TransactOpts) +} + // TokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Token contract. type TokenApprovalIterator struct { Event *TokenApproval // Event containing the contract specifics and raw log @@ -1061,6 +1134,140 @@ func (_Token *TokenFilterer) ParseOwnershipTransferred(log types.Log) (*TokenOwn return event, nil } +// TokenPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Token contract. +type TokenPausedIterator struct { + Event *TokenPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TokenPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TokenPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TokenPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TokenPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TokenPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TokenPaused represents a Paused event raised by the Token contract. +type TokenPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Token *TokenFilterer) FilterPaused(opts *bind.FilterOpts) (*TokenPausedIterator, error) { + + logs, sub, err := _Token.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TokenPausedIterator{contract: _Token.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Token *TokenFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TokenPaused) (event.Subscription, error) { + + logs, sub, err := _Token.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TokenPaused) + if err := _Token.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Token *TokenFilterer) ParsePaused(log types.Log) (*TokenPaused, error) { + event := new(TokenPaused) + if err := _Token.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // TokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Token contract. type TokenTransferIterator struct { Event *TokenTransfer // Event containing the contract specifics and raw log @@ -1214,3 +1421,137 @@ func (_Token *TokenFilterer) ParseTransfer(log types.Log) (*TokenTransfer, error event.Raw = log return event, nil } + +// TokenUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Token contract. +type TokenUnpausedIterator struct { + Event *TokenUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TokenUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TokenUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TokenUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TokenUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TokenUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TokenUnpaused represents a Unpaused event raised by the Token contract. +type TokenUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Token *TokenFilterer) FilterUnpaused(opts *bind.FilterOpts) (*TokenUnpausedIterator, error) { + + logs, sub, err := _Token.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TokenUnpausedIterator{contract: _Token.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Token *TokenFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TokenUnpaused) (event.Subscription, error) { + + logs, sub, err := _Token.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TokenUnpaused) + if err := _Token.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Token *TokenFilterer) ParseUnpaused(log types.Log) (*TokenUnpaused, error) { + event := new(TokenUnpaused) + if err := _Token.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +}