diff --git a/contracts/src/lib/ContractTransparencyConfig.sol b/contracts/src/lib/ContractTransparencyConfig.sol new file mode 100644 index 0000000000..65000ea00e --- /dev/null +++ b/contracts/src/lib/ContractTransparencyConfig.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache 2 +pragma solidity ^0.8.20; + +// implement this interface if you want to configure the visibility rules of your smart contract +// the TEN platform will interpret this information +interface ContractTransparencyConfig { + // configuration per event log type + struct EventLogConfig { + bytes eventSignature; + bool isPublic; // everyone can see and query for this event + bool topic1CanView; // If the event is private, and this is true, it means that the address from topic1 is an EOA that can view this event + bool topic2CanView; // same + bool topic3CanView; // same + bool visibleToSender; // if true, the tx signer will see this event. Default false + } + + struct VisibilityConfig { + bool isTransparent; // If true - the internal state via getStorageAt will be accessible to everyone. All events will be public. Default false + EventLogConfig[] eventLogConfigs; // mapping from event signature to visibility configs per event + } + + // keep the logic independent of the environment + // max gas: 1 Million + function visibilityRules() external pure returns (VisibilityConfig memory); +} diff --git a/go/enclave/evm/ContractTransparency.go b/go/enclave/evm/ContractTransparency.go new file mode 100644 index 0000000000..8d0f4b1526 --- /dev/null +++ b/go/enclave/evm/ContractTransparency.go @@ -0,0 +1,93 @@ +package evm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// file generated by ethereum tooling to help calling the "visibilityRules" function + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ContractTranspMetaData contains all meta data concerning the TransparencyConfig contract. +var ContractTranspMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isTransparent\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"eventSignature\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic1CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic2CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic3CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"visibleToSender\",\"type\":\"bool\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", +} + +// ContractTransparencyConfigEventLogConfig is an auto generated low-level Go binding around an user-defined struct. +type ContractTransparencyConfigEventLogConfig struct { + EventSignature []byte + IsPublic bool + Topic1CanView bool + Topic2CanView bool + Topic3CanView bool + VisibleToSender bool +} + +// ContractTransparencyConfigVisibilityConfig is an auto generated low-level Go binding around an user-defined struct. +type ContractTransparencyConfigVisibilityConfig struct { + IsTransparent bool + EventLogConfigs []ContractTransparencyConfigEventLogConfig +} + +// TransparencyConfig is an auto generated Go binding around an Ethereum contract. +type TransparencyConfig struct { + TransparencyConfigCaller // Read-only binding to the contract +} + +// TransparencyConfigCaller is an auto generated read-only Go binding around an Ethereum contract. +type TransparencyConfigCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// NewTransparencyConfigCaller creates a new read-only instance of TransparencyConfig, bound to a specific deployed contract. +func NewTransparencyConfigCaller(address common.Address, caller bind.ContractCaller) (*TransparencyConfigCaller, error) { + contract, err := bindContractTransp(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TransparencyConfigCaller{contract: contract}, nil +} + +// bindContractTransp binds a generic wrapper to an already deployed contract. +func bindContractTransp(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContractTranspMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. +// +// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +func (_ContractTransp *TransparencyConfigCaller) VisibilityRules(opts *bind.CallOpts) (ContractTransparencyConfigVisibilityConfig, error) { + var out []interface{} + err := _ContractTransp.contract.Call(opts, &out, "visibilityRules") + if err != nil { + return *new(ContractTransparencyConfigVisibilityConfig), err + } + + out0 := *abi.ConvertType(out[0], new(ContractTransparencyConfigVisibilityConfig)).(*ContractTransparencyConfigVisibilityConfig) + + return out0, err +} diff --git a/go/enclave/evm/evm_facade.go b/go/enclave/evm/evm_facade.go index 9ed78bfa3b..b6d6d0515c 100644 --- a/go/enclave/evm/evm_facade.go +++ b/go/enclave/evm/evm_facade.go @@ -7,6 +7,8 @@ import ( "math/big" _ "unsafe" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/holiman/uint256" @@ -153,6 +155,7 @@ func executeTransaction( // calculate a random value per transaction header.MixDigest = crypto.CalculateTxRnd(before.Bytes(), tCount) + var vmenv *vm.EVM applyTx := func( config *params.ChainConfig, bc gethcore.ChainContext, @@ -196,7 +199,7 @@ func executeTransaction( // Create a new context to be used in the EVM environment blockContext := gethcore.NewEVMBlockContext(header, bc, author) - vmenv := vm.NewEVM(blockContext, vm.TxContext{BlobHashes: tx.Tx.BlobHashes(), GasPrice: header.BaseFee}, statedb, config, cfg) + vmenv = vm.NewEVM(blockContext, vm.TxContext{BlobHashes: tx.Tx.BlobHashes(), GasPrice: header.BaseFee}, statedb, config, cfg) var receipt *types.Receipt receipt, err = gethcore.ApplyTransactionWithEVM(msg, config, gp, statedb, header.Number, header.Hash(), tx.Tx, usedGas, vmenv) if err != nil { @@ -241,16 +244,55 @@ func executeTransaction( return &core.TxExecResult{Receipt: receipt, Err: err} } - // todo - placeholder for calling the visibility config function on the newly created contracts - // this is step 1 of the transition to configured visibility rules. The auto-detection of the visibility rules contractsWithVisibility := make(map[gethcommon.Address]*core.ContractVisibilityConfig) for _, contractAddress := range createdContracts { - contractsWithVisibility[*contractAddress] = &core.ContractVisibilityConfig{AutoConfig: true} + contractsWithVisibility[*contractAddress] = readVisibilityConfig(vmenv, contractAddress) } return &core.TxExecResult{Receipt: receipt, CreatedContracts: contractsWithVisibility} } +const ( + maxGasForVisibility = 30_000 // hardcode at 30k gas. +) + +func readVisibilityConfig(vmenv *vm.EVM, contractAddress *gethcommon.Address) *core.ContractVisibilityConfig { + cc, err := NewTransparencyConfigCaller(*contractAddress, &localContractCaller{evm: vmenv, maxGasForVisibility: maxGasForVisibility}) + if err != nil { + // unrecoverable error. should not happen + panic(fmt.Sprintf("could not create transparency config caller. %v", err)) + } + visibilityRules, err := cc.VisibilityRules(nil) + if err != nil { + // there is no visibility defined, so we return auto + return &core.ContractVisibilityConfig{AutoConfig: true} + } + + cfg := &core.ContractVisibilityConfig{ + AutoConfig: false, + Transparent: &visibilityRules.IsTransparent, + EventConfigs: make(map[gethcommon.Hash]*core.EventVisibilityConfig), + } + + for i := range visibilityRules.EventLogConfigs { + logConfig := visibilityRules.EventLogConfigs[i] + + sig := gethcommon.Hash{} + sig.SetBytes(logConfig.EventSignature) + + cfg.EventConfigs[sig] = &core.EventVisibilityConfig{ + AutoConfig: false, + Public: logConfig.IsPublic, + Topic1CanView: &logConfig.Topic1CanView, + Topic2CanView: &logConfig.Topic2CanView, + Topic3CanView: &logConfig.Topic3CanView, + SenderCanView: &logConfig.VisibleToSender, + } + } + + return cfg +} + func logReceipt(r *types.Receipt, logger gethlog.Logger) { if logger.Enabled(context.Background(), gethlog.LevelTrace) { logger.Trace("Receipt", log.TxKey, r.TxHash, "Result", receiptToString(r)) @@ -367,3 +409,19 @@ func newRevertError(result *gethcore.ExecutionResult) error { Code: 3, // todo - magic number, really needs thought around the value and made a constant } } + +// used as a wrapper around the vm.EVM to allow for easier calling of smart contract view functions +type localContractCaller struct { + evm *vm.EVM + maxGasForVisibility uint64 +} + +// CodeAt - not implemented because it's not needed for our use case. It just has to return something non-nil +func (cc *localContractCaller) CodeAt(_ context.Context, _ gethcommon.Address, _ *big.Int) ([]byte, error) { + return []byte{0}, nil +} + +func (cc *localContractCaller) CallContract(_ context.Context, call ethereum.CallMsg, _ *big.Int) ([]byte, error) { + ret, _, err := cc.evm.Call(vm.AccountRef(call.From), *call.To, call.Data, cc.maxGasForVisibility, uint256.NewInt(0)) + return ret, err +} diff --git a/go/enclave/storage/events_storage.go b/go/enclave/storage/events_storage.go index 3eaf701a99..deef851cdb 100644 --- a/go/enclave/storage/events_storage.go +++ b/go/enclave/storage/events_storage.go @@ -210,8 +210,8 @@ func (es *eventsStorage) storeTopics(ctx context.Context, dbTX *sql.Tx, eventTyp } // this function contains visibility logic -func (es *eventsStorage) storeTopic(ctx context.Context, dbTX *sql.Tx, eventType *enclavedb.EventType, i int, topic gethcommon.Hash) (uint64, error) { - relevantAddress, err := es.determineRelevantAddressForTopic(ctx, dbTX, eventType, i, topic) +func (es *eventsStorage) storeTopic(ctx context.Context, dbTX *sql.Tx, eventType *enclavedb.EventType, topicNo int, topic gethcommon.Hash) (uint64, error) { + relevantAddress, err := es.determineRelevantAddressForTopic(ctx, dbTX, eventType, topicNo, topic) if err != nil && !errors.Is(err, errutil.ErrNotFound) { return 0, fmt.Errorf("could not determine visibility rules. cause: %w", err) } @@ -275,8 +275,11 @@ func (es *eventsStorage) determineRelevantAddressForTopic(ctx context.Context, d case eventType.IsTopicRelevant(topicNumber): relevantAddress = common.ExtractPotentialAddress(topic) + // it is possible for contracts to emit events without an actual address. + // for example. ERC20.mint emits a transfer event from a "0" address if relevantAddress == nil { - return nil, fmt.Errorf("invalid configuration. expected address in topic %d : %s", topicNumber, topic.String()) + es.logger.Debug(fmt.Sprintf("invalid configuration. expected address in topic %d : %s", topicNumber, topic.String())) + return nil, errutil.ErrNotFound } case !eventType.IsTopicRelevant(topicNumber): diff --git a/integration/erc20contract/ObsERC20.sol b/integration/erc20contract/ObsERC20.sol index b7c632fb1a..bddcc3d08b 100644 --- a/integration/erc20contract/ObsERC20.sol +++ b/integration/erc20contract/ObsERC20.sol @@ -4,14 +4,38 @@ pragma solidity ^0.8.4; import "libs/openzeppelin/contracts/token/ERC20/ERC20.sol"; //import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +// todo - can't import from the /contracts folder +// implement this interface if you want to configure the visibility rules of your smart contract +// the TEN platform will interpret this information +interface ContractTransparencyConfig { + // configuration per event log type + struct EventLogConfig { + bytes eventSignature; + bool isPublic; // everyone can see and query for this event + bool topic1CanView; // If the event is private, and this is true, it means that the address from topic1 is an EOA that can view this event + bool topic2CanView; // same + bool topic3CanView; // same + bool visibleToSender; // if true, the tx signer will see this event. Default false + } + + struct VisibilityConfig { + bool isTransparent; // If true - the internal state via getStorageAt will be accessible to everyone. All events will be public. Default false + EventLogConfig[] eventLogConfigs; // mapping from event signature to visibility configs per event + } + + // keep the logic independent of the environment + // max gas: 1 Million + function visibilityRules() external pure returns (VisibilityConfig memory); +} + interface Structs { struct CrossChainMessage { address sender; - uint64 sequence; - uint32 nonce; - bytes topic; - bytes payload; - uint8 consistencyLevel; + uint64 sequence; + uint32 nonce; + bytes topic; + bytes payload; + uint8 consistencyLevel; } } @@ -19,23 +43,24 @@ interface IMessageBus { function publishMessage( uint32 nonce, uint32 topic, - bytes calldata payload, + bytes calldata payload, uint8 consistencyLevel ) external payable returns (uint64 sequence); } + // This is an implementation of a canonical ERC20 as used in the Obscuro network // where access to data has to be restricted. -contract ObsERC20 is ERC20 { +contract ObsERC20 is ERC20, ContractTransparencyConfig { address bridge = 0xdeB34A740ECa1eC42C8b8204CBEC0bA34FDD27f3; IMessageBus bus; - enum Topics{ - MINT, - TRANSFER + enum Topics{ + MINT, + TRANSFER } - + struct AssetTransferMessage { address sender; address receiver; @@ -52,6 +77,13 @@ contract ObsERC20 is ERC20 { bus = IMessageBus(busAddress); } + function visibilityRules() public override pure returns (VisibilityConfig memory){ + EventLogConfig[] memory configs = new EventLogConfig[](1); + // erc20 transfer + configs[0] = EventLogConfig(hex"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", false, true, true, false, false); + return VisibilityConfig(false, configs); + } + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { //Only deposit messages. @@ -59,7 +91,7 @@ contract ObsERC20 is ERC20 { return; } - if (to == bridge) { + if (to == bridge) { AssetTransferMessage memory message = AssetTransferMessage(from, to, amount); uint64 sequence = bus.publishMessage(uint32(block.number), uint32(Topics.TRANSFER), abi.encode(message), 0); } diff --git a/integration/erc20contract/abi/ObsERC20.abi b/integration/erc20contract/abi/ObsERC20.abi index 6ba98a1d74..1ae54eaa3a 100644 --- a/integration/erc20contract/abi/ObsERC20.abi +++ b/integration/erc20contract/abi/ObsERC20.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"busAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[{"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":"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"}] \ No newline at end of file +[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"busAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[{"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":"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":[],"name":"visibilityRules","outputs":[{"components":[{"internalType":"bool","name":"isTransparent","type":"bool"},{"components":[{"internalType":"bytes","name":"eventSignature","type":"bytes"},{"internalType":"bool","name":"isPublic","type":"bool"},{"internalType":"bool","name":"topic1CanView","type":"bool"},{"internalType":"bool","name":"topic2CanView","type":"bool"},{"internalType":"bool","name":"topic3CanView","type":"bool"},{"internalType":"bool","name":"visibleToSender","type":"bool"}],"internalType":"struct ContractTransparencyConfig.EventLogConfig[]","name":"eventLogConfigs","type":"tuple[]"}],"internalType":"struct ContractTransparencyConfig.VisibilityConfig","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}] \ No newline at end of file diff --git a/integration/erc20contract/bin/ERC20.bin b/integration/erc20contract/bin/ERC20.bin index e9b20e4db2..4d8a89b9c1 100644 --- a/integration/erc20contract/bin/ERC20.bin +++ b/integration/erc20contract/bin/ERC20.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620017f5380380620017f58339818101604052810190620000379190620001f6565b8160039081620000489190620004c6565b5080600490816200005a9190620004c6565b505050620005ad565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000cc8262000081565b810181811067ffffffffffffffff82111715620000ee57620000ed62000092565b5b80604052505050565b60006200010362000063565b9050620001118282620000c1565b919050565b600067ffffffffffffffff82111562000134576200013362000092565b5b6200013f8262000081565b9050602081019050919050565b60005b838110156200016c5780820151818401526020810190506200014f565b60008484015250505050565b60006200018f620001898462000116565b620000f7565b905082815260208101848484011115620001ae57620001ad6200007c565b5b620001bb8482856200014c565b509392505050565b600082601f830112620001db57620001da62000077565b5b8151620001ed84826020860162000178565b91505092915050565b6000806040838503121562000210576200020f6200006d565b5b600083015167ffffffffffffffff81111562000231576200023062000072565b5b6200023f85828601620001c3565b925050602083015167ffffffffffffffff81111562000263576200026262000072565b5b6200027185828601620001c3565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ce57607f821691505b602082108103620002e457620002e362000286565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030f565b6200035a86836200030f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a7620003a16200039b8462000372565b6200037c565b62000372565b9050919050565b6000819050919050565b620003c38362000386565b620003db620003d282620003ae565b8484546200031c565b825550505050565b600090565b620003f2620003e3565b620003ff818484620003b8565b505050565b5b8181101562000427576200041b600082620003e8565b60018101905062000405565b5050565b601f82111562000476576200044081620002ea565b6200044b84620002ff565b810160208510156200045b578190505b620004736200046a85620002ff565b83018262000404565b50505b505050565b600082821c905092915050565b60006200049b600019846008026200047b565b1980831691505092915050565b6000620004b6838362000488565b9150826002028217905092915050565b620004d1826200027b565b67ffffffffffffffff811115620004ed57620004ec62000092565b5b620004f98254620002b5565b620005068282856200042b565b600060209050601f8311600181146200053e576000841562000529578287015190505b620005358582620004a8565b865550620005a5565b601f1984166200054e86620002ea565b60005b82811015620005785784890151825560018201915060208501945060208101905062000551565b8683101562000598578489015162000594601f89168262000488565b8355505b6001600288020188555050505b505050505050565b61123880620005bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b15565b60405180910390f35b6100e660048036038101906100e19190610bd0565b610308565b6040516100f39190610c2b565b60405180910390f35b61010461032b565b6040516101119190610c55565b60405180910390f35b610134600480360381019061012f9190610c70565b610335565b6040516101419190610c2b565b60405180910390f35b610152610364565b60405161015f9190610cdf565b60405180910390f35b610182600480360381019061017d9190610bd0565b61036d565b60405161018f9190610c2b565b60405180910390f35b6101b260048036038101906101ad9190610cfa565b6103a4565b6040516101bf9190610c55565b60405180910390f35b6101d06103ec565b6040516101dd9190610b15565b60405180910390f35b61020060048036038101906101fb9190610bd0565b61047e565b60405161020d9190610c2b565b60405180910390f35b610230600480360381019061022b9190610bd0565b6104f5565b60405161023d9190610c2b565b60405180910390f35b610260600480360381019061025b9190610d27565b610518565b60405161026d9190610c55565b60405180910390f35b60606003805461028590610d96565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d96565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610df6565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d96565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d96565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e9c565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fc0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c55565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061102c565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611150565b60405180910390fd5b6108e5838383610a7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111e2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109fe9190610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a629190610c55565b60405180910390a3610a75848484610a80565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610abf578082015181840152602081019050610aa4565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ae782610a85565b610af18185610a90565b9350610b01818560208601610aa1565b610b0a81610acb565b840191505092915050565b60006020820190508181036000830152610b2f8184610adc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6782610b3c565b9050919050565b610b7781610b5c565b8114610b8257600080fd5b50565b600081359050610b9481610b6e565b92915050565b6000819050919050565b610bad81610b9a565b8114610bb857600080fd5b50565b600081359050610bca81610ba4565b92915050565b60008060408385031215610be757610be6610b37565b5b6000610bf585828601610b85565b9250506020610c0685828601610bbb565b9150509250929050565b60008115159050919050565b610c2581610c10565b82525050565b6000602082019050610c406000830184610c1c565b92915050565b610c4f81610b9a565b82525050565b6000602082019050610c6a6000830184610c46565b92915050565b600080600060608486031215610c8957610c88610b37565b5b6000610c9786828701610b85565b9350506020610ca886828701610b85565b9250506040610cb986828701610bbb565b9150509250925092565b600060ff82169050919050565b610cd981610cc3565b82525050565b6000602082019050610cf46000830184610cd0565b92915050565b600060208284031215610d1057610d0f610b37565b5b6000610d1e84828501610b85565b91505092915050565b60008060408385031215610d3e57610d3d610b37565b5b6000610d4c85828601610b85565b9250506020610d5d85828601610b85565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dae57607f821691505b602082108103610dc157610dc0610d67565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e0182610b9a565b9150610e0c83610b9a565b9250828201905080821115610e2457610e23610dc7565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e86602583610a90565b9150610e9182610e2a565b604082019050919050565b60006020820190508181036000830152610eb581610e79565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f18602483610a90565b9150610f2382610ebc565b604082019050919050565b60006020820190508181036000830152610f4781610f0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610faa602283610a90565b9150610fb582610f4e565b604082019050919050565b60006020820190508181036000830152610fd981610f9d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611016601d83610a90565b915061102182610fe0565b602082019050919050565b6000602082019050818103600083015261104581611009565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006110a8602583610a90565b91506110b38261104c565b604082019050919050565b600060208201905081810360008301526110d78161109b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061113a602383610a90565b9150611145826110de565b604082019050919050565b600060208201905081810360008301526111698161112d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111cc602683610a90565b91506111d782611170565b604082019050919050565b600060208201905081810360008301526111fb816111bf565b905091905056fea2646970667358221220ae7d364983cbb77e7f263a4269ec33c6f3bca67b248b09de59ed08bfd09efea664736f6c63430008110033 \ No newline at end of file +60806040523480156200001157600080fd5b506040516200182a3803806200182a833981810160405281019062000037919062000200565b8160039081620000489190620004d0565b5080600490816200005a9190620004d0565b505050620005b7565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000cc8262000081565b810181811067ffffffffffffffff82111715620000ee57620000ed62000092565b5b80604052505050565b60006200010362000063565b9050620001118282620000c1565b919050565b600067ffffffffffffffff82111562000134576200013362000092565b5b6200013f8262000081565b9050602081019050919050565b60005b838110156200016c5780820151818401526020810190506200014f565b838111156200017c576000848401525b50505050565b600062000199620001938462000116565b620000f7565b905082815260208101848484011115620001b857620001b76200007c565b5b620001c58482856200014c565b509392505050565b600082601f830112620001e557620001e462000077565b5b8151620001f784826020860162000182565b91505092915050565b600080604083850312156200021a57620002196200006d565b5b600083015167ffffffffffffffff8111156200023b576200023a62000072565b5b6200024985828601620001cd565b925050602083015167ffffffffffffffff8111156200026d576200026c62000072565b5b6200027b85828601620001cd565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002d857607f821691505b602082108103620002ee57620002ed62000290565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000319565b62000364868362000319565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003b1620003ab620003a5846200037c565b62000386565b6200037c565b9050919050565b6000819050919050565b620003cd8362000390565b620003e5620003dc82620003b8565b84845462000326565b825550505050565b600090565b620003fc620003ed565b62000409818484620003c2565b505050565b5b81811015620004315762000425600082620003f2565b6001810190506200040f565b5050565b601f82111562000480576200044a81620002f4565b620004558462000309565b8101602085101562000465578190505b6200047d620004748562000309565b8301826200040e565b50505b505050565b600082821c905092915050565b6000620004a56000198460080262000485565b1980831691505092915050565b6000620004c0838362000492565b9150826002028217905092915050565b620004db8262000285565b67ffffffffffffffff811115620004f757620004f662000092565b5b620005038254620002bf565b6200051082828562000435565b600060209050601f83116001811462000548576000841562000533578287015190505b6200053f8582620004b2565b865550620005af565b601f1984166200055886620002f4565b60005b8281101562000582578489015182556001820191506020850194506020810190506200055b565b86831015620005a257848901516200059e601f89168262000492565b8355505b6001600288020188555050505b505050505050565b61126380620005c76000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b1e565b60405180910390f35b6100e660048036038101906100e19190610bd9565b610308565b6040516100f39190610c34565b60405180910390f35b61010461032b565b6040516101119190610c5e565b60405180910390f35b610134600480360381019061012f9190610c79565b610335565b6040516101419190610c34565b60405180910390f35b610152610364565b60405161015f9190610ce8565b60405180910390f35b610182600480360381019061017d9190610bd9565b61036d565b60405161018f9190610c34565b60405180910390f35b6101b260048036038101906101ad9190610d03565b6103a4565b6040516101bf9190610c5e565b60405180910390f35b6101d06103ec565b6040516101dd9190610b1e565b60405180910390f35b61020060048036038101906101fb9190610bd9565b61047e565b60405161020d9190610c34565b60405180910390f35b610230600480360381019061022b9190610bd9565b6104f5565b60405161023d9190610c34565b60405180910390f35b610260600480360381019061025b9190610d30565b610518565b60405161026d9190610c5e565b60405180910390f35b60606003805461028590610d9f565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d9f565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610dff565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d9f565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d9f565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610ec7565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610feb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c5e565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611057565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d19061117b565b60405180910390fd5b6108e5838383610a7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109629061120d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109fe9190610dff565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a629190610c5e565b60405180910390a3610a75848484610a80565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610abf578082015181840152602081019050610aa4565b83811115610ace576000848401525b50505050565b6000601f19601f8301169050919050565b6000610af082610a85565b610afa8185610a90565b9350610b0a818560208601610aa1565b610b1381610ad4565b840191505092915050565b60006020820190508181036000830152610b388184610ae5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b7082610b45565b9050919050565b610b8081610b65565b8114610b8b57600080fd5b50565b600081359050610b9d81610b77565b92915050565b6000819050919050565b610bb681610ba3565b8114610bc157600080fd5b50565b600081359050610bd381610bad565b92915050565b60008060408385031215610bf057610bef610b40565b5b6000610bfe85828601610b8e565b9250506020610c0f85828601610bc4565b9150509250929050565b60008115159050919050565b610c2e81610c19565b82525050565b6000602082019050610c496000830184610c25565b92915050565b610c5881610ba3565b82525050565b6000602082019050610c736000830184610c4f565b92915050565b600080600060608486031215610c9257610c91610b40565b5b6000610ca086828701610b8e565b9350506020610cb186828701610b8e565b9250506040610cc286828701610bc4565b9150509250925092565b600060ff82169050919050565b610ce281610ccc565b82525050565b6000602082019050610cfd6000830184610cd9565b92915050565b600060208284031215610d1957610d18610b40565b5b6000610d2784828501610b8e565b91505092915050565b60008060408385031215610d4757610d46610b40565b5b6000610d5585828601610b8e565b9250506020610d6685828601610b8e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610db757607f821691505b602082108103610dca57610dc9610d70565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e0a82610ba3565b9150610e1583610ba3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610e4a57610e49610dd0565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610eb1602583610a90565b9150610ebc82610e55565b604082019050919050565b60006020820190508181036000830152610ee081610ea4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f43602483610a90565b9150610f4e82610ee7565b604082019050919050565b60006020820190508181036000830152610f7281610f36565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fd5602283610a90565b9150610fe082610f79565b604082019050919050565b6000602082019050818103600083015261100481610fc8565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611041601d83610a90565b915061104c8261100b565b602082019050919050565b6000602082019050818103600083015261107081611034565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006110d3602583610a90565b91506110de82611077565b604082019050919050565b60006020820190508181036000830152611102816110c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611165602383610a90565b915061117082611109565b604082019050919050565b6000602082019050818103600083015261119481611158565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111f7602683610a90565b91506112028261119b565b604082019050919050565b60006020820190508181036000830152611226816111ea565b905091905056fea26469706673582212202c763205bdff320fd3da8a974102dea93f7f89ee25d1e5e215030c5bdf160e4864736f6c634300080f0033 \ No newline at end of file diff --git a/integration/erc20contract/bin/ObsERC20.bin b/integration/erc20contract/bin/ObsERC20.bin index f526a62174..d7cd16b3b7 100644 --- a/integration/erc20contract/bin/ObsERC20.bin +++ b/integration/erc20contract/bin/ObsERC20.bin @@ -1 +1 @@ -608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620027213803806200272183398181016040528101906200008c9190620006a7565b838381600390816200009f919062000998565b508060049081620000b1919062000998565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000de9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000ae0565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b31565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b31565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000b7d565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000b9a565b5b85604051602001620003ec919062000c33565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d1e565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000db7565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b60008484015250505050565b6000620005a06200059a8462000527565b62000508565b905082815260208101848484011115620005bf57620005be6200048d565b5b620005cc8482856200055d565b509392505050565b600082601f830112620005ec57620005eb62000488565b5b8151620005fe84826020860162000589565b91505092915050565b6000819050919050565b6200061c8162000607565b81146200062857600080fd5b50565b6000815190506200063c8162000611565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200066f8262000642565b9050919050565b620006818162000662565b81146200068d57600080fd5b50565b600081519050620006a18162000676565b92915050565b60008060008060808587031215620006c457620006c36200047e565b5b600085015167ffffffffffffffff811115620006e557620006e462000483565b5b620006f387828801620005d4565b945050602085015167ffffffffffffffff81111562000717576200071662000483565b5b6200072587828801620005d4565b935050604062000738878288016200062b565b92505060606200074b8782880162000690565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007aa57607f821691505b602082108103620007c057620007bf62000762565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200082a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007eb565b620008368683620007eb565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000879620008736200086d8462000607565b6200084e565b62000607565b9050919050565b6000819050919050565b620008958362000858565b620008ad620008a48262000880565b848454620007f8565b825550505050565b600090565b620008c4620008b5565b620008d18184846200088a565b505050565b5b81811015620008f957620008ed600082620008ba565b600181019050620008d7565b5050565b601f82111562000948576200091281620007c6565b6200091d84620007db565b810160208510156200092d578190505b620009456200093c85620007db565b830182620008d6565b50505b505050565b600082821c905092915050565b60006200096d600019846008026200094d565b1980831691505092915050565b60006200098883836200095a565b9150826002028217905092915050565b620009a38262000757565b67ffffffffffffffff811115620009bf57620009be620004a3565b5b620009cb825462000791565b620009d8828285620008fd565b600060209050601f83116001811462000a105760008415620009fb578287015190505b62000a0785826200097a565b86555062000a77565b601f19841662000a2086620007c6565b60005b8281101562000a4a5784890151825560018201915060208501945060208101905062000a23565b8683101562000a6a578489015162000a66601f8916826200095a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac8601f8362000a7f565b915062000ad58262000a90565b602082019050919050565b6000602082019050818103600083015262000afb8162000ab9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b3e8262000607565b915062000b4b8362000607565b925082820190508082111562000b665762000b6562000b02565b5b92915050565b62000b778162000607565b82525050565b600060208201905062000b94600083018462000b6c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000bd48162000662565b82525050565b62000be58162000607565b82525050565b60608201600082015162000c03600085018262000bc9565b50602082015162000c18602085018262000bc9565b50604082015162000c2d604085018262000bda565b50505050565b600060608201905062000c4a600083018462000beb565b92915050565b600063ffffffff82169050919050565b62000c6b8162000c50565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000c9a8262000c71565b62000ca6818562000c7c565b935062000cb88185602086016200055d565b62000cc38162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d0662000d0062000cfa8462000cce565b6200084e565b62000cd8565b9050919050565b62000d188162000ce5565b82525050565b600060808201905062000d35600083018762000c60565b62000d44602083018662000c60565b818103604083015262000d58818562000c8d565b905062000d69606083018462000d0d565b95945050505050565b600067ffffffffffffffff82169050919050565b62000d918162000d72565b811462000d9d57600080fd5b50565b60008151905062000db18162000d86565b92915050565b60006020828403121562000dd05762000dcf6200047e565b5b600062000de08482850162000da0565b91505092915050565b6119288062000df96000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610eeb565b60405180910390f35b6100e660048036038101906100e19190610fa6565b610308565b6040516100f39190611001565b60405180910390f35b61010461032b565b604051610111919061102b565b60405180910390f35b610134600480360381019061012f9190611046565b610335565b6040516101419190611001565b60405180910390f35b610152610364565b60405161015f91906110b5565b60405180910390f35b610182600480360381019061017d9190610fa6565b61036d565b60405161018f9190611001565b60405180910390f35b6101b260048036038101906101ad91906110d0565b6103a4565b6040516101bf919061102b565b60405180910390f35b6101d061046c565b6040516101dd9190610eeb565b60405180910390f35b61020060048036038101906101fb9190610fa6565b6104fe565b60405161020d9190611001565b60405180910390f35b610230600480360381019061022b9190610fa6565b610575565b60405161023d9190611001565b60405180910390f35b610260600480360381019061025b91906110fd565b610598565b60405161026d919061102b565b60405180910390f35b6060600380546102859061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546102b19061116c565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b6000806103136106d1565b90506103208185856106d9565b600191505092915050565b6000600254905090565b6000806103406106d1565b905061034d8582856108a2565b61035885858561092e565b60019150509392505050565b60006012905090565b6000806103786106d1565b905061039981858561038a8589610598565b61039491906111cc565b6106d9565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036103e9576103e282610bad565b9050610467565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361042c5761042582610bad565b9050610467565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045e9061124c565b60405180910390fd5b919050565b60606004805461047b9061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546104a79061116c565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b6000806105096106d1565b905060006105178286610598565b90508381101561055c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610553906112de565b60405180910390fd5b61056982868684036106d9565b60019250505092915050565b6000806105806106d1565b905061058d81858561092e565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614806105ff57508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b156106155761060e8383610bf5565b90506106cb565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061067a57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610690576106898383610bf5565b90506106cb565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290611370565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90611402565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae90611494565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610895919061102b565b60405180910390a3505050565b60006108ae8484610598565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610928578181101561091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190611500565b60405180910390fd5b61092784848484036106d9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490611592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0390611624565b60405180910390fd5b610a17838383610c7c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a94906116b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b3091906111cc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b94919061102b565b60405180910390a3610ba7848484610e56565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610e5157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e5057600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610dc757610dc66116d6565b5b85604051602001610dd89190611765565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610e089493929190611839565b6020604051808303816000875af1158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b91906118c5565b905050505b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e95578082015181840152602081019050610e7a565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ebd82610e5b565b610ec78185610e66565b9350610ed7818560208601610e77565b610ee081610ea1565b840191505092915050565b60006020820190508181036000830152610f058184610eb2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f3d82610f12565b9050919050565b610f4d81610f32565b8114610f5857600080fd5b50565b600081359050610f6a81610f44565b92915050565b6000819050919050565b610f8381610f70565b8114610f8e57600080fd5b50565b600081359050610fa081610f7a565b92915050565b60008060408385031215610fbd57610fbc610f0d565b5b6000610fcb85828601610f5b565b9250506020610fdc85828601610f91565b9150509250929050565b60008115159050919050565b610ffb81610fe6565b82525050565b60006020820190506110166000830184610ff2565b92915050565b61102581610f70565b82525050565b6000602082019050611040600083018461101c565b92915050565b60008060006060848603121561105f5761105e610f0d565b5b600061106d86828701610f5b565b935050602061107e86828701610f5b565b925050604061108f86828701610f91565b9150509250925092565b600060ff82169050919050565b6110af81611099565b82525050565b60006020820190506110ca60008301846110a6565b92915050565b6000602082840312156110e6576110e5610f0d565b5b60006110f484828501610f5b565b91505092915050565b6000806040838503121561111457611113610f0d565b5b600061112285828601610f5b565b925050602061113385828601610f5b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061118457607f821691505b6020821081036111975761119661113d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610f70565b91506111e283610f70565b92508282019050808211156111fa576111f961119d565b5b92915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611236601f83610e66565b915061124182611200565b602082019050919050565b6000602082019050818103600083015261126581611229565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006112c8602583610e66565b91506112d38261126c565b604082019050919050565b600060208201905081810360008301526112f7816112bb565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061135a602183610e66565b9150611365826112fe565b604082019050919050565b600060208201905081810360008301526113898161134d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113ec602483610e66565b91506113f782611390565b604082019050919050565b6000602082019050818103600083015261141b816113df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061147e602283610e66565b915061148982611422565b604082019050919050565b600060208201905081810360008301526114ad81611471565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114ea601d83610e66565b91506114f5826114b4565b602082019050919050565b60006020820190508181036000830152611519816114dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061157c602583610e66565b915061158782611520565b604082019050919050565b600060208201905081810360008301526115ab8161156f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061160e602383610e66565b9150611619826115b2565b604082019050919050565b6000602082019050818103600083015261163d81611601565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006116a0602683610e66565b91506116ab82611644565b604082019050919050565b600060208201905081810360008301526116cf81611693565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61170e81610f32565b82525050565b61171d81610f70565b82525050565b6060820160008201516117396000850182611705565b50602082015161174c6020850182611705565b50604082015161175f6040850182611714565b50505050565b600060608201905061177a6000830184611723565b92915050565b600063ffffffff82169050919050565b61179981611780565b82525050565b600081519050919050565b600082825260208201905092915050565b60006117c68261179f565b6117d081856117aa565b93506117e0818560208601610e77565b6117e981610ea1565b840191505092915050565b6000819050919050565b6000819050919050565b600061182361181e611819846117f4565b6117fe565b611099565b9050919050565b61183381611808565b82525050565b600060808201905061184e6000830187611790565b61185b6020830186611790565b818103604083015261186d81856117bb565b905061187c606083018461182a565b95945050505050565b600067ffffffffffffffff82169050919050565b6118a281611885565b81146118ad57600080fd5b50565b6000815190506118bf81611899565b92915050565b6000602082840312156118db576118da610f0d565b5b60006118e9848285016118b0565b9150509291505056fea264697066735822122070ad4a48d579576c33a29850a9848b40de3c6338ef1a92a842bff6fbaacae06764736f6c63430008110033 \ No newline at end of file +608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002b6d38038062002b6d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611d488062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611088565b60405180910390f35b6100f160048036038101906100ec9190611143565b610331565b6040516100fe919061119e565b60405180910390f35b61010f610354565b60405161011c91906111c8565b60405180910390f35b61013f600480360381019061013a91906111e3565b61035e565b60405161014c919061119e565b60405180910390f35b61015d61038d565b60405161016a9190611422565b60405180910390f35b61017b61049c565b6040516101889190611460565b60405180910390f35b6101ab60048036038101906101a69190611143565b6104a5565b6040516101b8919061119e565b60405180910390f35b6101db60048036038101906101d6919061147b565b6104dc565b6040516101e891906111c8565b60405180910390f35b6101f96105a4565b6040516102069190611088565b60405180910390f35b61022960048036038101906102249190611143565b610636565b604051610236919061119e565b60405180910390f35b61025960048036038101906102549190611143565b6106ad565b604051610266919061119e565b60405180910390f35b610289600480360381019061028491906114a8565b6106d0565b60405161029691906111c8565b60405180910390f35b6060600380546102ae90611517565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90611517565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610809565b9050610349818585610811565b600191505092915050565b6000600254905090565b600080610369610809565b90506103768582856109da565b610381858585610a66565b60019150509392505050565b610395610f93565b6000600167ffffffffffffffff8111156103b2576103b1611548565b5b6040519080825280602002602001820160405280156103eb57816020015b6103d8610faf565b8152602001906001900390816103d05790505b5090506040518060c001604052806040518060400160405280602081526020017fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8152508152602001600015158152602001600115158152602001600115158152602001600015158152602001600015158152508160008151811061047357610472611577565b5b602002602001018190525060405180604001604052806000151581526020018281525091505090565b60006012905090565b6000806104b0610809565b90506104d18185856104c285896106d0565b6104cc91906115d5565b610811565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036105215761051a82610ce5565b905061059f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105645761055d82610ce5565b905061059f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611677565b60405180910390fd5b919050565b6060600480546105b390611517565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611517565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b5050505050905090565b600080610641610809565b9050600061064f82866106d0565b905083811015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b90611709565b60405180910390fd5b6106a18286868403610811565b60019250505092915050565b6000806106b8610809565b90506106c5818585610a66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061073757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561074d576107468383610d2d565b9050610803565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156107c8576107c18383610d2d565b9050610803565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061179b565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061182d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e6906118bf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109cd91906111c8565b60405180910390a3505050565b60006109e684846106d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a605781811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061192b565b60405180910390fd5b610a5f8484848403610811565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611a4f565b60405180910390fd5b610b4f838383610db4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611ae1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6891906115d5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccc91906111c8565b60405180910390a3610cdf848484610f8e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610f8957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610eff57610efe611b01565b5b85604051602001610f109190611b90565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610f409493929190611c59565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190611ce5565b905050505b5b505050565b505050565b6040518060400160405280600015158152602001606081525090565b6040518060c00160405280606081526020016000151581526020016000151581526020016000151581526020016000151581526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b6000819050919050565b6111208161110d565b811461112b57600080fd5b50565b60008135905061113d81611117565b92915050565b6000806040838503121561115a576111596110aa565b5b6000611168858286016110f8565b92505060206111798582860161112e565b9150509250929050565b60008115159050919050565b61119881611183565b82525050565b60006020820190506111b3600083018461118f565b92915050565b6111c28161110d565b82525050565b60006020820190506111dd60008301846111b9565b92915050565b6000806000606084860312156111fc576111fb6110aa565b5b600061120a868287016110f8565b935050602061121b868287016110f8565b925050604061122c8682870161112e565b9150509250925092565b61123f81611183565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b600061129882611271565b6112a2818561127c565b93506112b281856020860161100b565b6112bb8161103e565b840191505092915050565b600060c08301600083015184820360008601526112e3828261128d565b91505060208301516112f86020860182611236565b50604083015161130b6040860182611236565b50606083015161131e6060860182611236565b5060808301516113316080860182611236565b5060a083015161134460a0860182611236565b508091505092915050565b600061135b83836112c6565b905092915050565b6000602082019050919050565b600061137b82611245565b6113858185611250565b93508360208202850161139785611261565b8060005b858110156113d357848403895281516113b4858261134f565b94506113bf83611363565b925060208a0199505060018101905061139b565b50829750879550505050505092915050565b60006040830160008301516113fd6000860182611236565b50602083015184820360208601526114158282611370565b9150508091505092915050565b6000602082019050818103600083015261143c81846113e5565b905092915050565b600060ff82169050919050565b61145a81611444565b82525050565b60006020820190506114756000830184611451565b92915050565b600060208284031215611491576114906110aa565b5b600061149f848285016110f8565b91505092915050565b600080604083850312156114bf576114be6110aa565b5b60006114cd858286016110f8565b92505060206114de858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061152f57607f821691505b602082108103611542576115416114e8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115e08261110d565b91506115eb8361110d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116205761161f6115a6565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611661601f83610ffa565b915061166c8261162b565b602082019050919050565b6000602082019050818103600083015261169081611654565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116f3602583610ffa565b91506116fe82611697565b604082019050919050565b60006020820190508181036000830152611722816116e6565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000611785602183610ffa565b915061179082611729565b604082019050919050565b600060208201905081810360008301526117b481611778565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611817602483610ffa565b9150611822826117bb565b604082019050919050565b600060208201905081810360008301526118468161180a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118a9602283610ffa565b91506118b48261184d565b604082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611915601d83610ffa565b9150611920826118df565b602082019050919050565b6000602082019050818103600083015261194481611908565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119a7602583610ffa565b91506119b28261194b565b604082019050919050565b600060208201905081810360008301526119d68161199a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a39602383610ffa565b9150611a44826119dd565b604082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611acb602683610ffa565b9150611ad682611a6f565b604082019050919050565b60006020820190508181036000830152611afa81611abe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b39816110cf565b82525050565b611b488161110d565b82525050565b606082016000820151611b646000850182611b30565b506020820151611b776020850182611b30565b506040820151611b8a6040850182611b3f565b50505050565b6000606082019050611ba56000830184611b4e565b92915050565b600063ffffffff82169050919050565b611bc481611bab565b82525050565b600082825260208201905092915050565b6000611be682611271565b611bf08185611bca565b9350611c0081856020860161100b565b611c098161103e565b840191505092915050565b6000819050919050565b6000819050919050565b6000611c43611c3e611c3984611c14565b611c1e565b611444565b9050919050565b611c5381611c28565b82525050565b6000608082019050611c6e6000830187611bbb565b611c7b6020830186611bbb565b8181036040830152611c8d8185611bdb565b9050611c9c6060830184611c4a565b95945050505050565b600067ffffffffffffffff82169050919050565b611cc281611ca5565b8114611ccd57600080fd5b50565b600081519050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa6110aa565b5b6000611d0984828501611cd0565b9150509291505056fea26469706673582212203981d1ae057eaa4af2285ae435eff9df86a18e86fb08cdf7753394717c9a5d6964736f6c634300080f0033 \ No newline at end of file diff --git a/integration/erc20contract/generated/ObsERC20/ObsERC20.go b/integration/erc20contract/generated/ObsERC20/ObsERC20.go index f97eab4678..116ae25e86 100644 --- a/integration/erc20contract/generated/ObsERC20/ObsERC20.go +++ b/integration/erc20contract/generated/ObsERC20/ObsERC20.go @@ -26,12 +26,29 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) +// ContractTransparencyConfigEventLogConfig is an auto generated low-level Go binding around an user-defined struct. +type ContractTransparencyConfigEventLogConfig struct { + EventSignature []byte + IsPublic bool + Topic1CanView bool + Topic2CanView bool + Topic3CanView bool + VisibleToSender bool +} + +// ContractTransparencyConfigVisibilityConfig is an auto generated low-level Go binding around an user-defined struct. +type ContractTransparencyConfigVisibilityConfig struct { + IsTransparent bool + EventLogConfigs []ContractTransparencyConfigEventLogConfig +} + // ObsERC20MetaData contains all meta data concerning the ObsERC20 contract. var ObsERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"busAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"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\":[{\"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\":\"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\"}]", - Bin: "0x608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620027213803806200272183398181016040528101906200008c9190620006a7565b838381600390816200009f919062000998565b508060049081620000b1919062000998565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000de9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000ae0565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b31565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b31565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000b7d565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000b9a565b5b85604051602001620003ec919062000c33565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d1e565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000db7565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b60008484015250505050565b6000620005a06200059a8462000527565b62000508565b905082815260208101848484011115620005bf57620005be6200048d565b5b620005cc8482856200055d565b509392505050565b600082601f830112620005ec57620005eb62000488565b5b8151620005fe84826020860162000589565b91505092915050565b6000819050919050565b6200061c8162000607565b81146200062857600080fd5b50565b6000815190506200063c8162000611565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200066f8262000642565b9050919050565b620006818162000662565b81146200068d57600080fd5b50565b600081519050620006a18162000676565b92915050565b60008060008060808587031215620006c457620006c36200047e565b5b600085015167ffffffffffffffff811115620006e557620006e462000483565b5b620006f387828801620005d4565b945050602085015167ffffffffffffffff81111562000717576200071662000483565b5b6200072587828801620005d4565b935050604062000738878288016200062b565b92505060606200074b8782880162000690565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007aa57607f821691505b602082108103620007c057620007bf62000762565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200082a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007eb565b620008368683620007eb565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000879620008736200086d8462000607565b6200084e565b62000607565b9050919050565b6000819050919050565b620008958362000858565b620008ad620008a48262000880565b848454620007f8565b825550505050565b600090565b620008c4620008b5565b620008d18184846200088a565b505050565b5b81811015620008f957620008ed600082620008ba565b600181019050620008d7565b5050565b601f82111562000948576200091281620007c6565b6200091d84620007db565b810160208510156200092d578190505b620009456200093c85620007db565b830182620008d6565b50505b505050565b600082821c905092915050565b60006200096d600019846008026200094d565b1980831691505092915050565b60006200098883836200095a565b9150826002028217905092915050565b620009a38262000757565b67ffffffffffffffff811115620009bf57620009be620004a3565b5b620009cb825462000791565b620009d8828285620008fd565b600060209050601f83116001811462000a105760008415620009fb578287015190505b62000a0785826200097a565b86555062000a77565b601f19841662000a2086620007c6565b60005b8281101562000a4a5784890151825560018201915060208501945060208101905062000a23565b8683101562000a6a578489015162000a66601f8916826200095a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac8601f8362000a7f565b915062000ad58262000a90565b602082019050919050565b6000602082019050818103600083015262000afb8162000ab9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b3e8262000607565b915062000b4b8362000607565b925082820190508082111562000b665762000b6562000b02565b5b92915050565b62000b778162000607565b82525050565b600060208201905062000b94600083018462000b6c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000bd48162000662565b82525050565b62000be58162000607565b82525050565b60608201600082015162000c03600085018262000bc9565b50602082015162000c18602085018262000bc9565b50604082015162000c2d604085018262000bda565b50505050565b600060608201905062000c4a600083018462000beb565b92915050565b600063ffffffff82169050919050565b62000c6b8162000c50565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000c9a8262000c71565b62000ca6818562000c7c565b935062000cb88185602086016200055d565b62000cc38162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d0662000d0062000cfa8462000cce565b6200084e565b62000cd8565b9050919050565b62000d188162000ce5565b82525050565b600060808201905062000d35600083018762000c60565b62000d44602083018662000c60565b818103604083015262000d58818562000c8d565b905062000d69606083018462000d0d565b95945050505050565b600067ffffffffffffffff82169050919050565b62000d918162000d72565b811462000d9d57600080fd5b50565b60008151905062000db18162000d86565b92915050565b60006020828403121562000dd05762000dcf6200047e565b5b600062000de08482850162000da0565b91505092915050565b6119288062000df96000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610eeb565b60405180910390f35b6100e660048036038101906100e19190610fa6565b610308565b6040516100f39190611001565b60405180910390f35b61010461032b565b604051610111919061102b565b60405180910390f35b610134600480360381019061012f9190611046565b610335565b6040516101419190611001565b60405180910390f35b610152610364565b60405161015f91906110b5565b60405180910390f35b610182600480360381019061017d9190610fa6565b61036d565b60405161018f9190611001565b60405180910390f35b6101b260048036038101906101ad91906110d0565b6103a4565b6040516101bf919061102b565b60405180910390f35b6101d061046c565b6040516101dd9190610eeb565b60405180910390f35b61020060048036038101906101fb9190610fa6565b6104fe565b60405161020d9190611001565b60405180910390f35b610230600480360381019061022b9190610fa6565b610575565b60405161023d9190611001565b60405180910390f35b610260600480360381019061025b91906110fd565b610598565b60405161026d919061102b565b60405180910390f35b6060600380546102859061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546102b19061116c565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b6000806103136106d1565b90506103208185856106d9565b600191505092915050565b6000600254905090565b6000806103406106d1565b905061034d8582856108a2565b61035885858561092e565b60019150509392505050565b60006012905090565b6000806103786106d1565b905061039981858561038a8589610598565b61039491906111cc565b6106d9565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036103e9576103e282610bad565b9050610467565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361042c5761042582610bad565b9050610467565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045e9061124c565b60405180910390fd5b919050565b60606004805461047b9061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546104a79061116c565b80156104f45780601f106104c9576101008083540402835291602001916104f4565b820191906000526020600020905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b6000806105096106d1565b905060006105178286610598565b90508381101561055c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610553906112de565b60405180910390fd5b61056982868684036106d9565b60019250505092915050565b6000806105806106d1565b905061058d81858561092e565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614806105ff57508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b156106155761060e8383610bf5565b90506106cb565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061067a57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610690576106898383610bf5565b90506106cb565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290611370565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90611402565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae90611494565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610895919061102b565b60405180910390a3505050565b60006108ae8484610598565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610928578181101561091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190611500565b60405180910390fd5b61092784848484036106d9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490611592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0390611624565b60405180910390fd5b610a17838383610c7c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a94906116b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b3091906111cc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b94919061102b565b60405180910390a3610ba7848484610e56565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610e5157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e5057600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610dc757610dc66116d6565b5b85604051602001610dd89190611765565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610e089493929190611839565b6020604051808303816000875af1158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b91906118c5565b905050505b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e95578082015181840152602081019050610e7a565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ebd82610e5b565b610ec78185610e66565b9350610ed7818560208601610e77565b610ee081610ea1565b840191505092915050565b60006020820190508181036000830152610f058184610eb2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f3d82610f12565b9050919050565b610f4d81610f32565b8114610f5857600080fd5b50565b600081359050610f6a81610f44565b92915050565b6000819050919050565b610f8381610f70565b8114610f8e57600080fd5b50565b600081359050610fa081610f7a565b92915050565b60008060408385031215610fbd57610fbc610f0d565b5b6000610fcb85828601610f5b565b9250506020610fdc85828601610f91565b9150509250929050565b60008115159050919050565b610ffb81610fe6565b82525050565b60006020820190506110166000830184610ff2565b92915050565b61102581610f70565b82525050565b6000602082019050611040600083018461101c565b92915050565b60008060006060848603121561105f5761105e610f0d565b5b600061106d86828701610f5b565b935050602061107e86828701610f5b565b925050604061108f86828701610f91565b9150509250925092565b600060ff82169050919050565b6110af81611099565b82525050565b60006020820190506110ca60008301846110a6565b92915050565b6000602082840312156110e6576110e5610f0d565b5b60006110f484828501610f5b565b91505092915050565b6000806040838503121561111457611113610f0d565b5b600061112285828601610f5b565b925050602061113385828601610f5b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061118457607f821691505b6020821081036111975761119661113d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610f70565b91506111e283610f70565b92508282019050808211156111fa576111f961119d565b5b92915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611236601f83610e66565b915061124182611200565b602082019050919050565b6000602082019050818103600083015261126581611229565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006112c8602583610e66565b91506112d38261126c565b604082019050919050565b600060208201905081810360008301526112f7816112bb565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061135a602183610e66565b9150611365826112fe565b604082019050919050565b600060208201905081810360008301526113898161134d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113ec602483610e66565b91506113f782611390565b604082019050919050565b6000602082019050818103600083015261141b816113df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061147e602283610e66565b915061148982611422565b604082019050919050565b600060208201905081810360008301526114ad81611471565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114ea601d83610e66565b91506114f5826114b4565b602082019050919050565b60006020820190508181036000830152611519816114dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061157c602583610e66565b915061158782611520565b604082019050919050565b600060208201905081810360008301526115ab8161156f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061160e602383610e66565b9150611619826115b2565b604082019050919050565b6000602082019050818103600083015261163d81611601565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006116a0602683610e66565b91506116ab82611644565b604082019050919050565b600060208201905081810360008301526116cf81611693565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61170e81610f32565b82525050565b61171d81610f70565b82525050565b6060820160008201516117396000850182611705565b50602082015161174c6020850182611705565b50604082015161175f6040850182611714565b50505050565b600060608201905061177a6000830184611723565b92915050565b600063ffffffff82169050919050565b61179981611780565b82525050565b600081519050919050565b600082825260208201905092915050565b60006117c68261179f565b6117d081856117aa565b93506117e0818560208601610e77565b6117e981610ea1565b840191505092915050565b6000819050919050565b6000819050919050565b600061182361181e611819846117f4565b6117fe565b611099565b9050919050565b61183381611808565b82525050565b600060808201905061184e6000830187611790565b61185b6020830186611790565b818103604083015261186d81856117bb565b905061187c606083018461182a565b95945050505050565b600067ffffffffffffffff82169050919050565b6118a281611885565b81146118ad57600080fd5b50565b6000815190506118bf81611899565b92915050565b6000602082840312156118db576118da610f0d565b5b60006118e9848285016118b0565b9150509291505056fea264697066735822122070ad4a48d579576c33a29850a9848b40de3c6338ef1a92a842bff6fbaacae06764736f6c63430008110033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"busAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"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\":[{\"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\":\"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\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isTransparent\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"eventSignature\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic1CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic2CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic3CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"visibleToSender\",\"type\":\"bool\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002b6d38038062002b6d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611d488062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611088565b60405180910390f35b6100f160048036038101906100ec9190611143565b610331565b6040516100fe919061119e565b60405180910390f35b61010f610354565b60405161011c91906111c8565b60405180910390f35b61013f600480360381019061013a91906111e3565b61035e565b60405161014c919061119e565b60405180910390f35b61015d61038d565b60405161016a9190611422565b60405180910390f35b61017b61049c565b6040516101889190611460565b60405180910390f35b6101ab60048036038101906101a69190611143565b6104a5565b6040516101b8919061119e565b60405180910390f35b6101db60048036038101906101d6919061147b565b6104dc565b6040516101e891906111c8565b60405180910390f35b6101f96105a4565b6040516102069190611088565b60405180910390f35b61022960048036038101906102249190611143565b610636565b604051610236919061119e565b60405180910390f35b61025960048036038101906102549190611143565b6106ad565b604051610266919061119e565b60405180910390f35b610289600480360381019061028491906114a8565b6106d0565b60405161029691906111c8565b60405180910390f35b6060600380546102ae90611517565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90611517565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610809565b9050610349818585610811565b600191505092915050565b6000600254905090565b600080610369610809565b90506103768582856109da565b610381858585610a66565b60019150509392505050565b610395610f93565b6000600167ffffffffffffffff8111156103b2576103b1611548565b5b6040519080825280602002602001820160405280156103eb57816020015b6103d8610faf565b8152602001906001900390816103d05790505b5090506040518060c001604052806040518060400160405280602081526020017fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8152508152602001600015158152602001600115158152602001600115158152602001600015158152602001600015158152508160008151811061047357610472611577565b5b602002602001018190525060405180604001604052806000151581526020018281525091505090565b60006012905090565b6000806104b0610809565b90506104d18185856104c285896106d0565b6104cc91906115d5565b610811565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036105215761051a82610ce5565b905061059f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105645761055d82610ce5565b905061059f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611677565b60405180910390fd5b919050565b6060600480546105b390611517565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611517565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b5050505050905090565b600080610641610809565b9050600061064f82866106d0565b905083811015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b90611709565b60405180910390fd5b6106a18286868403610811565b60019250505092915050565b6000806106b8610809565b90506106c5818585610a66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061073757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561074d576107468383610d2d565b9050610803565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156107c8576107c18383610d2d565b9050610803565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061179b565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061182d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e6906118bf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109cd91906111c8565b60405180910390a3505050565b60006109e684846106d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a605781811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061192b565b60405180910390fd5b610a5f8484848403610811565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611a4f565b60405180910390fd5b610b4f838383610db4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611ae1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6891906115d5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccc91906111c8565b60405180910390a3610cdf848484610f8e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610f8957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610eff57610efe611b01565b5b85604051602001610f109190611b90565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610f409493929190611c59565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190611ce5565b905050505b5b505050565b505050565b6040518060400160405280600015158152602001606081525090565b6040518060c00160405280606081526020016000151581526020016000151581526020016000151581526020016000151581526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b6000819050919050565b6111208161110d565b811461112b57600080fd5b50565b60008135905061113d81611117565b92915050565b6000806040838503121561115a576111596110aa565b5b6000611168858286016110f8565b92505060206111798582860161112e565b9150509250929050565b60008115159050919050565b61119881611183565b82525050565b60006020820190506111b3600083018461118f565b92915050565b6111c28161110d565b82525050565b60006020820190506111dd60008301846111b9565b92915050565b6000806000606084860312156111fc576111fb6110aa565b5b600061120a868287016110f8565b935050602061121b868287016110f8565b925050604061122c8682870161112e565b9150509250925092565b61123f81611183565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b600061129882611271565b6112a2818561127c565b93506112b281856020860161100b565b6112bb8161103e565b840191505092915050565b600060c08301600083015184820360008601526112e3828261128d565b91505060208301516112f86020860182611236565b50604083015161130b6040860182611236565b50606083015161131e6060860182611236565b5060808301516113316080860182611236565b5060a083015161134460a0860182611236565b508091505092915050565b600061135b83836112c6565b905092915050565b6000602082019050919050565b600061137b82611245565b6113858185611250565b93508360208202850161139785611261565b8060005b858110156113d357848403895281516113b4858261134f565b94506113bf83611363565b925060208a0199505060018101905061139b565b50829750879550505050505092915050565b60006040830160008301516113fd6000860182611236565b50602083015184820360208601526114158282611370565b9150508091505092915050565b6000602082019050818103600083015261143c81846113e5565b905092915050565b600060ff82169050919050565b61145a81611444565b82525050565b60006020820190506114756000830184611451565b92915050565b600060208284031215611491576114906110aa565b5b600061149f848285016110f8565b91505092915050565b600080604083850312156114bf576114be6110aa565b5b60006114cd858286016110f8565b92505060206114de858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061152f57607f821691505b602082108103611542576115416114e8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115e08261110d565b91506115eb8361110d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116205761161f6115a6565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611661601f83610ffa565b915061166c8261162b565b602082019050919050565b6000602082019050818103600083015261169081611654565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116f3602583610ffa565b91506116fe82611697565b604082019050919050565b60006020820190508181036000830152611722816116e6565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000611785602183610ffa565b915061179082611729565b604082019050919050565b600060208201905081810360008301526117b481611778565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611817602483610ffa565b9150611822826117bb565b604082019050919050565b600060208201905081810360008301526118468161180a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118a9602283610ffa565b91506118b48261184d565b604082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611915601d83610ffa565b9150611920826118df565b602082019050919050565b6000602082019050818103600083015261194481611908565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119a7602583610ffa565b91506119b28261194b565b604082019050919050565b600060208201905081810360008301526119d68161199a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a39602383610ffa565b9150611a44826119dd565b604082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611acb602683610ffa565b9150611ad682611a6f565b604082019050919050565b60006020820190508181036000830152611afa81611abe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b39816110cf565b82525050565b611b488161110d565b82525050565b606082016000820151611b646000850182611b30565b506020820151611b776020850182611b30565b506040820151611b8a6040850182611b3f565b50505050565b6000606082019050611ba56000830184611b4e565b92915050565b600063ffffffff82169050919050565b611bc481611bab565b82525050565b600082825260208201905092915050565b6000611be682611271565b611bf08185611bca565b9350611c0081856020860161100b565b611c098161103e565b840191505092915050565b6000819050919050565b6000819050919050565b6000611c43611c3e611c3984611c14565b611c1e565b611444565b9050919050565b611c5381611c28565b82525050565b6000608082019050611c6e6000830187611bbb565b611c7b6020830186611bbb565b8181036040830152611c8d8185611bdb565b9050611c9c6060830184611c4a565b95945050505050565b600067ffffffffffffffff82169050919050565b611cc281611ca5565b8114611ccd57600080fd5b50565b600081519050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa6110aa565b5b6000611d0984828501611cd0565b9150509291505056fea26469706673582212203981d1ae057eaa4af2285ae435eff9df86a18e86fb08cdf7753394717c9a5d6964736f6c634300080f0033", } // ObsERC20ABI is the input ABI used to generate the binding from. @@ -156,11 +173,11 @@ func NewObsERC20Filterer(address common.Address, filterer bind.ContractFilterer) // bindObsERC20 binds a generic wrapper to an already deployed contract. func bindObsERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(ObsERC20ABI)) + parsed, err := ObsERC20MetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and @@ -387,6 +404,37 @@ func (_ObsERC20 *ObsERC20CallerSession) TotalSupply() (*big.Int, error) { return _ObsERC20.Contract.TotalSupply(&_ObsERC20.CallOpts) } +// VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. +// +// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +func (_ObsERC20 *ObsERC20Caller) VisibilityRules(opts *bind.CallOpts) (ContractTransparencyConfigVisibilityConfig, error) { + var out []interface{} + err := _ObsERC20.contract.Call(opts, &out, "visibilityRules") + + if err != nil { + return *new(ContractTransparencyConfigVisibilityConfig), err + } + + out0 := *abi.ConvertType(out[0], new(ContractTransparencyConfigVisibilityConfig)).(*ContractTransparencyConfigVisibilityConfig) + + return out0, err + +} + +// VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. +// +// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +func (_ObsERC20 *ObsERC20Session) VisibilityRules() (ContractTransparencyConfigVisibilityConfig, error) { + return _ObsERC20.Contract.VisibilityRules(&_ObsERC20.CallOpts) +} + +// VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. +// +// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +func (_ObsERC20 *ObsERC20CallerSession) VisibilityRules() (ContractTransparencyConfigVisibilityConfig, error) { + return _ObsERC20.Contract.VisibilityRules(&_ObsERC20.CallOpts) +} + // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 amount) returns(bool)