From 8902cab76488ec8c58a048a3ca8a78c84422b878 Mon Sep 17 00:00:00 2001 From: Giovanni Sanchez <108043524+sisyphusSmiling@users.noreply.github.com> Date: Tue, 3 Sep 2024 16:52:29 -0600 Subject: [PATCH] add the ability to update symbols in bridged ERC20/721 contracts --- cadence/args/deploy-erc20-deployer-args.json | 2 +- cadence/args/deploy-erc721-deployer-args.json | 2 +- cadence/tests/test_helpers.cdc | 4 +-- .../src/templates/FlowEVMBridgedERC20.sol | 29 +++++++++++++++---- .../src/templates/FlowEVMBridgedERC721.sol | 21 ++++++++++++-- solidity/test/FlowBridgeFactory.t.sol | 22 ++++++++++++++ 6 files changed, 68 insertions(+), 12 deletions(-) diff --git a/cadence/args/deploy-erc20-deployer-args.json b/cadence/args/deploy-erc20-deployer-args.json index 8e9b2e53..8dd4033e 100644 --- a/cadence/args/deploy-erc20-deployer-args.json +++ b/cadence/args/deploy-erc20-deployer-args.json @@ -1,7 +1,7 @@ [ { "type": "String", - "value": "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6121ca806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000484565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000562565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002c9565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000644565b620002e1565b620001066200014236600462000644565b620003b3565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03163314620002255760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a204f6e6c60448201527f792064656c656761746564206465706c6f7965722063616e206465706c6f790060648201526084015b60405180910390fd5b600080546001600160a01b03168787878787604051620002459062000476565b6200025696959493929190620006b7565b604051809103906000f08015801562000273573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b7949392919062000740565b60405180910390a29695505050505050565b620002d3620003f7565b620002df600062000426565b565b620002eb620003f7565b6001600160a01b038116620003695760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a20496e7660448201527f616c69642064656c656761746564206465706c6f79657220616464726573730060648201526084016200021c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003bd620003f7565b6001600160a01b038116620003e957604051631e4fbdf760e01b8152600060048201526024016200021c565b620003f48162000426565b50565b6000546001600160a01b03163314620002df5760405163118cdaa760e01b81523360048201526024016200021c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119f480620007a183390190565b6000602082840312156200049757600080fd5b81356001600160e01b031981168114620004b057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004df57600080fd5b813567ffffffffffffffff80821115620004fd57620004fd620004b7565b604051601f8301601f19908116603f01168101908282118183101715620005285762000528620004b7565b816040528381528660208588010111156200054257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057b57600080fd5b853567ffffffffffffffff808211156200059457600080fd5b620005a289838a01620004cd565b96506020880135915080821115620005b957600080fd5b620005c789838a01620004cd565b95506040880135915080821115620005de57600080fd5b620005ec89838a01620004cd565b945060608801359150808211156200060357600080fd5b6200061189838a01620004cd565b935060808801359150808211156200062857600080fd5b506200063788828901620004cd565b9150509295509295909350565b6000602082840312156200065757600080fd5b81356001600160a01b0381168114620004b057600080fd5b6000815180845260005b81811015620006975760208185018101518683018201520162000679565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006dd908301886200066f565b8281036040840152620006f181886200066f565b905082810360608401526200070781876200066f565b905082810360808401526200071d81866200066f565b905082810360a08401526200073381856200066f565b9998505050505050505050565b6080815260006200075560808301876200066f565b82810360208401526200076981876200066f565b905082810360408401526200077f81866200066f565b905082810360608401526200079581856200066f565b97965050505050505056fe6101606040523480156200001257600080fd5b50604051620019f4380380620019f483398101604081905262000035916200035c565b858580604051806040016040528060018152602001603160f81b81525088888160039081620000659190620004e0565b506004620000748282620004e0565b506200008691508390506005620001a4565b6101205262000097816006620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200015f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200016a81620001dd565b506009620001798482620004e0565b50600a620001888382620004e0565b50600b620001978282620004e0565b5050505050505062000606565b6000602083511015620001c457620001bc836200022f565b9050620001d7565b81620001d18482620004e0565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f815111156200025d578260405163305a27a960e01b8152600401620001569190620005ac565b80516200026a82620005e1565b179392505050565b80516001600160a01b03811681146200028a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002c2578181015183820152602001620002a8565b50506000910152565b600082601f830112620002dd57600080fd5b81516001600160401b0380821115620002fa57620002fa6200028f565b604051601f8301601f19908116603f011681019082821181831017156200032557620003256200028f565b816040528381528660208588010111156200033f57600080fd5b62000352846020830160208901620002a5565b9695505050505050565b60008060008060008060c087890312156200037657600080fd5b620003818762000272565b60208801519096506001600160401b03808211156200039f57600080fd5b620003ad8a838b01620002cb565b96506040890151915080821115620003c457600080fd5b620003d28a838b01620002cb565b95506060890151915080821115620003e957600080fd5b620003f78a838b01620002cb565b945060808901519150808211156200040e57600080fd5b6200041c8a838b01620002cb565b935060a08901519150808211156200043357600080fd5b506200044289828a01620002cb565b9150509295509295509295565b600181811c908216806200046457607f821691505b6020821081036200048557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004db576000816000526020600020601f850160051c81016020861015620004b65750805b601f850160051c820191505b81811015620004d757828155600101620004c2565b5050505b505050565b81516001600160401b03811115620004fc57620004fc6200028f565b62000514816200050d84546200044f565b846200048b565b602080601f8311600181146200054c5760008415620005335750858301515b600019600386901b1c1916600185901b178555620004d7565b600085815260208120601f198616915b828110156200057d578886015182559484019460019091019084016200055c565b50858210156200059c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005cd816040850160208701620002a5565b601f01601f19169190910160400192915050565b80516020808301519190811015620004855760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611393620006616000396000610b5301526000610b26015260006109e3015260006109bb01526000610916015260006109400152600061096a01526113936000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806378c13082116100de57806397d9a15911610097578063d505accf11610071578063d505accf14610317578063dd62ed3e1461032a578063e8a3d48514610363578063f2fde38b1461036b57600080fd5b806397d9a159146102f4578063a76b4d56146102fc578063a9059cbb1461030457600080fd5b806378c130821461028857806379cc6790146102905780637ecebe00146102a357806384b0196e146102b65780638da5cb5b146102d157806395d89b41146102ec57600080fd5b8063313ce5671161014b57806340c10f191161012557806340c10f191461022f57806342966c681461024457806370a0823114610257578063715018a61461028057600080fd5b8063313ce567146102105780633644e5151461021f57806338e5d7b31461022757600080fd5b806301ffc9a71461019357806306fdde03146101bb578063095ea7b3146101d057806318160ddd146101e35780631a622896146101f557806323b872dd146101fd575b600080fd5b6101a66101a136600461106d565b61037e565b60405190151581526020015b60405180910390f35b6101c3610421565b6040516101b291906110e4565b6101a66101de366004611113565b6104b3565b6002545b6040519081526020016101b2565b6101c36104cb565b6101a661020b36600461113d565b6104da565b604051601281526020016101b2565b6101e76104fe565b6101c361050d565b61024261023d366004611113565b61059b565b005b610242610252366004611179565b6105b1565b6101e7610265366004611192565b6001600160a01b031660009081526020819052604090205490565b6102426105be565b6101c36105d2565b61024261029e366004611113565b6105df565b6101e76102b1366004611192565b6105f4565b6102be610612565b6040516101b297969594939291906111ad565b6008546040516001600160a01b0390911681526020016101b2565b6101c3610658565b6101c3610667565b6101c3610676565b6101a6610312366004611113565b610683565b610242610325366004611246565b610691565b6101e76103383660046112b9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c36107d0565b610242610379366004611192565b6107df565b60006001600160e01b031982166336372b0760e01b14806103af57506001600160e01b0319821663076b417f60e31b145b806103ca57506001600160e01b03198216630704183b60e11b145b806103e557506001600160e01b03198216634ec7fbed60e11b145b8061040057506001600160e01b03198216638dbb89cf60e01b145b8061041b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610430906112ec565b80601f016020809104026020016040519081016040528092919081815260200182805461045c906112ec565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000336104c181858561081a565b5060019392505050565b606060098054610430906112ec565b6000336104e885828561082c565b6104f38585856108aa565b506001949350505050565b6000610508610909565b905090565b6009805461051a906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610546906112ec565b80156105935780601f1061056857610100808354040283529160200191610593565b820191906000526020600020905b81548152906001019060200180831161057657829003601f168201915b505050505081565b6105a3610a34565b6105ad8282610a61565b5050565b6105bb3382610a97565b50565b6105c6610a34565b6105d06000610acd565b565b600a805461051a906112ec565b6105ea82338361082c565b6105ad8282610a97565b6001600160a01b03811660009081526007602052604081205461041b565b600060608060008060006060610626610b1f565b61062e610b4c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610430906112ec565b6060600a8054610430906112ec565b600b805461051a906112ec565b6000336104c18185856108aa565b834211156106ba5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107078c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061076282610b79565b9050600061077282878787610ba6565b9050896001600160a01b0316816001600160a01b0316146107b9576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016106b1565b6107c48a8a8a61081a565b50505050505050505050565b6060600b8054610430906112ec565b6107e7610a34565b6001600160a01b03811661081157604051631e4fbdf760e01b8152600060048201526024016106b1565b6105bb81610acd565b6108278383836001610bd4565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108a4578181101561089557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106b1565b6108a484848484036000610bd4565b50505050565b6001600160a01b0383166108d457604051634b637e8f60e11b8152600060048201526024016106b1565b6001600160a01b0382166108fe5760405163ec442f0560e01b8152600060048201526024016106b1565b610827838383610ca9565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561096257507f000000000000000000000000000000000000000000000000000000000000000046145b1561098c57507f000000000000000000000000000000000000000000000000000000000000000090565b610508604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b031633146105d05760405163118cdaa760e01b81523360048201526024016106b1565b6001600160a01b038216610a8b5760405163ec442f0560e01b8152600060048201526024016106b1565b6105ad60008383610ca9565b6001600160a01b038216610ac157604051634b637e8f60e11b8152600060048201526024016106b1565b6105ad82600083610ca9565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606105087f00000000000000000000000000000000000000000000000000000000000000006005610dd3565b60606105087f00000000000000000000000000000000000000000000000000000000000000006006610dd3565b600061041b610b86610909565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610bb888888888610e7e565b925092509250610bc88282610f4d565b50909695505050505050565b6001600160a01b038416610bfe5760405163e602df0560e01b8152600060048201526024016106b1565b6001600160a01b038316610c2857604051634a1406b160e11b8152600060048201526024016106b1565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108a457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c9b91815260200190565b60405180910390a350505050565b6001600160a01b038316610cd4578060026000828254610cc99190611326565b90915550610d469050565b6001600160a01b03831660009081526020819052604090205481811015610d275760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106b1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610d6257600280548290039055610d81565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc691815260200190565b60405180910390a3505050565b606060ff8314610ded57610de683611006565b905061041b565b818054610df9906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610e25906112ec565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b5050505050905061041b565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610eb95750600091506003905082610f43565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f0d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f3957506000925060019150829050610f43565b9250600091508190505b9450945094915050565b6000826003811115610f6157610f61611347565b03610f6a575050565b6001826003811115610f7e57610f7e611347565b03610f9c5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610fb057610fb0611347565b03610fd15760405163fce698f760e01b8152600481018290526024016106b1565b6003826003811115610fe557610fe5611347565b036105ad576040516335e2f38360e21b8152600481018290526024016106b1565b6060600061101383611045565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561041b57604051632cd44ac360e21b815260040160405180910390fd5b60006020828403121561107f57600080fd5b81356001600160e01b03198116811461109757600080fd5b9392505050565b6000815180845260005b818110156110c4576020818501810151868301820152016110a8565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611097602083018461109e565b80356001600160a01b038116811461110e57600080fd5b919050565b6000806040838503121561112657600080fd5b61112f836110f7565b946020939093013593505050565b60008060006060848603121561115257600080fd5b61115b846110f7565b9250611169602085016110f7565b9150604084013590509250925092565b60006020828403121561118b57600080fd5b5035919050565b6000602082840312156111a457600080fd5b611097826110f7565b60ff60f81b881681526000602060e060208401526111ce60e084018a61109e565b83810360408501526111e0818a61109e565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561123457835183529284019291840191600101611218565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561126157600080fd5b61126a886110f7565b9650611278602089016110f7565b95506040880135945060608801359350608088013560ff8116811461129c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156112cc57600080fd5b6112d5836110f7565b91506112e3602084016110f7565b90509250929050565b600181811c9082168061130057607f821691505b60208210810361132057634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561041b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220032864074dcac90a9b8186e95e61370c7efb95dabea071111e72945dbebddcb164736f6c63430008180033a264697066735822122072cf6431e9a4283c07420d582dd959cbc6c894033fb1900c417e95b9d0b17e2964736f6c63430008180033" + "value": "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61243d806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000484565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000562565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002c9565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000644565b620002e1565b620001066200014236600462000644565b620003b3565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03163314620002255760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a204f6e6c60448201527f792064656c656761746564206465706c6f7965722063616e206465706c6f790060648201526084015b60405180910390fd5b600080546001600160a01b03168787878787604051620002459062000476565b6200025696959493929190620006b7565b604051809103906000f08015801562000273573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b7949392919062000740565b60405180910390a29695505050505050565b620002d3620003f7565b620002df600062000426565b565b620002eb620003f7565b6001600160a01b038116620003695760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a20496e7660448201527f616c69642064656c656761746564206465706c6f79657220616464726573730060648201526084016200021c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003bd620003f7565b6001600160a01b038116620003e957604051631e4fbdf760e01b8152600060048201526024016200021c565b620003f48162000426565b50565b6000546001600160a01b03163314620002df5760405163118cdaa760e01b81523360048201526024016200021c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c6780620007a183390190565b6000602082840312156200049757600080fd5b81356001600160e01b031981168114620004b057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004df57600080fd5b813567ffffffffffffffff80821115620004fd57620004fd620004b7565b604051601f8301601f19908116603f01168101908282118183101715620005285762000528620004b7565b816040528381528660208588010111156200054257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057b57600080fd5b853567ffffffffffffffff808211156200059457600080fd5b620005a289838a01620004cd565b96506020880135915080821115620005b957600080fd5b620005c789838a01620004cd565b95506040880135915080821115620005de57600080fd5b620005ec89838a01620004cd565b945060608801359150808211156200060357600080fd5b6200061189838a01620004cd565b935060808801359150808211156200062857600080fd5b506200063788828901620004cd565b9150509295509295909350565b6000602082840312156200065757600080fd5b81356001600160a01b0381168114620004b057600080fd5b6000815180845260005b81811015620006975760208185018101518683018201520162000679565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006dd908301886200066f565b8281036040840152620006f181886200066f565b905082810360608401526200070781876200066f565b905082810360808401526200071d81866200066f565b905082810360a08401526200073381856200066f565b9998505050505050505050565b6080815260006200075560808301876200066f565b82810360208401526200076981876200066f565b905082810360408401526200077f81866200066f565b905082810360608401526200079581856200066f565b97965050505050505056fe6101606040523480156200001257600080fd5b5060405162001c6738038062001c6783398101604081905262000035916200036b565b858580604051806040016040528060018152602001603160f81b81525088888160039081620000659190620004ef565b506004620000748282620004ef565b506200008691508390506005620001b3565b6101205262000097816006620001b3565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200015f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200016a81620001ec565b50600c620001798582620004ef565b506009620001888482620004ef565b50600a620001978382620004ef565b50600b620001a68282620004ef565b5050505050505062000615565b6000602083511015620001d357620001cb836200023e565b9050620001e6565b81620001e08482620004ef565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f815111156200026c578260405163305a27a960e01b8152600401620001569190620005bb565b80516200027982620005f0565b179392505050565b80516001600160a01b03811681146200029957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002d1578181015183820152602001620002b7565b50506000910152565b600082601f830112620002ec57600080fd5b81516001600160401b03808211156200030957620003096200029e565b604051601f8301601f19908116603f011681019082821181831017156200033457620003346200029e565b816040528381528660208588010111156200034e57600080fd5b62000361846020830160208901620002b4565b9695505050505050565b60008060008060008060c087890312156200038557600080fd5b620003908762000281565b60208801519096506001600160401b0380821115620003ae57600080fd5b620003bc8a838b01620002da565b96506040890151915080821115620003d357600080fd5b620003e18a838b01620002da565b95506060890151915080821115620003f857600080fd5b620004068a838b01620002da565b945060808901519150808211156200041d57600080fd5b6200042b8a838b01620002da565b935060a08901519150808211156200044257600080fd5b506200045189828a01620002da565b9150509295509295509295565b600181811c908216806200047357607f821691505b6020821081036200049457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ea576000816000526020600020601f850160051c81016020861015620004c55750805b601f850160051c820191505b81811015620004e657828155600101620004d1565b5050505b505050565b81516001600160401b038111156200050b576200050b6200029e565b62000523816200051c84546200045e565b846200049a565b602080601f8311600181146200055b5760008415620005425750858301515b600019600386901b1c1916600185901b178555620004e6565b600085815260208120601f198616915b828110156200058c578886015182559484019460019091019084016200056b565b5085821015620005ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005dc816040850160208701620002b4565b601f01601f19169190910160400192915050565b80516020808301519190811015620004945760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516115f7620006706000396000610bd401526000610ba701526000610a6401526000610a3c01526000610997015260006109c1015260006109eb01526115f76000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063a76b4d5611610097578063d505accf11610071578063d505accf14610373578063dd62ed3e14610386578063e8a3d485146103bf578063f2fde38b146103c757600080fd5b8063a76b4d5614610345578063a9059cbb1461034d578063b84c82461461036057600080fd5b80638da5cb5b116100d35780638da5cb5b14610307578063938e3d7b1461032257806395d89b411461033557806397d9a1591461033d57600080fd5b806379cc6790146102c65780637ecebe00146102d957806384b0196e146102ec57600080fd5b80633644e5151161016657806342966c681161014057806342966c681461027a57806370a082311461028d578063715018a6146102b657806378c13082146102be57600080fd5b80633644e5151461025557806338e5d7b31461025d57806340c10f191461026557600080fd5b806318160ddd116101a257806318160ddd146102195780631a6228961461022b57806323b872dd14610233578063313ce5671461024657600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046110fa565b6103da565b60405190151581526020015b60405180910390f35b6101f961047d565b6040516101e89190611171565b6101dc6102143660046111a0565b61050f565b6002545b6040519081526020016101e8565b6101f9610527565b6101dc6102413660046111ca565b610536565b604051601281526020016101e8565b61021d61055a565b6101f9610569565b6102786102733660046111a0565b6105f7565b005b610278610288366004611206565b61060d565b61021d61029b36600461121f565b6001600160a01b031660009081526020819052604090205490565b61027861061a565b6101f961062e565b6102786102d43660046111a0565b61063b565b61021d6102e736600461121f565b610650565b6102f461066e565b6040516101e8979695949392919061123a565b6008546040516001600160a01b0390911681526020016101e8565b6102786103303660046112e9565b6106b4565b6101f96106c8565b6101f96106d7565b6101f96106e6565b6101dc61035b3660046111a0565b6106f3565b61027861036e3660046112e9565b610701565b61027861038136600461139a565b610712565b61021d61039436600461140d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f9610851565b6102786103d536600461121f565b610860565b60006001600160e01b031982166336372b0760e01b148061040b57506001600160e01b0319821663076b417f60e31b145b8061042657506001600160e01b03198216630704183b60e11b145b8061044157506001600160e01b03198216634ec7fbed60e11b145b8061045c57506001600160e01b03198216638dbb89cf60e01b145b8061047757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461048c90611440565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611440565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905090565b60003361051d81858561089b565b5060019392505050565b60606009805461048c90611440565b6000336105448582856108ad565b61054f85858561092b565b506001949350505050565b600061056461098a565b905090565b6009805461057690611440565b80601f01602080910402602001604051908101604052809291908181526020018280546105a290611440565b80156105ef5780601f106105c4576101008083540402835291602001916105ef565b820191906000526020600020905b8154815290600101906020018083116105d257829003601f168201915b505050505081565b6105ff610ab5565b6106098282610ae2565b5050565b6106173382610b18565b50565b610622610ab5565b61062c6000610b4e565b565b600a805461057690611440565b6106468233836108ad565b6106098282610b18565b6001600160a01b038116600090815260076020526040812054610477565b600060608060008060006060610682610ba0565b61068a610bcd565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6106bc610ab5565b600b61060982826114ca565b6060600c805461048c90611440565b6060600a805461048c90611440565b600b805461057690611440565b60003361051d81858561092b565b610709610ab5565b61061781610bfa565b8342111561073b5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107888c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107e382610c06565b905060006107f382878787610c33565b9050896001600160a01b0316816001600160a01b03161461083a576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610732565b6108458a8a8a61089b565b50505050505050505050565b6060600b805461048c90611440565b610868610ab5565b6001600160a01b03811661089257604051631e4fbdf760e01b815260006004820152602401610732565b61061781610b4e565b6108a88383836001610c61565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610925578181101561091657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610732565b61092584848484036000610c61565b50505050565b6001600160a01b03831661095557604051634b637e8f60e11b815260006004820152602401610732565b6001600160a01b03821661097f5760405163ec442f0560e01b815260006004820152602401610732565b6108a8838383610d36565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156109e357507f000000000000000000000000000000000000000000000000000000000000000046145b15610a0d57507f000000000000000000000000000000000000000000000000000000000000000090565b610564604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b0316331461062c5760405163118cdaa760e01b8152336004820152602401610732565b6001600160a01b038216610b0c5760405163ec442f0560e01b815260006004820152602401610732565b61060960008383610d36565b6001600160a01b038216610b4257604051634b637e8f60e11b815260006004820152602401610732565b61060982600083610d36565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606105647f00000000000000000000000000000000000000000000000000000000000000006005610e60565b60606105647f00000000000000000000000000000000000000000000000000000000000000006006610e60565b600c61060982826114ca565b6000610477610c1361098a565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610c4588888888610f0b565b925092509250610c558282610fda565b50909695505050505050565b6001600160a01b038416610c8b5760405163e602df0560e01b815260006004820152602401610732565b6001600160a01b038316610cb557604051634a1406b160e11b815260006004820152602401610732565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561092557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2891815260200190565b60405180910390a350505050565b6001600160a01b038316610d61578060026000828254610d56919061158a565b90915550610dd39050565b6001600160a01b03831660009081526020819052604090205481811015610db45760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610732565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610def57600280548290039055610e0e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e5391815260200190565b60405180910390a3505050565b606060ff8314610e7a57610e7383611093565b9050610477565b818054610e8690611440565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb290611440565b8015610eff5780601f10610ed457610100808354040283529160200191610eff565b820191906000526020600020905b815481529060010190602001808311610ee257829003601f168201915b50505050509050610477565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f465750600091506003905082610fd0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f9a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610fc657506000925060019150829050610fd0565b9250600091508190505b9450945094915050565b6000826003811115610fee57610fee6115ab565b03610ff7575050565b600182600381111561100b5761100b6115ab565b036110295760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561103d5761103d6115ab565b0361105e5760405163fce698f760e01b815260048101829052602401610732565b6003826003811115611072576110726115ab565b03610609576040516335e2f38360e21b815260048101829052602401610732565b606060006110a0836110d2565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561047757604051632cd44ac360e21b815260040160405180910390fd5b60006020828403121561110c57600080fd5b81356001600160e01b03198116811461112457600080fd5b9392505050565b6000815180845260005b8181101561115157602081850181015186830182015201611135565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611124602083018461112b565b80356001600160a01b038116811461119b57600080fd5b919050565b600080604083850312156111b357600080fd5b6111bc83611184565b946020939093013593505050565b6000806000606084860312156111df57600080fd5b6111e884611184565b92506111f660208501611184565b9150604084013590509250925092565b60006020828403121561121857600080fd5b5035919050565b60006020828403121561123157600080fd5b61112482611184565b60ff60f81b881681526000602060e0602084015261125b60e084018a61112b565b838103604085015261126d818a61112b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156112c1578351835292840192918401916001016112a5565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156112fb57600080fd5b813567ffffffffffffffff8082111561131357600080fd5b818401915084601f83011261132757600080fd5b813581811115611339576113396112d3565b604051601f8201601f19908116603f01168101908382118183101715611361576113616112d3565b8160405282815287602084870101111561137a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080600080600080600060e0888a0312156113b557600080fd5b6113be88611184565b96506113cc60208901611184565b95506040880135945060608801359350608088013560ff811681146113f057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561142057600080fd5b61142983611184565b915061143760208401611184565b90509250929050565b600181811c9082168061145457607f821691505b60208210810361147457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108a8576000816000526020600020601f850160051c810160208610156114a35750805b601f850160051c820191505b818110156114c2578281556001016114af565b505050505050565b815167ffffffffffffffff8111156114e4576114e46112d3565b6114f8816114f28454611440565b8461147a565b602080601f83116001811461152d57600084156115155750858301515b600019600386901b1c1916600185901b1785556114c2565b600085815260208120601f198616915b8281101561155c5788860151825594840194600190910190840161153d565b508582101561157a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561047757634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea26469706673582212205925aa41f57e7f807e4f6f28f1a52085c0904a35c9a80771699e875e7c19ab3e64736f6c63430008180033a26469706673582212205b6b53df7c7e4ceae2b9ddb5724cebe40152e6f02e787328f765a5d78baec47764736f6c63430008180033" }, { "type": "UInt64", diff --git a/cadence/args/deploy-erc721-deployer-args.json b/cadence/args/deploy-erc721-deployer-args.json index 1906dfff..b3d8d35f 100644 --- a/cadence/args/deploy-erc721-deployer-args.json +++ b/cadence/args/deploy-erc721-deployer-args.json @@ -1,7 +1,7 @@ [ { "type": "String", - "value": "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612732806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000488565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000566565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002cb565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000648565b620002e3565b620001066200014236600462000648565b620003b7565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b0316331462000227576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a204f6e60448201527f6c792064656c656761746564206465706c6f7965722063616e206465706c6f7960648201526084015b60405180910390fd5b600080546001600160a01b0316878787878760405162000247906200047a565b6200025896959493929190620006bb565b604051809103906000f08015801562000275573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b9949392919062000744565b60405180910390a29695505050505050565b620002d5620003fb565b620002e160006200042a565b565b620002ed620003fb565b6001600160a01b0381166200036d576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a20496e60448201527f76616c69642064656c656761746564206465706c6f796572206164647265737360648201526084016200021e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003c1620003fb565b6001600160a01b038116620003ed57604051631e4fbdf760e01b8152600060048201526024016200021e565b620003f8816200042a565b50565b6000546001600160a01b03163314620002e15760405163118cdaa760e01b81523360048201526024016200021e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611f5880620007a583390190565b6000602082840312156200049b57600080fd5b81356001600160e01b031981168114620004b457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004e357600080fd5b813567ffffffffffffffff80821115620005015762000501620004bb565b604051601f8301601f19908116603f011681019082821181831017156200052c576200052c620004bb565b816040528381528660208588010111156200054657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057f57600080fd5b853567ffffffffffffffff808211156200059857600080fd5b620005a689838a01620004d1565b96506020880135915080821115620005bd57600080fd5b620005cb89838a01620004d1565b95506040880135915080821115620005e257600080fd5b620005f089838a01620004d1565b945060608801359150808211156200060757600080fd5b6200061589838a01620004d1565b935060808801359150808211156200062c57600080fd5b506200063b88828901620004d1565b9150509295509295909350565b6000602082840312156200065b57600080fd5b81356001600160a01b0381168114620004b457600080fd5b6000815180845260005b818110156200069b576020818501810151868301820152016200067d565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006e19083018862000673565b8281036040840152620006f5818862000673565b905082810360608401526200070b818762000673565b9050828103608084015262000721818662000673565b905082810360a084015262000737818562000673565b9998505050505050505050565b60808152600062000759608083018762000673565b82810360208401526200076d818762000673565b9050828103604084015262000783818662000673565b9050828103606084015262000799818562000673565b97965050505050505056fe60806040523480156200001157600080fd5b5060405162001f5838038062001f58833981016040819052620000349162000202565b858585600062000045838262000386565b50600162000054828262000386565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009181620000cb565b50600c620000a0848262000386565b50600d620000af838262000386565b50600e620000be828262000386565b5050505050505062000452565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200013557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016257600080fd5b81516001600160401b03808211156200017f576200017f6200013a565b604051601f8301601f19908116603f01168101908282118183101715620001aa57620001aa6200013a565b8160405283815260209250866020858801011115620001c857600080fd5b600091505b83821015620001ec5785820183015181830184015290820190620001cd565b6000602085830101528094505050505092915050565b60008060008060008060c087890312156200021c57600080fd5b62000227876200011d565b60208801519096506001600160401b03808211156200024557600080fd5b620002538a838b0162000150565b965060408901519150808211156200026a57600080fd5b620002788a838b0162000150565b955060608901519150808211156200028f57600080fd5b6200029d8a838b0162000150565b94506080890151915080821115620002b457600080fd5b620002c28a838b0162000150565b935060a0890151915080821115620002d957600080fd5b50620002e889828a0162000150565b9150509295509295509295565b600181811c908216806200030a57607f821691505b6020821081036200032b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000381576000816000526020600020601f850160051c810160208610156200035c5750805b601f850160051c820191505b818110156200037d5782815560010162000368565b5050505b505050565b81516001600160401b03811115620003a257620003a26200013a565b620003ba81620003b38454620002f5565b8462000331565b602080601f831160018114620003f25760008415620003d95750858301515b600019600386901b1c1916600185901b1785556200037d565b600085815260208120601f198616915b82811015620004235788860151825594840194600190910190840162000402565b5085821015620004425787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611af680620004626000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806366bd8dc011610104578063a76b4d56116100a2578063cd279c7c11610071578063cd279c7c146103a8578063e8a3d485146103bb578063e985e9c5146103c3578063f2fde38b146103d657600080fd5b8063a76b4d5614610372578063b88d4fde1461037a578063bef43b9d1461038d578063c87b56dd1461039557600080fd5b80638da5cb5b116100de5780638da5cb5b1461033e57806395d89b411461034f57806397d9a15914610357578063a22cb4651461035f57600080fd5b806366bd8dc01461031b57806370a0823114610323578063715018a61461033657600080fd5b806323b872dd1161017157806342966c681161014b57806342966c68146102b75780634f558e79146102ca5780634f6ccce7146102f55780636352211e1461030857600080fd5b806323b872dd1461027e5780632f745c591461029157806342842e0e146102a457600080fd5b8063095ea7b3116101ad578063095ea7b31461023c57806318160ddd1461025157806318e97fd1146102635780631a6228961461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611535565b6103e9565b60405190151581526020015b60405180910390f35b61020461049b565b6040516101f391906115a2565b61022461021f3660046115b5565b61052d565b6040516001600160a01b0390911681526020016101f3565b61024f61024a3660046115ea565b610556565b005b6009545b6040519081526020016101f3565b61024f6102713660046116c0565b610565565b610204610577565b61024f61028c366004611707565b610586565b61025561029f3660046115ea565b610616565b61024f6102b2366004611707565b61067b565b61024f6102c53660046115b5565b61069b565b6101e76102d83660046115b5565b6000908152600260205260409020546001600160a01b0316151590565b6102556103033660046115b5565b6106a7565b6102246103163660046115b5565b610700565b61020461070b565b610255610331366004611743565b610799565b61024f6107e1565b600b546001600160a01b0316610224565b6102046107f5565b610204610804565b61024f61036d36600461175e565b610813565b61020461081e565b61024f61038836600461179a565b61082b565b610204610842565b6102046103a33660046115b5565b61084f565b61024f6103b6366004611816565b61085a565b610204610876565b6101e76103d136600461186d565b610885565b61024f6103e4366004611743565b6108b3565b60006001600160e01b031982166301ffc9a760e01b148061041a57506001600160e01b03198216635b5e139f60e01b145b8061043557506001600160e01b0319821663780e9d6360e01b145b8061045057506001600160e01b03198216630852cd8d60e31b145b8061046b57506001600160e01b03198216630704183b60e11b145b8061048657506001600160e01b03198216638dbb89cf60e01b145b806104955750610495826108f1565b92915050565b6060600080546104aa906118a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104d6906118a0565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b5050505050905090565b600061053882610916565b506000828152600460205260409020546001600160a01b0316610495565b61056182823361094f565b5050565b61056d61095c565b6105618282610989565b6060600c80546104aa906118a0565b6001600160a01b0382166105b557604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105c28383336109d9565b9050836001600160a01b0316816001600160a01b031614610610576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105ac565b50505050565b600061062183610799565b82106106525760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105ac565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6106968383836040518060200160405280600081525061082b565b505050565b610561600082336109d9565b60006106b260095490565b82106106db5760405163295f44f760e21b815260006004820152602481018390526044016105ac565b600982815481106106ee576106ee6118da565b90600052602060002001549050919050565b600061049582610916565b600c8054610718906118a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610744906118a0565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b505050505081565b60006001600160a01b0382166107c5576040516322718ad960e21b8152600060048201526024016105ac565b506001600160a01b031660009081526003602052604090205490565b6107e961095c565b6107f360006109ee565b565b6060600180546104aa906118a0565b6060600d80546104aa906118a0565b610561338383610a40565b600e8054610718906118a0565b610836848484610586565b61061084848484610adf565b600d8054610718906118a0565b606061049582610c08565b61086261095c565b61086c8383610d11565b6106968282610989565b6060600e80546104aa906118a0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6108bb61095c565b6001600160a01b0381166108e557604051631e4fbdf760e01b8152600060048201526024016105ac565b6108ee816109ee565b50565b60006001600160e01b0319821663780e9d6360e01b1480610495575061049582610d2b565b6000818152600260205260408120546001600160a01b03168061049557604051637e27328960e01b8152600481018490526024016105ac565b6106968383836001610d50565b600b546001600160a01b031633146107f35760405163118cdaa760e01b81523360048201526024016105ac565b60008281526006602052604090206109a18282611940565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006109e6848484610e56565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610a7257604051630b61174360e31b81526001600160a01b03831660048201526024016105ac565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561061057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610b21903390889087908790600401611a00565b6020604051808303816000875af1925050508015610b5c575060408051601f3d908101601f19168201909252610b5991810190611a3d565b60015b610bc5573d808015610b8a576040519150601f19603f3d011682016040523d82523d6000602084013e610b8f565b606091505b508051600003610bbd57604051633250574960e11b81526001600160a01b03851660048201526024016105ac565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610c0157604051633250574960e11b81526001600160a01b03851660048201526024016105ac565b5050505050565b6060610c1382610916565b5060008281526006602052604081208054610c2d906118a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c59906118a0565b8015610ca65780601f10610c7b57610100808354040283529160200191610ca6565b820191906000526020600020905b815481529060010190602001808311610c8957829003601f168201915b505050505090506000610cc460408051602081019091526000815290565b90508051600003610cd6575092915050565b815115610d08578082604051602001610cf0929190611a5a565b60405160208183030381529060405292505050919050565b6109e684610f23565b610561828260405180602001604052806000815250610f98565b60006001600160e01b03198216632483248360e11b1480610495575061049582610faf565b8080610d6457506001600160a01b03821615155b15610e26576000610d7484610916565b90506001600160a01b03831615801590610da05750826001600160a01b0316816001600160a01b031614155b8015610db35750610db18184610885565b155b15610ddc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105ac565b8115610e245783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e64858585610fff565b90506001600160a01b038116610ec157610ebc84600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b610ee4565b846001600160a01b0316816001600160a01b031614610ee457610ee481856110f8565b6001600160a01b038516610f0057610efb84611189565b6109e6565b846001600160a01b0316816001600160a01b0316146109e6576109e68585611238565b6060610f2e82610916565b506000610f4660408051602081019091526000815290565b90506000815111610f665760405180602001604052806000815250610f91565b80610f7084611288565b604051602001610f81929190611a5a565b6040516020818303038152906040525b9392505050565b610fa2838361131b565b6106966000848484610adf565b60006001600160e01b031982166380ac58cd60e01b1480610fe057506001600160e01b03198216635b5e139f60e01b145b8061049557506301ffc9a760e01b6001600160e01b0319831614610495565b6000828152600260205260408120546001600160a01b039081169083161561102c5761102c818486611380565b6001600160a01b0381161561106a57611049600085600080610d50565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611099576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061110383610799565b600083815260086020526040902054909150808214611156576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061119b90600190611a89565b6000838152600a6020526040812054600980549394509092849081106111c3576111c36118da565b9060005260206000200154905080600983815481106111e4576111e46118da565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061121c5761121c611aaa565b6001900381819060005260206000200160009055905550505050565b6000600161124584610799565b61124f9190611a89565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b60606000611295836113e4565b600101905060008167ffffffffffffffff8111156112b5576112b5611614565b6040519080825280601f01601f1916602001820160405280156112df576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846112e957509392505050565b6001600160a01b03821661134557604051633250574960e11b8152600060048201526024016105ac565b6000611353838360006109d9565b90506001600160a01b03811615610696576040516339e3563760e11b8152600060048201526024016105ac565b61138b8383836114bc565b610696576001600160a01b0383166113b957604051637e27328960e01b8152600481018290526024016105ac565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105ac565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106114235772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061144f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061146d57662386f26fc10000830492506010015b6305f5e1008310611485576305f5e100830492506008015b612710831061149957612710830492506004015b606483106114ab576064830492506002015b600a83106104955760010192915050565b60006001600160a01b038316158015906109e65750826001600160a01b0316846001600160a01b031614806114f657506114f68484610885565b806109e65750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b0319811681146108ee57600080fd5b60006020828403121561154757600080fd5b8135610f918161151f565b60005b8381101561156d578181015183820152602001611555565b50506000910152565b6000815180845261158e816020860160208601611552565b601f01601f19169290920160200192915050565b602081526000610f916020830184611576565b6000602082840312156115c757600080fd5b5035919050565b80356001600160a01b03811681146115e557600080fd5b919050565b600080604083850312156115fd57600080fd5b611606836115ce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561164557611645611614565b604051601f8501601f19908116603f0116810190828211818310171561166d5761166d611614565b8160405280935085815286868601111561168657600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126116b157600080fd5b610f918383356020850161162a565b600080604083850312156116d357600080fd5b82359150602083013567ffffffffffffffff8111156116f157600080fd5b6116fd858286016116a0565b9150509250929050565b60008060006060848603121561171c57600080fd5b611725846115ce565b9250611733602085016115ce565b9150604084013590509250925092565b60006020828403121561175557600080fd5b610f91826115ce565b6000806040838503121561177157600080fd5b61177a836115ce565b91506020830135801515811461178f57600080fd5b809150509250929050565b600080600080608085870312156117b057600080fd5b6117b9856115ce565b93506117c7602086016115ce565b925060408501359150606085013567ffffffffffffffff8111156117ea57600080fd5b8501601f810187136117fb57600080fd5b61180a8782356020840161162a565b91505092959194509250565b60008060006060848603121561182b57600080fd5b611834846115ce565b925060208401359150604084013567ffffffffffffffff81111561185757600080fd5b611863868287016116a0565b9150509250925092565b6000806040838503121561188057600080fd5b611889836115ce565b9150611897602084016115ce565b90509250929050565b600181811c908216806118b457607f821691505b6020821081036118d457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f821115610696576000816000526020600020601f850160051c810160208610156119195750805b601f850160051c820191505b8181101561193857828155600101611925565b505050505050565b815167ffffffffffffffff81111561195a5761195a611614565b61196e8161196884546118a0565b846118f0565b602080601f8311600181146119a3576000841561198b5750858301515b600019600386901b1c1916600185901b178555611938565b600085815260208120601f198616915b828110156119d2578886015182559484019460019091019084016119b3565b50858210156119f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611a3390830184611576565b9695505050505050565b600060208284031215611a4f57600080fd5b8151610f918161151f565b60008351611a6c818460208801611552565b835190830190611a80818360208801611552565b01949350505050565b8181038181111561049557634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122065ff7beb447ca14fd56b871e63b2ee2ad2b81577c507c1d9dae77e2a2b3163de64736f6c63430008180033a2646970667358221220738af3cfcac8482b0a8eaad746d32575d2e034218f30b6ec8732902f10c7fced64736f6c63430008180033" + "value": "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6127b1806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000488565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000566565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002cb565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000648565b620002e3565b620001066200014236600462000648565b620003b7565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b0316331462000227576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a204f6e60448201527f6c792064656c656761746564206465706c6f7965722063616e206465706c6f7960648201526084015b60405180910390fd5b600080546001600160a01b0316878787878760405162000247906200047a565b6200025896959493929190620006bb565b604051809103906000f08015801562000275573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b9949392919062000744565b60405180910390a29695505050505050565b620002d5620003fb565b620002e160006200042a565b565b620002ed620003fb565b6001600160a01b0381166200036d576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a20496e60448201527f76616c69642064656c656761746564206465706c6f796572206164647265737360648201526084016200021e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003c1620003fb565b6001600160a01b038116620003ed57604051631e4fbdf760e01b8152600060048201526024016200021e565b620003f8816200042a565b50565b6000546001600160a01b03163314620002e15760405163118cdaa760e01b81523360048201526024016200021e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611fd780620007a583390190565b6000602082840312156200049b57600080fd5b81356001600160e01b031981168114620004b457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004e357600080fd5b813567ffffffffffffffff80821115620005015762000501620004bb565b604051601f8301601f19908116603f011681019082821181831017156200052c576200052c620004bb565b816040528381528660208588010111156200054657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057f57600080fd5b853567ffffffffffffffff808211156200059857600080fd5b620005a689838a01620004d1565b96506020880135915080821115620005bd57600080fd5b620005cb89838a01620004d1565b95506040880135915080821115620005e257600080fd5b620005f089838a01620004d1565b945060608801359150808211156200060757600080fd5b6200061589838a01620004d1565b935060808801359150808211156200062c57600080fd5b506200063b88828901620004d1565b9150509295509295909350565b6000602082840312156200065b57600080fd5b81356001600160a01b0381168114620004b457600080fd5b6000815180845260005b818110156200069b576020818501810151868301820152016200067d565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006e19083018862000673565b8281036040840152620006f5818862000673565b905082810360608401526200070b818762000673565b9050828103608084015262000721818662000673565b905082810360a084015262000737818562000673565b9998505050505050505050565b60808152600062000759608083018762000673565b82810360208401526200076d818762000673565b9050828103604084015262000783818662000673565b9050828103606084015262000799818562000673565b97965050505050505056fe60806040523480156200001157600080fd5b5060405162001fd738038062001fd7833981016040819052620000349162000211565b858585600062000045838262000395565b50600162000054828262000395565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009181620000da565b50600f620000a0858262000395565b50600c620000af848262000395565b50600d620000be838262000395565b50600e620000cd828262000395565b5050505050505062000461565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017157600080fd5b81516001600160401b03808211156200018e576200018e62000149565b604051601f8301601f19908116603f01168101908282118183101715620001b957620001b962000149565b8160405283815260209250866020858801011115620001d757600080fd5b600091505b83821015620001fb5785820183015181830184015290820190620001dc565b6000602085830101528094505050505092915050565b60008060008060008060c087890312156200022b57600080fd5b62000236876200012c565b60208801519096506001600160401b03808211156200025457600080fd5b620002628a838b016200015f565b965060408901519150808211156200027957600080fd5b620002878a838b016200015f565b955060608901519150808211156200029e57600080fd5b620002ac8a838b016200015f565b94506080890151915080821115620002c357600080fd5b620002d18a838b016200015f565b935060a0890151915080821115620002e857600080fd5b50620002f789828a016200015f565b9150509295509295509295565b600181811c908216806200031957607f821691505b6020821081036200033a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000390576000816000526020600020601f850160051c810160208610156200036b5750805b601f850160051c820191505b818110156200038c5782815560010162000377565b5050505b505050565b81516001600160401b03811115620003b157620003b162000149565b620003c981620003c2845462000304565b8462000340565b602080601f831160018114620004015760008415620003e85750858301515b600019600386901b1c1916600185901b1785556200038c565b600085815260208120601f198616915b82811015620004325788860151825594840194600190910190840162000411565b5085821015620004515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611b6680620004716000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063b84c8246116100a2578063cd279c7c11610071578063cd279c7c146103c6578063e8a3d485146103d9578063e985e9c5146103e1578063f2fde38b146103f457600080fd5b8063b84c824614610385578063b88d4fde14610398578063bef43b9d146103ab578063c87b56dd146103b357600080fd5b806395d89b41116100de57806395d89b411461035a57806397d9a15914610362578063a22cb4651461036a578063a76b4d561461037d57600080fd5b806370a082311461032e578063715018a6146103415780638da5cb5b1461034957600080fd5b806323b872dd1161017c5780634f558e791161014b5780634f558e79146102d55780634f6ccce7146103005780636352211e1461031357806366bd8dc01461032657600080fd5b806323b872dd146102895780632f745c591461029c57806342842e0e146102af57806342966c68146102c257600080fd5b8063095ea7b3116101b8578063095ea7b31461024757806318160ddd1461025c57806318e97fd11461026e5780631a6228961461028157600080fd5b806301ffc9a7146101df57806306fdde0314610207578063081812fc1461021c575b600080fd5b6101f26101ed366004611570565b610407565b60405190151581526020015b60405180910390f35b61020f6104b9565b6040516101fe91906115dd565b61022f61022a3660046115f0565b61054b565b6040516001600160a01b0390911681526020016101fe565b61025a610255366004611625565b610574565b005b6009545b6040519081526020016101fe565b61025a61027c3660046116fb565b610583565b61020f610595565b61025a610297366004611742565b6105a4565b6102606102aa366004611625565b610634565b61025a6102bd366004611742565b610699565b61025a6102d03660046115f0565b6106b9565b6101f26102e33660046115f0565b6000908152600260205260409020546001600160a01b0316151590565b61026061030e3660046115f0565b6106c5565b61022f6103213660046115f0565b61071e565b61020f610729565b61026061033c36600461177e565b6107b7565b61025a6107ff565b600b546001600160a01b031661022f565b61020f610813565b61020f610822565b61025a610378366004611799565b610831565b61020f61083c565b61025a6103933660046117d5565b610849565b61025a6103a636600461180a565b61085d565b61020f610874565b61020f6103c13660046115f0565b610881565b61025a6103d4366004611886565b61088c565b61020f6108a8565b6101f26103ef3660046118dd565b6108b7565b61025a61040236600461177e565b6108e5565b60006001600160e01b031982166301ffc9a760e01b148061043857506001600160e01b03198216635b5e139f60e01b145b8061045357506001600160e01b0319821663780e9d6360e01b145b8061046e57506001600160e01b03198216630852cd8d60e31b145b8061048957506001600160e01b03198216630704183b60e11b145b806104a457506001600160e01b03198216638dbb89cf60e01b145b806104b357506104b382610920565b92915050565b6060600080546104c890611910565b80601f01602080910402602001604051908101604052809291908181526020018280546104f490611910565b80156105415780601f1061051657610100808354040283529160200191610541565b820191906000526020600020905b81548152906001019060200180831161052457829003601f168201915b5050505050905090565b600061055682610945565b506000828152600460205260409020546001600160a01b03166104b3565b61057f82823361097e565b5050565b61058b61098b565b61057f82826109b8565b6060600c80546104c890611910565b6001600160a01b0382166105d357604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105e0838333610a08565b9050836001600160a01b0316816001600160a01b03161461062e576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105ca565b50505050565b600061063f836107b7565b82106106705760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105ca565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6106b48383836040518060200160405280600081525061085d565b505050565b61057f60008233610a08565b60006106d060095490565b82106106f95760405163295f44f760e21b815260006004820152602481018390526044016105ca565b6009828154811061070c5761070c61194a565b90600052602060002001549050919050565b60006104b382610945565b600c805461073690611910565b80601f016020809104026020016040519081016040528092919081815260200182805461076290611910565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b505050505081565b60006001600160a01b0382166107e3576040516322718ad960e21b8152600060048201526024016105ca565b506001600160a01b031660009081526003602052604090205490565b61080761098b565b6108116000610a1d565b565b6060600f80546104c890611910565b6060600d80546104c890611910565b61057f338383610a6f565b600e805461073690611910565b61085161098b565b61085a81610b0e565b50565b6108688484846105a4565b61062e84848484610b1a565b600d805461073690611910565b60606104b382610c43565b61089461098b565b61089e8383610d4c565b6106b482826109b8565b6060600e80546104c890611910565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6108ed61098b565b6001600160a01b03811661091757604051631e4fbdf760e01b8152600060048201526024016105ca565b61085a81610a1d565b60006001600160e01b0319821663780e9d6360e01b14806104b357506104b382610d66565b6000818152600260205260408120546001600160a01b0316806104b357604051637e27328960e01b8152600481018490526024016105ca565b6106b48383836001610d8b565b600b546001600160a01b031633146108115760405163118cdaa760e01b81523360048201526024016105ca565b60008281526006602052604090206109d082826119b0565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000610a15848484610e91565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610aa157604051630b61174360e31b81526001600160a01b03831660048201526024016105ca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600f61057f82826119b0565b6001600160a01b0383163b1561062e57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610b5c903390889087908790600401611a70565b6020604051808303816000875af1925050508015610b97575060408051601f3d908101601f19168201909252610b9491810190611aad565b60015b610c00573d808015610bc5576040519150601f19603f3d011682016040523d82523d6000602084013e610bca565b606091505b508051600003610bf857604051633250574960e11b81526001600160a01b03851660048201526024016105ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610c3c57604051633250574960e11b81526001600160a01b03851660048201526024016105ca565b5050505050565b6060610c4e82610945565b5060008281526006602052604081208054610c6890611910565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9490611910565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b505050505090506000610cff60408051602081019091526000815290565b90508051600003610d11575092915050565b815115610d43578082604051602001610d2b929190611aca565b60405160208183030381529060405292505050919050565b610a1584610f5e565b61057f828260405180602001604052806000815250610fd3565b60006001600160e01b03198216632483248360e11b14806104b357506104b382610fea565b8080610d9f57506001600160a01b03821615155b15610e61576000610daf84610945565b90506001600160a01b03831615801590610ddb5750826001600160a01b0316816001600160a01b031614155b8015610dee5750610dec81846108b7565b155b15610e175760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105ca565b8115610e5f5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e9f85858561103a565b90506001600160a01b038116610efc57610ef784600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b610f1f565b846001600160a01b0316816001600160a01b031614610f1f57610f1f8185611133565b6001600160a01b038516610f3b57610f36846111c4565b610a15565b846001600160a01b0316816001600160a01b031614610a1557610a158585611273565b6060610f6982610945565b506000610f8160408051602081019091526000815290565b90506000815111610fa15760405180602001604052806000815250610fcc565b80610fab846112c3565b604051602001610fbc929190611aca565b6040516020818303038152906040525b9392505050565b610fdd8383611356565b6106b46000848484610b1a565b60006001600160e01b031982166380ac58cd60e01b148061101b57506001600160e01b03198216635b5e139f60e01b145b806104b357506301ffc9a760e01b6001600160e01b03198316146104b3565b6000828152600260205260408120546001600160a01b0390811690831615611067576110678184866113bb565b6001600160a01b038116156110a557611084600085600080610d8b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156110d4576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061113e836107b7565b600083815260086020526040902054909150808214611191576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906111d690600190611af9565b6000838152600a6020526040812054600980549394509092849081106111fe576111fe61194a565b90600052602060002001549050806009838154811061121f5761121f61194a565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061125757611257611b1a565b6001900381819060005260206000200160009055905550505050565b60006001611280846107b7565b61128a9190611af9565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b606060006112d08361141f565b600101905060008167ffffffffffffffff8111156112f0576112f061164f565b6040519080825280601f01601f19166020018201604052801561131a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461132457509392505050565b6001600160a01b03821661138057604051633250574960e11b8152600060048201526024016105ca565b600061138e83836000610a08565b90506001600160a01b038116156106b4576040516339e3563760e11b8152600060048201526024016105ca565b6113c68383836114f7565b6106b4576001600160a01b0383166113f457604051637e27328960e01b8152600481018290526024016105ca565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105ca565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061145e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061148a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106114a857662386f26fc10000830492506010015b6305f5e10083106114c0576305f5e100830492506008015b61271083106114d457612710830492506004015b606483106114e6576064830492506002015b600a83106104b35760010192915050565b60006001600160a01b03831615801590610a155750826001600160a01b0316846001600160a01b03161480611531575061153184846108b7565b80610a155750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461085a57600080fd5b60006020828403121561158257600080fd5b8135610fcc8161155a565b60005b838110156115a8578181015183820152602001611590565b50506000910152565b600081518084526115c981602086016020860161158d565b601f01601f19169290920160200192915050565b602081526000610fcc60208301846115b1565b60006020828403121561160257600080fd5b5035919050565b80356001600160a01b038116811461162057600080fd5b919050565b6000806040838503121561163857600080fd5b61164183611609565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116805761168061164f565b604051601f8501601f19908116603f011681019082821181831017156116a8576116a861164f565b816040528093508581528686860111156116c157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126116ec57600080fd5b610fcc83833560208501611665565b6000806040838503121561170e57600080fd5b82359150602083013567ffffffffffffffff81111561172c57600080fd5b611738858286016116db565b9150509250929050565b60008060006060848603121561175757600080fd5b61176084611609565b925061176e60208501611609565b9150604084013590509250925092565b60006020828403121561179057600080fd5b610fcc82611609565b600080604083850312156117ac57600080fd5b6117b583611609565b9150602083013580151581146117ca57600080fd5b809150509250929050565b6000602082840312156117e757600080fd5b813567ffffffffffffffff8111156117fe57600080fd5b610a15848285016116db565b6000806000806080858703121561182057600080fd5b61182985611609565b935061183760208601611609565b925060408501359150606085013567ffffffffffffffff81111561185a57600080fd5b8501601f8101871361186b57600080fd5b61187a87823560208401611665565b91505092959194509250565b60008060006060848603121561189b57600080fd5b6118a484611609565b925060208401359150604084013567ffffffffffffffff8111156118c757600080fd5b6118d3868287016116db565b9150509250925092565b600080604083850312156118f057600080fd5b6118f983611609565b915061190760208401611609565b90509250929050565b600181811c9082168061192457607f821691505b60208210810361194457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f8211156106b4576000816000526020600020601f850160051c810160208610156119895750805b601f850160051c820191505b818110156119a857828155600101611995565b505050505050565b815167ffffffffffffffff8111156119ca576119ca61164f565b6119de816119d88454611910565b84611960565b602080601f831160018114611a1357600084156119fb5750858301515b600019600386901b1c1916600185901b1785556119a8565b600085815260208120601f198616915b82811015611a4257888601518255948401946001909101908401611a23565b5085821015611a605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611aa3908301846115b1565b9695505050505050565b600060208284031215611abf57600080fd5b8151610fcc8161155a565b60008351611adc81846020880161158d565b835190830190611af081836020880161158d565b01949350505050565b818103818111156104b357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e708ad8174a5df5c602c7a68f8ef19d0343c901a0800a36618542be68d6a333264736f6c63430008180033a264697066735822122073f5f1bfe1177c16816d43f4e0bbf2615d36fb452254b7ac865fb27f1e426de364736f6c63430008180033" }, { "type": "UInt64", diff --git a/cadence/tests/test_helpers.cdc b/cadence/tests/test_helpers.cdc index 94b0654f..5b165bdc 100644 --- a/cadence/tests/test_helpers.cdc +++ b/cadence/tests/test_helpers.cdc @@ -13,9 +13,9 @@ import "EVM" access(all) let compiledFactoryBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6114b9806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063aff51c3e11610097578063daa09e5411610066578063daa09e5414610216578063db6d56cd14610229578063dfe1ac361461023c578063f2fde38b1461024f57600080fd5b8063aff51c3e146101bd578063b3d5dbdc146101d0578063cc435bf3146101f0578063d974d2381461020357600080fd5b806366cd5014116100d357806366cd50141461017e578063715018a61461019157806383843c9e146101995780638da5cb5b146101ac57600080fd5b806304433bbc1461010557806314902ad314610135578063263e0c1b1461014a5780635ab1bd531461016d575b600080fd5b610118610113366004611101565b610262565b6040516001600160a01b0390911681526020015b60405180910390f35b610148610143366004611153565b6102da565b005b61015d610158366004611153565b610347565b604051901515815260200161012c565b6001546001600160a01b0316610118565b61011861018c366004611101565b610737565b610148610768565b6101486101a7366004611101565b6107d6565b6000546001600160a01b0316610118565b6101486101cb366004611170565b6108eb565b6101e36101de366004611153565b610a20565b60405161012c9190611212565b61015d6101fe366004611153565b610a93565b610148610211366004611170565b610ab3565b61015d610224366004611153565b610ba0565b610118610237366004611225565b610c16565b61015d61024a366004611153565b610ceb565b61014861025d366004611153565b610d5a565b600154604051630110ceef60e21b81526000916001600160a01b0316906304433bbc90610293908590600401611212565b602060405180830381865afa1580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d4919061131a565b92915050565b6102e2610d98565b6102eb81610dc7565b6001546040516001600160a01b038084169216907f61dad6e94cd5c0b65c9265246706a09bd0d11d5330f3e6b659d328151a664e8c90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b1790529051600091829182916001600160a01b0386169161038d9190611337565b600060405180830381855afa9150503d80600081146103c8576040519150601f19603f3d011682016040523d82523d6000602084013e6103cd565b606091505b50915091508115806103de57508051155b156103ed575060009392505050565b604051600060248201526001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b1790525161043a9190611337565b600060405180830381855afa9150503d8060008114610475576040519150601f19603f3d011682016040523d82523d6000602084013e61047a565b606091505b50909250905081158061048c57508051155b1561049b575060009392505050565b60405160006024820181905260448201526001600160a01b0385169060640160408051601f198184030181529181526020820180516001600160e01b0316636eb1769f60e11b179052516104ef9190611337565b600060405180830381855afa9150503d806000811461052a576040519150601f19603f3d011682016040523d82523d6000602084013e61052f565b606091505b50909250905081158061054157508051155b15610550575060009392505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516001600160a01b0386169161058e91611337565b600060405180830381855afa9150503d80600081146105c9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ce565b606091505b5090925090508115806105e057508051155b156105ef575060009392505050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516001600160a01b0386169161062d91611337565b600060405180830381855afa9150503d8060008114610668576040519150601f19603f3d011682016040523d82523d6000602084013e61066d565b606091505b50909250905081158061067f57508051155b1561068e575060009392505050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516001600160a01b038616916106cc91611337565b600060405180830381855afa9150503d8060008114610707576040519150601f19603f3d011682016040523d82523d6000602084013e61070c565b606091505b50909250905081158061071e57508051155b1561072d575060009392505050565b5060019392505050565b60006002826040516107499190611337565b908152604051908190036020019020546001600160a01b031692915050565b610770610d98565b60405162461bcd60e51b815260206004820152603060248201527f466c6f77427269646765466163746f72793a204f776e6572736869702063616e60448201526f1b9bdd081899481c995b9bdd5b98d95960821b60648201526084015b60405180910390fd5b6107de610d98565b60006002826040516107f09190611337565b908152604051908190036020019020546001600160a01b031690508061086b5760405162461bcd60e51b815260206004820152602a60248201527f466c6f77427269646765466163746f72793a204465706c6f796572206e6f74206044820152691c9959da5cdd195c995960b21b60648201526084016107cd565b60028260405161087b9190611337565b90815260405190819003602001812080546001600160a01b03191690556108a3908390611337565b6040519081900381206001600160a01b0383168252907f03c7566b5f4959b890c1a6d38f39df053c6737c9965d9c0ddf612c86100a838b906020015b60405180910390a25050565b6108f3610d98565b6108fc81610e39565b60006001600160a01b03166002836040516109179190611337565b908152604051908190036020019020546001600160a01b0316146109945760405162461bcd60e51b815260206004820152602e60248201527f466c6f77427269646765466163746f72793a204465706c6f79657220616c726560448201526d18591e481c9959da5cdd195c995960921b60648201526084016107cd565b806002836040516109a59190611337565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091556109e0908390611337565b6040519081900381206001600160a01b0383168252907fc0c30f085f0b1397c8bf23f8b851b63b33e13d11832b8320a37fca1c07dcb40f906020016108df565b600154604051632cf576f760e21b81526001600160a01b038381166004830152606092169063b3d5dbdc90602401600060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d49190810190611353565b6000610a9e82610ba0565b1515610aa983610347565b1515141592915050565b610abb610d98565b610ac481610e39565b6000600283604051610ad69190611337565b908152604051908190036020019020546001600160a01b0316905080610b0557610b0083836108eb565b505050565b81600284604051610b169190611337565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b031990931692909217909155610b51908490611337565b604080519182900382206001600160a01b03808516845285166020840152917f848576f8a081c5af60d89f0215c8af528186670eefd6349c05014d5b22688646910160405180910390a2505050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526000906001600160a01b038316906301ffc9a790602401602060405180830381865afa925050508015610c0a575060408051601f3d908101601f19168201909252610c07918101906113ca565b60015b6102d457506000919050565b6000610c20610d98565b6000600288604051610c329190611337565b908152604051908190036020019020546001600160a01b03169050610c5681610e39565b60405163476d399760e01b815281906000906001600160a01b0383169063476d399790610c8f908c908c908c908c908c906004016113ec565b6020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd2919061131a565b9050610cde8682610eab565b9998505050505050505050565b60015460405163a6de610560e01b81526001600160a01b038381166004830152600092169063a6de610590602401602060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d491906113ca565b610d62610d98565b6001600160a01b038116610d8c57604051631e4fbdf760e01b8152600060048201526024016107cd565b610d9581610f16565b50565b6000546001600160a01b03163314610dc55760405163118cdaa760e01b81523360048201526024016107cd565b565b610dd081610f66565b610de18163976998cb60e01b610fbc565b610d955760405162461bcd60e51b815260206004820152602360248201527f466c6f77427269646765466163746f72793a20496e76616c696420726567697360448201526274727960e81b60648201526084016107cd565b610e4281610f66565b610e538163476d399760e01b610fbc565b610d955760405162461bcd60e51b815260206004820152602360248201527f466c6f77427269646765466163746f72793a20496e76616c6964206465706c6f6044820152623cb2b960e91b60648201526084016107cd565b60015460405163522791d160e01b81526001600160a01b0390911690819063522791d190610edf9086908690600401611459565b600060405180830381600087803b158015610ef957600080fd5b505af1158015610f0d573d6000803e3d6000fd5b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116610d955760405162461bcd60e51b815260206004820152601f60248201527f466c6f77427269646765466163746f72793a205a65726f20616464726573730060448201526064016107cd565b6040516301ffc9a760e01b81526001600160e01b0319821660048201526000906001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015611029575060408051601f3d908101601f19168201909252611026918101906113ca565b60015b611035575060006102d4565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561107b5761107b61103c565b604052919050565b600067ffffffffffffffff82111561109d5761109d61103c565b50601f01601f191660200190565b600082601f8301126110bc57600080fd5b81356110cf6110ca82611083565b611052565b8181528460208386010111156110e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561111357600080fd5b813567ffffffffffffffff81111561112a57600080fd5b611136848285016110ab565b949350505050565b6001600160a01b0381168114610d9557600080fd5b60006020828403121561116557600080fd5b81356110358161113e565b6000806040838503121561118357600080fd5b823567ffffffffffffffff81111561119a57600080fd5b6111a6858286016110ab565b92505060208301356111b78161113e565b809150509250929050565b60005b838110156111dd5781810151838201526020016111c5565b50506000910152565b600081518084526111fe8160208601602086016111c2565b601f01601f19169290920160200192915050565b60208152600061103560208301846111e6565b60008060008060008060c0878903121561123e57600080fd5b863567ffffffffffffffff8082111561125657600080fd5b6112628a838b016110ab565b9750602089013591508082111561127857600080fd5b6112848a838b016110ab565b9650604089013591508082111561129a57600080fd5b6112a68a838b016110ab565b955060608901359150808211156112bc57600080fd5b6112c88a838b016110ab565b945060808901359150808211156112de57600080fd5b6112ea8a838b016110ab565b935060a089013591508082111561130057600080fd5b5061130d89828a016110ab565b9150509295509295509295565b60006020828403121561132c57600080fd5b81516110358161113e565b600082516113498184602087016111c2565b9190910192915050565b60006020828403121561136557600080fd5b815167ffffffffffffffff81111561137c57600080fd5b8201601f8101841361138d57600080fd5b805161139b6110ca82611083565b8181528560208385010111156113b057600080fd5b6113c18260208301602086016111c2565b95945050505050565b6000602082840312156113dc57600080fd5b8151801515811461103557600080fd5b60a0815260006113ff60a08301886111e6565b828103602084015261141181886111e6565b9050828103604084015261142581876111e6565b9050828103606084015261143981866111e6565b9050828103608084015261144d81856111e6565b98975050505050505050565b60408152600061146c60408301856111e6565b905060018060a01b0383166020830152939250505056fea26469706673582212200af9d80b662861a856536a56fb3a4afaa201b1b9be2839aa487140e647786f8f64736f6c63430008180033" -access(all) let erc20DeployerBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6121ca806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000484565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000562565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002c9565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000644565b620002e1565b620001066200014236600462000644565b620003b3565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03163314620002255760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a204f6e6c60448201527f792064656c656761746564206465706c6f7965722063616e206465706c6f790060648201526084015b60405180910390fd5b600080546001600160a01b03168787878787604051620002459062000476565b6200025696959493929190620006b7565b604051809103906000f08015801562000273573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b7949392919062000740565b60405180910390a29695505050505050565b620002d3620003f7565b620002df600062000426565b565b620002eb620003f7565b6001600160a01b038116620003695760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a20496e7660448201527f616c69642064656c656761746564206465706c6f79657220616464726573730060648201526084016200021c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003bd620003f7565b6001600160a01b038116620003e957604051631e4fbdf760e01b8152600060048201526024016200021c565b620003f48162000426565b50565b6000546001600160a01b03163314620002df5760405163118cdaa760e01b81523360048201526024016200021c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119f480620007a183390190565b6000602082840312156200049757600080fd5b81356001600160e01b031981168114620004b057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004df57600080fd5b813567ffffffffffffffff80821115620004fd57620004fd620004b7565b604051601f8301601f19908116603f01168101908282118183101715620005285762000528620004b7565b816040528381528660208588010111156200054257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057b57600080fd5b853567ffffffffffffffff808211156200059457600080fd5b620005a289838a01620004cd565b96506020880135915080821115620005b957600080fd5b620005c789838a01620004cd565b95506040880135915080821115620005de57600080fd5b620005ec89838a01620004cd565b945060608801359150808211156200060357600080fd5b6200061189838a01620004cd565b935060808801359150808211156200062857600080fd5b506200063788828901620004cd565b9150509295509295909350565b6000602082840312156200065757600080fd5b81356001600160a01b0381168114620004b057600080fd5b6000815180845260005b81811015620006975760208185018101518683018201520162000679565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006dd908301886200066f565b8281036040840152620006f181886200066f565b905082810360608401526200070781876200066f565b905082810360808401526200071d81866200066f565b905082810360a08401526200073381856200066f565b9998505050505050505050565b6080815260006200075560808301876200066f565b82810360208401526200076981876200066f565b905082810360408401526200077f81866200066f565b905082810360608401526200079581856200066f565b97965050505050505056fe6101606040523480156200001257600080fd5b50604051620019f4380380620019f483398101604081905262000035916200035c565b858580604051806040016040528060018152602001603160f81b81525088888160039081620000659190620004e0565b506004620000748282620004e0565b506200008691508390506005620001a4565b6101205262000097816006620001a4565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200015f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200016a81620001dd565b506009620001798482620004e0565b50600a620001888382620004e0565b50600b620001978282620004e0565b5050505050505062000606565b6000602083511015620001c457620001bc836200022f565b9050620001d7565b81620001d18482620004e0565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f815111156200025d578260405163305a27a960e01b8152600401620001569190620005ac565b80516200026a82620005e1565b179392505050565b80516001600160a01b03811681146200028a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002c2578181015183820152602001620002a8565b50506000910152565b600082601f830112620002dd57600080fd5b81516001600160401b0380821115620002fa57620002fa6200028f565b604051601f8301601f19908116603f011681019082821181831017156200032557620003256200028f565b816040528381528660208588010111156200033f57600080fd5b62000352846020830160208901620002a5565b9695505050505050565b60008060008060008060c087890312156200037657600080fd5b620003818762000272565b60208801519096506001600160401b03808211156200039f57600080fd5b620003ad8a838b01620002cb565b96506040890151915080821115620003c457600080fd5b620003d28a838b01620002cb565b95506060890151915080821115620003e957600080fd5b620003f78a838b01620002cb565b945060808901519150808211156200040e57600080fd5b6200041c8a838b01620002cb565b935060a08901519150808211156200043357600080fd5b506200044289828a01620002cb565b9150509295509295509295565b600181811c908216806200046457607f821691505b6020821081036200048557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004db576000816000526020600020601f850160051c81016020861015620004b65750805b601f850160051c820191505b81811015620004d757828155600101620004c2565b5050505b505050565b81516001600160401b03811115620004fc57620004fc6200028f565b62000514816200050d84546200044f565b846200048b565b602080601f8311600181146200054c5760008415620005335750858301515b600019600386901b1c1916600185901b178555620004d7565b600085815260208120601f198616915b828110156200057d578886015182559484019460019091019084016200055c565b50858210156200059c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005cd816040850160208701620002a5565b601f01601f19169190910160400192915050565b80516020808301519190811015620004855760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611393620006616000396000610b5301526000610b26015260006109e3015260006109bb01526000610916015260006109400152600061096a01526113936000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806378c13082116100de57806397d9a15911610097578063d505accf11610071578063d505accf14610317578063dd62ed3e1461032a578063e8a3d48514610363578063f2fde38b1461036b57600080fd5b806397d9a159146102f4578063a76b4d56146102fc578063a9059cbb1461030457600080fd5b806378c130821461028857806379cc6790146102905780637ecebe00146102a357806384b0196e146102b65780638da5cb5b146102d157806395d89b41146102ec57600080fd5b8063313ce5671161014b57806340c10f191161012557806340c10f191461022f57806342966c681461024457806370a0823114610257578063715018a61461028057600080fd5b8063313ce567146102105780633644e5151461021f57806338e5d7b31461022757600080fd5b806301ffc9a71461019357806306fdde03146101bb578063095ea7b3146101d057806318160ddd146101e35780631a622896146101f557806323b872dd146101fd575b600080fd5b6101a66101a136600461106d565b61037e565b60405190151581526020015b60405180910390f35b6101c3610421565b6040516101b291906110e4565b6101a66101de366004611113565b6104b3565b6002545b6040519081526020016101b2565b6101c36104cb565b6101a661020b36600461113d565b6104da565b604051601281526020016101b2565b6101e76104fe565b6101c361050d565b61024261023d366004611113565b61059b565b005b610242610252366004611179565b6105b1565b6101e7610265366004611192565b6001600160a01b031660009081526020819052604090205490565b6102426105be565b6101c36105d2565b61024261029e366004611113565b6105df565b6101e76102b1366004611192565b6105f4565b6102be610612565b6040516101b297969594939291906111ad565b6008546040516001600160a01b0390911681526020016101b2565b6101c3610658565b6101c3610667565b6101c3610676565b6101a6610312366004611113565b610683565b610242610325366004611246565b610691565b6101e76103383660046112b9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c36107d0565b610242610379366004611192565b6107df565b60006001600160e01b031982166336372b0760e01b14806103af57506001600160e01b0319821663076b417f60e31b145b806103ca57506001600160e01b03198216630704183b60e11b145b806103e557506001600160e01b03198216634ec7fbed60e11b145b8061040057506001600160e01b03198216638dbb89cf60e01b145b8061041b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610430906112ec565b80601f016020809104026020016040519081016040528092919081815260200182805461045c906112ec565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000336104c181858561081a565b5060019392505050565b606060098054610430906112ec565b6000336104e885828561082c565b6104f38585856108aa565b506001949350505050565b6000610508610909565b905090565b6009805461051a906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610546906112ec565b80156105935780601f1061056857610100808354040283529160200191610593565b820191906000526020600020905b81548152906001019060200180831161057657829003601f168201915b505050505081565b6105a3610a34565b6105ad8282610a61565b5050565b6105bb3382610a97565b50565b6105c6610a34565b6105d06000610acd565b565b600a805461051a906112ec565b6105ea82338361082c565b6105ad8282610a97565b6001600160a01b03811660009081526007602052604081205461041b565b600060608060008060006060610626610b1f565b61062e610b4c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610430906112ec565b6060600a8054610430906112ec565b600b805461051a906112ec565b6000336104c18185856108aa565b834211156106ba5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107078c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061076282610b79565b9050600061077282878787610ba6565b9050896001600160a01b0316816001600160a01b0316146107b9576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016106b1565b6107c48a8a8a61081a565b50505050505050505050565b6060600b8054610430906112ec565b6107e7610a34565b6001600160a01b03811661081157604051631e4fbdf760e01b8152600060048201526024016106b1565b6105bb81610acd565b6108278383836001610bd4565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108a4578181101561089557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106b1565b6108a484848484036000610bd4565b50505050565b6001600160a01b0383166108d457604051634b637e8f60e11b8152600060048201526024016106b1565b6001600160a01b0382166108fe5760405163ec442f0560e01b8152600060048201526024016106b1565b610827838383610ca9565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561096257507f000000000000000000000000000000000000000000000000000000000000000046145b1561098c57507f000000000000000000000000000000000000000000000000000000000000000090565b610508604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b031633146105d05760405163118cdaa760e01b81523360048201526024016106b1565b6001600160a01b038216610a8b5760405163ec442f0560e01b8152600060048201526024016106b1565b6105ad60008383610ca9565b6001600160a01b038216610ac157604051634b637e8f60e11b8152600060048201526024016106b1565b6105ad82600083610ca9565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606105087f00000000000000000000000000000000000000000000000000000000000000006005610dd3565b60606105087f00000000000000000000000000000000000000000000000000000000000000006006610dd3565b600061041b610b86610909565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610bb888888888610e7e565b925092509250610bc88282610f4d565b50909695505050505050565b6001600160a01b038416610bfe5760405163e602df0560e01b8152600060048201526024016106b1565b6001600160a01b038316610c2857604051634a1406b160e11b8152600060048201526024016106b1565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108a457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c9b91815260200190565b60405180910390a350505050565b6001600160a01b038316610cd4578060026000828254610cc99190611326565b90915550610d469050565b6001600160a01b03831660009081526020819052604090205481811015610d275760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106b1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610d6257600280548290039055610d81565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc691815260200190565b60405180910390a3505050565b606060ff8314610ded57610de683611006565b905061041b565b818054610df9906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610e25906112ec565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b5050505050905061041b565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610eb95750600091506003905082610f43565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f0d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f3957506000925060019150829050610f43565b9250600091508190505b9450945094915050565b6000826003811115610f6157610f61611347565b03610f6a575050565b6001826003811115610f7e57610f7e611347565b03610f9c5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610fb057610fb0611347565b03610fd15760405163fce698f760e01b8152600481018290526024016106b1565b6003826003811115610fe557610fe5611347565b036105ad576040516335e2f38360e21b8152600481018290526024016106b1565b6060600061101383611045565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561041b57604051632cd44ac360e21b815260040160405180910390fd5b60006020828403121561107f57600080fd5b81356001600160e01b03198116811461109757600080fd5b9392505050565b6000815180845260005b818110156110c4576020818501810151868301820152016110a8565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611097602083018461109e565b80356001600160a01b038116811461110e57600080fd5b919050565b6000806040838503121561112657600080fd5b61112f836110f7565b946020939093013593505050565b60008060006060848603121561115257600080fd5b61115b846110f7565b9250611169602085016110f7565b9150604084013590509250925092565b60006020828403121561118b57600080fd5b5035919050565b6000602082840312156111a457600080fd5b611097826110f7565b60ff60f81b881681526000602060e060208401526111ce60e084018a61109e565b83810360408501526111e0818a61109e565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561123457835183529284019291840191600101611218565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561126157600080fd5b61126a886110f7565b9650611278602089016110f7565b95506040880135945060608801359350608088013560ff8116811461129c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156112cc57600080fd5b6112d5836110f7565b91506112e3602084016110f7565b90509250929050565b600181811c9082168061130057607f821691505b60208210810361132057634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561041b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220032864074dcac90a9b8186e95e61370c7efb95dabea071111e72945dbebddcb164736f6c63430008180033a264697066735822122072cf6431e9a4283c07420d582dd959cbc6c894033fb1900c417e95b9d0b17e2964736f6c63430008180033" +access(all) let erc20DeployerBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61243d806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000484565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000562565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002c9565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000644565b620002e1565b620001066200014236600462000644565b620003b3565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03163314620002255760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a204f6e6c60448201527f792064656c656761746564206465706c6f7965722063616e206465706c6f790060648201526084015b60405180910390fd5b600080546001600160a01b03168787878787604051620002459062000476565b6200025696959493929190620006b7565b604051809103906000f08015801562000273573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b7949392919062000740565b60405180910390a29695505050505050565b620002d3620003f7565b620002df600062000426565b565b620002eb620003f7565b6001600160a01b038116620003695760405162461bcd60e51b815260206004820152603f60248201527f466c6f7745564d4272696467656445524332304465706c6f7965723a20496e7660448201527f616c69642064656c656761746564206465706c6f79657220616464726573730060648201526084016200021c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003bd620003f7565b6001600160a01b038116620003e957604051631e4fbdf760e01b8152600060048201526024016200021c565b620003f48162000426565b50565b6000546001600160a01b03163314620002df5760405163118cdaa760e01b81523360048201526024016200021c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c6780620007a183390190565b6000602082840312156200049757600080fd5b81356001600160e01b031981168114620004b057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004df57600080fd5b813567ffffffffffffffff80821115620004fd57620004fd620004b7565b604051601f8301601f19908116603f01168101908282118183101715620005285762000528620004b7565b816040528381528660208588010111156200054257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057b57600080fd5b853567ffffffffffffffff808211156200059457600080fd5b620005a289838a01620004cd565b96506020880135915080821115620005b957600080fd5b620005c789838a01620004cd565b95506040880135915080821115620005de57600080fd5b620005ec89838a01620004cd565b945060608801359150808211156200060357600080fd5b6200061189838a01620004cd565b935060808801359150808211156200062857600080fd5b506200063788828901620004cd565b9150509295509295909350565b6000602082840312156200065757600080fd5b81356001600160a01b0381168114620004b057600080fd5b6000815180845260005b81811015620006975760208185018101518683018201520162000679565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006dd908301886200066f565b8281036040840152620006f181886200066f565b905082810360608401526200070781876200066f565b905082810360808401526200071d81866200066f565b905082810360a08401526200073381856200066f565b9998505050505050505050565b6080815260006200075560808301876200066f565b82810360208401526200076981876200066f565b905082810360408401526200077f81866200066f565b905082810360608401526200079581856200066f565b97965050505050505056fe6101606040523480156200001257600080fd5b5060405162001c6738038062001c6783398101604081905262000035916200036b565b858580604051806040016040528060018152602001603160f81b81525088888160039081620000659190620004ef565b506004620000748282620004ef565b506200008691508390506005620001b3565b6101205262000097816006620001b3565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200015f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200016a81620001ec565b50600c620001798582620004ef565b506009620001888482620004ef565b50600a620001978382620004ef565b50600b620001a68282620004ef565b5050505050505062000615565b6000602083511015620001d357620001cb836200023e565b9050620001e6565b81620001e08482620004ef565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f815111156200026c578260405163305a27a960e01b8152600401620001569190620005bb565b80516200027982620005f0565b179392505050565b80516001600160a01b03811681146200029957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002d1578181015183820152602001620002b7565b50506000910152565b600082601f830112620002ec57600080fd5b81516001600160401b03808211156200030957620003096200029e565b604051601f8301601f19908116603f011681019082821181831017156200033457620003346200029e565b816040528381528660208588010111156200034e57600080fd5b62000361846020830160208901620002b4565b9695505050505050565b60008060008060008060c087890312156200038557600080fd5b620003908762000281565b60208801519096506001600160401b0380821115620003ae57600080fd5b620003bc8a838b01620002da565b96506040890151915080821115620003d357600080fd5b620003e18a838b01620002da565b95506060890151915080821115620003f857600080fd5b620004068a838b01620002da565b945060808901519150808211156200041d57600080fd5b6200042b8a838b01620002da565b935060a08901519150808211156200044257600080fd5b506200045189828a01620002da565b9150509295509295509295565b600181811c908216806200047357607f821691505b6020821081036200049457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ea576000816000526020600020601f850160051c81016020861015620004c55750805b601f850160051c820191505b81811015620004e657828155600101620004d1565b5050505b505050565b81516001600160401b038111156200050b576200050b6200029e565b62000523816200051c84546200045e565b846200049a565b602080601f8311600181146200055b5760008415620005425750858301515b600019600386901b1c1916600185901b178555620004e6565b600085815260208120601f198616915b828110156200058c578886015182559484019460019091019084016200056b565b5085821015620005ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005dc816040850160208701620002b4565b601f01601f19169190910160400192915050565b80516020808301519190811015620004945760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516115f7620006706000396000610bd401526000610ba701526000610a6401526000610a3c01526000610997015260006109c1015260006109eb01526115f76000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063a76b4d5611610097578063d505accf11610071578063d505accf14610373578063dd62ed3e14610386578063e8a3d485146103bf578063f2fde38b146103c757600080fd5b8063a76b4d5614610345578063a9059cbb1461034d578063b84c82461461036057600080fd5b80638da5cb5b116100d35780638da5cb5b14610307578063938e3d7b1461032257806395d89b411461033557806397d9a1591461033d57600080fd5b806379cc6790146102c65780637ecebe00146102d957806384b0196e146102ec57600080fd5b80633644e5151161016657806342966c681161014057806342966c681461027a57806370a082311461028d578063715018a6146102b657806378c13082146102be57600080fd5b80633644e5151461025557806338e5d7b31461025d57806340c10f191461026557600080fd5b806318160ddd116101a257806318160ddd146102195780631a6228961461022b57806323b872dd14610233578063313ce5671461024657600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046110fa565b6103da565b60405190151581526020015b60405180910390f35b6101f961047d565b6040516101e89190611171565b6101dc6102143660046111a0565b61050f565b6002545b6040519081526020016101e8565b6101f9610527565b6101dc6102413660046111ca565b610536565b604051601281526020016101e8565b61021d61055a565b6101f9610569565b6102786102733660046111a0565b6105f7565b005b610278610288366004611206565b61060d565b61021d61029b36600461121f565b6001600160a01b031660009081526020819052604090205490565b61027861061a565b6101f961062e565b6102786102d43660046111a0565b61063b565b61021d6102e736600461121f565b610650565b6102f461066e565b6040516101e8979695949392919061123a565b6008546040516001600160a01b0390911681526020016101e8565b6102786103303660046112e9565b6106b4565b6101f96106c8565b6101f96106d7565b6101f96106e6565b6101dc61035b3660046111a0565b6106f3565b61027861036e3660046112e9565b610701565b61027861038136600461139a565b610712565b61021d61039436600461140d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f9610851565b6102786103d536600461121f565b610860565b60006001600160e01b031982166336372b0760e01b148061040b57506001600160e01b0319821663076b417f60e31b145b8061042657506001600160e01b03198216630704183b60e11b145b8061044157506001600160e01b03198216634ec7fbed60e11b145b8061045c57506001600160e01b03198216638dbb89cf60e01b145b8061047757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461048c90611440565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611440565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905090565b60003361051d81858561089b565b5060019392505050565b60606009805461048c90611440565b6000336105448582856108ad565b61054f85858561092b565b506001949350505050565b600061056461098a565b905090565b6009805461057690611440565b80601f01602080910402602001604051908101604052809291908181526020018280546105a290611440565b80156105ef5780601f106105c4576101008083540402835291602001916105ef565b820191906000526020600020905b8154815290600101906020018083116105d257829003601f168201915b505050505081565b6105ff610ab5565b6106098282610ae2565b5050565b6106173382610b18565b50565b610622610ab5565b61062c6000610b4e565b565b600a805461057690611440565b6106468233836108ad565b6106098282610b18565b6001600160a01b038116600090815260076020526040812054610477565b600060608060008060006060610682610ba0565b61068a610bcd565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6106bc610ab5565b600b61060982826114ca565b6060600c805461048c90611440565b6060600a805461048c90611440565b600b805461057690611440565b60003361051d81858561092b565b610709610ab5565b61061781610bfa565b8342111561073b5760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107888c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107e382610c06565b905060006107f382878787610c33565b9050896001600160a01b0316816001600160a01b03161461083a576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610732565b6108458a8a8a61089b565b50505050505050505050565b6060600b805461048c90611440565b610868610ab5565b6001600160a01b03811661089257604051631e4fbdf760e01b815260006004820152602401610732565b61061781610b4e565b6108a88383836001610c61565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610925578181101561091657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610732565b61092584848484036000610c61565b50505050565b6001600160a01b03831661095557604051634b637e8f60e11b815260006004820152602401610732565b6001600160a01b03821661097f5760405163ec442f0560e01b815260006004820152602401610732565b6108a8838383610d36565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156109e357507f000000000000000000000000000000000000000000000000000000000000000046145b15610a0d57507f000000000000000000000000000000000000000000000000000000000000000090565b610564604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b0316331461062c5760405163118cdaa760e01b8152336004820152602401610732565b6001600160a01b038216610b0c5760405163ec442f0560e01b815260006004820152602401610732565b61060960008383610d36565b6001600160a01b038216610b4257604051634b637e8f60e11b815260006004820152602401610732565b61060982600083610d36565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606105647f00000000000000000000000000000000000000000000000000000000000000006005610e60565b60606105647f00000000000000000000000000000000000000000000000000000000000000006006610e60565b600c61060982826114ca565b6000610477610c1361098a565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610c4588888888610f0b565b925092509250610c558282610fda565b50909695505050505050565b6001600160a01b038416610c8b5760405163e602df0560e01b815260006004820152602401610732565b6001600160a01b038316610cb557604051634a1406b160e11b815260006004820152602401610732565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561092557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2891815260200190565b60405180910390a350505050565b6001600160a01b038316610d61578060026000828254610d56919061158a565b90915550610dd39050565b6001600160a01b03831660009081526020819052604090205481811015610db45760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610732565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610def57600280548290039055610e0e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e5391815260200190565b60405180910390a3505050565b606060ff8314610e7a57610e7383611093565b9050610477565b818054610e8690611440565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb290611440565b8015610eff5780601f10610ed457610100808354040283529160200191610eff565b820191906000526020600020905b815481529060010190602001808311610ee257829003601f168201915b50505050509050610477565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f465750600091506003905082610fd0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f9a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610fc657506000925060019150829050610fd0565b9250600091508190505b9450945094915050565b6000826003811115610fee57610fee6115ab565b03610ff7575050565b600182600381111561100b5761100b6115ab565b036110295760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561103d5761103d6115ab565b0361105e5760405163fce698f760e01b815260048101829052602401610732565b6003826003811115611072576110726115ab565b03610609576040516335e2f38360e21b815260048101829052602401610732565b606060006110a0836110d2565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561047757604051632cd44ac360e21b815260040160405180910390fd5b60006020828403121561110c57600080fd5b81356001600160e01b03198116811461112457600080fd5b9392505050565b6000815180845260005b8181101561115157602081850181015186830182015201611135565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611124602083018461112b565b80356001600160a01b038116811461119b57600080fd5b919050565b600080604083850312156111b357600080fd5b6111bc83611184565b946020939093013593505050565b6000806000606084860312156111df57600080fd5b6111e884611184565b92506111f660208501611184565b9150604084013590509250925092565b60006020828403121561121857600080fd5b5035919050565b60006020828403121561123157600080fd5b61112482611184565b60ff60f81b881681526000602060e0602084015261125b60e084018a61112b565b838103604085015261126d818a61112b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156112c1578351835292840192918401916001016112a5565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156112fb57600080fd5b813567ffffffffffffffff8082111561131357600080fd5b818401915084601f83011261132757600080fd5b813581811115611339576113396112d3565b604051601f8201601f19908116603f01168101908382118183101715611361576113616112d3565b8160405282815287602084870101111561137a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080600080600080600060e0888a0312156113b557600080fd5b6113be88611184565b96506113cc60208901611184565b95506040880135945060608801359350608088013560ff811681146113f057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561142057600080fd5b61142983611184565b915061143760208401611184565b90509250929050565b600181811c9082168061145457607f821691505b60208210810361147457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108a8576000816000526020600020601f850160051c810160208610156114a35750805b601f850160051c820191505b818110156114c2578281556001016114af565b505050505050565b815167ffffffffffffffff8111156114e4576114e46112d3565b6114f8816114f28454611440565b8461147a565b602080601f83116001811461152d57600084156115155750858301515b600019600386901b1c1916600185901b1785556114c2565b600085815260208120601f198616915b8281101561155c5788860151825594840194600190910190840161153d565b508582101561157a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561047757634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea26469706673582212205925aa41f57e7f807e4f6f28f1a52085c0904a35c9a80771699e875e7c19ab3e64736f6c63430008180033a26469706673582212205b6b53df7c7e4ceae2b9ddb5724cebe40152e6f02e787328f765a5d78baec47764736f6c63430008180033" -access(all) let erc721DeployerBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612732806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000488565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000566565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002cb565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000648565b620002e3565b620001066200014236600462000648565b620003b7565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b0316331462000227576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a204f6e60448201527f6c792064656c656761746564206465706c6f7965722063616e206465706c6f7960648201526084015b60405180910390fd5b600080546001600160a01b0316878787878760405162000247906200047a565b6200025896959493929190620006bb565b604051809103906000f08015801562000275573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b9949392919062000744565b60405180910390a29695505050505050565b620002d5620003fb565b620002e160006200042a565b565b620002ed620003fb565b6001600160a01b0381166200036d576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a20496e60448201527f76616c69642064656c656761746564206465706c6f796572206164647265737360648201526084016200021e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003c1620003fb565b6001600160a01b038116620003ed57604051631e4fbdf760e01b8152600060048201526024016200021e565b620003f8816200042a565b50565b6000546001600160a01b03163314620002e15760405163118cdaa760e01b81523360048201526024016200021e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611f5880620007a583390190565b6000602082840312156200049b57600080fd5b81356001600160e01b031981168114620004b457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004e357600080fd5b813567ffffffffffffffff80821115620005015762000501620004bb565b604051601f8301601f19908116603f011681019082821181831017156200052c576200052c620004bb565b816040528381528660208588010111156200054657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057f57600080fd5b853567ffffffffffffffff808211156200059857600080fd5b620005a689838a01620004d1565b96506020880135915080821115620005bd57600080fd5b620005cb89838a01620004d1565b95506040880135915080821115620005e257600080fd5b620005f089838a01620004d1565b945060608801359150808211156200060757600080fd5b6200061589838a01620004d1565b935060808801359150808211156200062c57600080fd5b506200063b88828901620004d1565b9150509295509295909350565b6000602082840312156200065b57600080fd5b81356001600160a01b0381168114620004b457600080fd5b6000815180845260005b818110156200069b576020818501810151868301820152016200067d565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006e19083018862000673565b8281036040840152620006f5818862000673565b905082810360608401526200070b818762000673565b9050828103608084015262000721818662000673565b905082810360a084015262000737818562000673565b9998505050505050505050565b60808152600062000759608083018762000673565b82810360208401526200076d818762000673565b9050828103604084015262000783818662000673565b9050828103606084015262000799818562000673565b97965050505050505056fe60806040523480156200001157600080fd5b5060405162001f5838038062001f58833981016040819052620000349162000202565b858585600062000045838262000386565b50600162000054828262000386565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009181620000cb565b50600c620000a0848262000386565b50600d620000af838262000386565b50600e620000be828262000386565b5050505050505062000452565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200013557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016257600080fd5b81516001600160401b03808211156200017f576200017f6200013a565b604051601f8301601f19908116603f01168101908282118183101715620001aa57620001aa6200013a565b8160405283815260209250866020858801011115620001c857600080fd5b600091505b83821015620001ec5785820183015181830184015290820190620001cd565b6000602085830101528094505050505092915050565b60008060008060008060c087890312156200021c57600080fd5b62000227876200011d565b60208801519096506001600160401b03808211156200024557600080fd5b620002538a838b0162000150565b965060408901519150808211156200026a57600080fd5b620002788a838b0162000150565b955060608901519150808211156200028f57600080fd5b6200029d8a838b0162000150565b94506080890151915080821115620002b457600080fd5b620002c28a838b0162000150565b935060a0890151915080821115620002d957600080fd5b50620002e889828a0162000150565b9150509295509295509295565b600181811c908216806200030a57607f821691505b6020821081036200032b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000381576000816000526020600020601f850160051c810160208610156200035c5750805b601f850160051c820191505b818110156200037d5782815560010162000368565b5050505b505050565b81516001600160401b03811115620003a257620003a26200013a565b620003ba81620003b38454620002f5565b8462000331565b602080601f831160018114620003f25760008415620003d95750858301515b600019600386901b1c1916600185901b1785556200037d565b600085815260208120601f198616915b82811015620004235788860151825594840194600190910190840162000402565b5085821015620004425787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611af680620004626000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806366bd8dc011610104578063a76b4d56116100a2578063cd279c7c11610071578063cd279c7c146103a8578063e8a3d485146103bb578063e985e9c5146103c3578063f2fde38b146103d657600080fd5b8063a76b4d5614610372578063b88d4fde1461037a578063bef43b9d1461038d578063c87b56dd1461039557600080fd5b80638da5cb5b116100de5780638da5cb5b1461033e57806395d89b411461034f57806397d9a15914610357578063a22cb4651461035f57600080fd5b806366bd8dc01461031b57806370a0823114610323578063715018a61461033657600080fd5b806323b872dd1161017157806342966c681161014b57806342966c68146102b75780634f558e79146102ca5780634f6ccce7146102f55780636352211e1461030857600080fd5b806323b872dd1461027e5780632f745c591461029157806342842e0e146102a457600080fd5b8063095ea7b3116101ad578063095ea7b31461023c57806318160ddd1461025157806318e97fd1146102635780631a6228961461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611535565b6103e9565b60405190151581526020015b60405180910390f35b61020461049b565b6040516101f391906115a2565b61022461021f3660046115b5565b61052d565b6040516001600160a01b0390911681526020016101f3565b61024f61024a3660046115ea565b610556565b005b6009545b6040519081526020016101f3565b61024f6102713660046116c0565b610565565b610204610577565b61024f61028c366004611707565b610586565b61025561029f3660046115ea565b610616565b61024f6102b2366004611707565b61067b565b61024f6102c53660046115b5565b61069b565b6101e76102d83660046115b5565b6000908152600260205260409020546001600160a01b0316151590565b6102556103033660046115b5565b6106a7565b6102246103163660046115b5565b610700565b61020461070b565b610255610331366004611743565b610799565b61024f6107e1565b600b546001600160a01b0316610224565b6102046107f5565b610204610804565b61024f61036d36600461175e565b610813565b61020461081e565b61024f61038836600461179a565b61082b565b610204610842565b6102046103a33660046115b5565b61084f565b61024f6103b6366004611816565b61085a565b610204610876565b6101e76103d136600461186d565b610885565b61024f6103e4366004611743565b6108b3565b60006001600160e01b031982166301ffc9a760e01b148061041a57506001600160e01b03198216635b5e139f60e01b145b8061043557506001600160e01b0319821663780e9d6360e01b145b8061045057506001600160e01b03198216630852cd8d60e31b145b8061046b57506001600160e01b03198216630704183b60e11b145b8061048657506001600160e01b03198216638dbb89cf60e01b145b806104955750610495826108f1565b92915050565b6060600080546104aa906118a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104d6906118a0565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b5050505050905090565b600061053882610916565b506000828152600460205260409020546001600160a01b0316610495565b61056182823361094f565b5050565b61056d61095c565b6105618282610989565b6060600c80546104aa906118a0565b6001600160a01b0382166105b557604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105c28383336109d9565b9050836001600160a01b0316816001600160a01b031614610610576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105ac565b50505050565b600061062183610799565b82106106525760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105ac565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6106968383836040518060200160405280600081525061082b565b505050565b610561600082336109d9565b60006106b260095490565b82106106db5760405163295f44f760e21b815260006004820152602481018390526044016105ac565b600982815481106106ee576106ee6118da565b90600052602060002001549050919050565b600061049582610916565b600c8054610718906118a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610744906118a0565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b505050505081565b60006001600160a01b0382166107c5576040516322718ad960e21b8152600060048201526024016105ac565b506001600160a01b031660009081526003602052604090205490565b6107e961095c565b6107f360006109ee565b565b6060600180546104aa906118a0565b6060600d80546104aa906118a0565b610561338383610a40565b600e8054610718906118a0565b610836848484610586565b61061084848484610adf565b600d8054610718906118a0565b606061049582610c08565b61086261095c565b61086c8383610d11565b6106968282610989565b6060600e80546104aa906118a0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6108bb61095c565b6001600160a01b0381166108e557604051631e4fbdf760e01b8152600060048201526024016105ac565b6108ee816109ee565b50565b60006001600160e01b0319821663780e9d6360e01b1480610495575061049582610d2b565b6000818152600260205260408120546001600160a01b03168061049557604051637e27328960e01b8152600481018490526024016105ac565b6106968383836001610d50565b600b546001600160a01b031633146107f35760405163118cdaa760e01b81523360048201526024016105ac565b60008281526006602052604090206109a18282611940565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006109e6848484610e56565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610a7257604051630b61174360e31b81526001600160a01b03831660048201526024016105ac565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561061057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610b21903390889087908790600401611a00565b6020604051808303816000875af1925050508015610b5c575060408051601f3d908101601f19168201909252610b5991810190611a3d565b60015b610bc5573d808015610b8a576040519150601f19603f3d011682016040523d82523d6000602084013e610b8f565b606091505b508051600003610bbd57604051633250574960e11b81526001600160a01b03851660048201526024016105ac565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610c0157604051633250574960e11b81526001600160a01b03851660048201526024016105ac565b5050505050565b6060610c1382610916565b5060008281526006602052604081208054610c2d906118a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c59906118a0565b8015610ca65780601f10610c7b57610100808354040283529160200191610ca6565b820191906000526020600020905b815481529060010190602001808311610c8957829003601f168201915b505050505090506000610cc460408051602081019091526000815290565b90508051600003610cd6575092915050565b815115610d08578082604051602001610cf0929190611a5a565b60405160208183030381529060405292505050919050565b6109e684610f23565b610561828260405180602001604052806000815250610f98565b60006001600160e01b03198216632483248360e11b1480610495575061049582610faf565b8080610d6457506001600160a01b03821615155b15610e26576000610d7484610916565b90506001600160a01b03831615801590610da05750826001600160a01b0316816001600160a01b031614155b8015610db35750610db18184610885565b155b15610ddc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105ac565b8115610e245783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e64858585610fff565b90506001600160a01b038116610ec157610ebc84600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b610ee4565b846001600160a01b0316816001600160a01b031614610ee457610ee481856110f8565b6001600160a01b038516610f0057610efb84611189565b6109e6565b846001600160a01b0316816001600160a01b0316146109e6576109e68585611238565b6060610f2e82610916565b506000610f4660408051602081019091526000815290565b90506000815111610f665760405180602001604052806000815250610f91565b80610f7084611288565b604051602001610f81929190611a5a565b6040516020818303038152906040525b9392505050565b610fa2838361131b565b6106966000848484610adf565b60006001600160e01b031982166380ac58cd60e01b1480610fe057506001600160e01b03198216635b5e139f60e01b145b8061049557506301ffc9a760e01b6001600160e01b0319831614610495565b6000828152600260205260408120546001600160a01b039081169083161561102c5761102c818486611380565b6001600160a01b0381161561106a57611049600085600080610d50565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611099576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061110383610799565b600083815260086020526040902054909150808214611156576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061119b90600190611a89565b6000838152600a6020526040812054600980549394509092849081106111c3576111c36118da565b9060005260206000200154905080600983815481106111e4576111e46118da565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061121c5761121c611aaa565b6001900381819060005260206000200160009055905550505050565b6000600161124584610799565b61124f9190611a89565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b60606000611295836113e4565b600101905060008167ffffffffffffffff8111156112b5576112b5611614565b6040519080825280601f01601f1916602001820160405280156112df576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846112e957509392505050565b6001600160a01b03821661134557604051633250574960e11b8152600060048201526024016105ac565b6000611353838360006109d9565b90506001600160a01b03811615610696576040516339e3563760e11b8152600060048201526024016105ac565b61138b8383836114bc565b610696576001600160a01b0383166113b957604051637e27328960e01b8152600481018290526024016105ac565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105ac565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106114235772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061144f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061146d57662386f26fc10000830492506010015b6305f5e1008310611485576305f5e100830492506008015b612710831061149957612710830492506004015b606483106114ab576064830492506002015b600a83106104955760010192915050565b60006001600160a01b038316158015906109e65750826001600160a01b0316846001600160a01b031614806114f657506114f68484610885565b806109e65750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b0319811681146108ee57600080fd5b60006020828403121561154757600080fd5b8135610f918161151f565b60005b8381101561156d578181015183820152602001611555565b50506000910152565b6000815180845261158e816020860160208601611552565b601f01601f19169290920160200192915050565b602081526000610f916020830184611576565b6000602082840312156115c757600080fd5b5035919050565b80356001600160a01b03811681146115e557600080fd5b919050565b600080604083850312156115fd57600080fd5b611606836115ce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561164557611645611614565b604051601f8501601f19908116603f0116810190828211818310171561166d5761166d611614565b8160405280935085815286868601111561168657600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126116b157600080fd5b610f918383356020850161162a565b600080604083850312156116d357600080fd5b82359150602083013567ffffffffffffffff8111156116f157600080fd5b6116fd858286016116a0565b9150509250929050565b60008060006060848603121561171c57600080fd5b611725846115ce565b9250611733602085016115ce565b9150604084013590509250925092565b60006020828403121561175557600080fd5b610f91826115ce565b6000806040838503121561177157600080fd5b61177a836115ce565b91506020830135801515811461178f57600080fd5b809150509250929050565b600080600080608085870312156117b057600080fd5b6117b9856115ce565b93506117c7602086016115ce565b925060408501359150606085013567ffffffffffffffff8111156117ea57600080fd5b8501601f810187136117fb57600080fd5b61180a8782356020840161162a565b91505092959194509250565b60008060006060848603121561182b57600080fd5b611834846115ce565b925060208401359150604084013567ffffffffffffffff81111561185757600080fd5b611863868287016116a0565b9150509250925092565b6000806040838503121561188057600080fd5b611889836115ce565b9150611897602084016115ce565b90509250929050565b600181811c908216806118b457607f821691505b6020821081036118d457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f821115610696576000816000526020600020601f850160051c810160208610156119195750805b601f850160051c820191505b8181101561193857828155600101611925565b505050505050565b815167ffffffffffffffff81111561195a5761195a611614565b61196e8161196884546118a0565b846118f0565b602080601f8311600181146119a3576000841561198b5750858301515b600019600386901b1c1916600185901b178555611938565b600085815260208120601f198616915b828110156119d2578886015182559484019460019091019084016119b3565b50858210156119f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611a3390830184611576565b9695505050505050565b600060208284031215611a4f57600080fd5b8151610f918161151f565b60008351611a6c818460208801611552565b835190830190611a80818360208801611552565b01949350505050565b8181038181111561049557634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122065ff7beb447ca14fd56b871e63b2ee2ad2b81577c507c1d9dae77e2a2b3163de64736f6c63430008180033a2646970667358221220738af3cfcac8482b0a8eaad746d32575d2e034218f30b6ec8732902f10c7fced64736f6c63430008180033" +access(all) let erc721DeployerBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6127b1806100a56000396000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a614620000fc5780638da5cb5b1462000108578063ee2d8496146200011a578063f2fde38b146200013157600080fd5b806301ffc9a7146200008c578063476d399714620000b85780636418e6de14620000e8575b600080fd5b620000a36200009d36600462000488565b62000148565b60405190151581526020015b60405180910390f35b620000cf620000c936600462000566565b6200019c565b6040516001600160a01b039091168152602001620000af565b600154620000cf906001600160a01b031681565b62000106620002cb565b005b6000546001600160a01b0316620000cf565b620001066200012b36600462000648565b620002e3565b620001066200014236600462000648565b620003b7565b60006001600160e01b0319821663476d399760e01b14806200017a57506001600160e01b03198216630704183b60e11b145b806200019657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b0316331462000227576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a204f6e60448201527f6c792064656c656761746564206465706c6f7965722063616e206465706c6f7960648201526084015b60405180910390fd5b600080546001600160a01b0316878787878760405162000247906200047a565b6200025896959493929190620006bb565b604051809103906000f08015801562000275573d6000803e3d6000fd5b509050806001600160a01b03167fac166d2e64b2aaf94e9dfc7205dc17bc2a537b28fab78dfb70d79325657a8d3f88888888604051620002b9949392919062000744565b60405180910390a29695505050505050565b620002d5620003fb565b620002e160006200042a565b565b620002ed620003fb565b6001600160a01b0381166200036d576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d427269646765644552433732314465706c6f7965723a20496e60448201527f76616c69642064656c656761746564206465706c6f796572206164647265737360648201526084016200021e565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc553df5d2803898b31fac480ec2b45d67b73294d4c94a93f069f47400f76bdbb90600090a250565b620003c1620003fb565b6001600160a01b038116620003ed57604051631e4fbdf760e01b8152600060048201526024016200021e565b620003f8816200042a565b50565b6000546001600160a01b03163314620002e15760405163118cdaa760e01b81523360048201526024016200021e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611fd780620007a583390190565b6000602082840312156200049b57600080fd5b81356001600160e01b031981168114620004b457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004e357600080fd5b813567ffffffffffffffff80821115620005015762000501620004bb565b604051601f8301601f19908116603f011681019082821181831017156200052c576200052c620004bb565b816040528381528660208588010111156200054657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156200057f57600080fd5b853567ffffffffffffffff808211156200059857600080fd5b620005a689838a01620004d1565b96506020880135915080821115620005bd57600080fd5b620005cb89838a01620004d1565b95506040880135915080821115620005e257600080fd5b620005f089838a01620004d1565b945060608801359150808211156200060757600080fd5b6200061589838a01620004d1565b935060808801359150808211156200062c57600080fd5b506200063b88828901620004d1565b9150509295509295909350565b6000602082840312156200065b57600080fd5b81356001600160a01b0381168114620004b457600080fd5b6000815180845260005b818110156200069b576020818501810151868301820152016200067d565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038716815260c060208201819052600090620006e19083018862000673565b8281036040840152620006f5818862000673565b905082810360608401526200070b818762000673565b9050828103608084015262000721818662000673565b905082810360a084015262000737818562000673565b9998505050505050505050565b60808152600062000759608083018762000673565b82810360208401526200076d818762000673565b9050828103604084015262000783818662000673565b9050828103606084015262000799818562000673565b97965050505050505056fe60806040523480156200001157600080fd5b5060405162001fd738038062001fd7833981016040819052620000349162000211565b858585600062000045838262000395565b50600162000054828262000395565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009181620000da565b50600f620000a0858262000395565b50600c620000af848262000395565b50600d620000be838262000395565b50600e620000cd828262000395565b5050505050505062000461565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017157600080fd5b81516001600160401b03808211156200018e576200018e62000149565b604051601f8301601f19908116603f01168101908282118183101715620001b957620001b962000149565b8160405283815260209250866020858801011115620001d757600080fd5b600091505b83821015620001fb5785820183015181830184015290820190620001dc565b6000602085830101528094505050505092915050565b60008060008060008060c087890312156200022b57600080fd5b62000236876200012c565b60208801519096506001600160401b03808211156200025457600080fd5b620002628a838b016200015f565b965060408901519150808211156200027957600080fd5b620002878a838b016200015f565b955060608901519150808211156200029e57600080fd5b620002ac8a838b016200015f565b94506080890151915080821115620002c357600080fd5b620002d18a838b016200015f565b935060a0890151915080821115620002e857600080fd5b50620002f789828a016200015f565b9150509295509295509295565b600181811c908216806200031957607f821691505b6020821081036200033a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000390576000816000526020600020601f850160051c810160208610156200036b5750805b601f850160051c820191505b818110156200038c5782815560010162000377565b5050505b505050565b81516001600160401b03811115620003b157620003b162000149565b620003c981620003c2845462000304565b8462000340565b602080601f831160018114620004015760008415620003e85750858301515b600019600386901b1c1916600185901b1785556200038c565b600085815260208120601f198616915b82811015620004325788860151825594840194600190910190840162000411565b5085821015620004515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611b6680620004716000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063b84c8246116100a2578063cd279c7c11610071578063cd279c7c146103c6578063e8a3d485146103d9578063e985e9c5146103e1578063f2fde38b146103f457600080fd5b8063b84c824614610385578063b88d4fde14610398578063bef43b9d146103ab578063c87b56dd146103b357600080fd5b806395d89b41116100de57806395d89b411461035a57806397d9a15914610362578063a22cb4651461036a578063a76b4d561461037d57600080fd5b806370a082311461032e578063715018a6146103415780638da5cb5b1461034957600080fd5b806323b872dd1161017c5780634f558e791161014b5780634f558e79146102d55780634f6ccce7146103005780636352211e1461031357806366bd8dc01461032657600080fd5b806323b872dd146102895780632f745c591461029c57806342842e0e146102af57806342966c68146102c257600080fd5b8063095ea7b3116101b8578063095ea7b31461024757806318160ddd1461025c57806318e97fd11461026e5780631a6228961461028157600080fd5b806301ffc9a7146101df57806306fdde0314610207578063081812fc1461021c575b600080fd5b6101f26101ed366004611570565b610407565b60405190151581526020015b60405180910390f35b61020f6104b9565b6040516101fe91906115dd565b61022f61022a3660046115f0565b61054b565b6040516001600160a01b0390911681526020016101fe565b61025a610255366004611625565b610574565b005b6009545b6040519081526020016101fe565b61025a61027c3660046116fb565b610583565b61020f610595565b61025a610297366004611742565b6105a4565b6102606102aa366004611625565b610634565b61025a6102bd366004611742565b610699565b61025a6102d03660046115f0565b6106b9565b6101f26102e33660046115f0565b6000908152600260205260409020546001600160a01b0316151590565b61026061030e3660046115f0565b6106c5565b61022f6103213660046115f0565b61071e565b61020f610729565b61026061033c36600461177e565b6107b7565b61025a6107ff565b600b546001600160a01b031661022f565b61020f610813565b61020f610822565b61025a610378366004611799565b610831565b61020f61083c565b61025a6103933660046117d5565b610849565b61025a6103a636600461180a565b61085d565b61020f610874565b61020f6103c13660046115f0565b610881565b61025a6103d4366004611886565b61088c565b61020f6108a8565b6101f26103ef3660046118dd565b6108b7565b61025a61040236600461177e565b6108e5565b60006001600160e01b031982166301ffc9a760e01b148061043857506001600160e01b03198216635b5e139f60e01b145b8061045357506001600160e01b0319821663780e9d6360e01b145b8061046e57506001600160e01b03198216630852cd8d60e31b145b8061048957506001600160e01b03198216630704183b60e11b145b806104a457506001600160e01b03198216638dbb89cf60e01b145b806104b357506104b382610920565b92915050565b6060600080546104c890611910565b80601f01602080910402602001604051908101604052809291908181526020018280546104f490611910565b80156105415780601f1061051657610100808354040283529160200191610541565b820191906000526020600020905b81548152906001019060200180831161052457829003601f168201915b5050505050905090565b600061055682610945565b506000828152600460205260409020546001600160a01b03166104b3565b61057f82823361097e565b5050565b61058b61098b565b61057f82826109b8565b6060600c80546104c890611910565b6001600160a01b0382166105d357604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105e0838333610a08565b9050836001600160a01b0316816001600160a01b03161461062e576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105ca565b50505050565b600061063f836107b7565b82106106705760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105ca565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6106b48383836040518060200160405280600081525061085d565b505050565b61057f60008233610a08565b60006106d060095490565b82106106f95760405163295f44f760e21b815260006004820152602481018390526044016105ca565b6009828154811061070c5761070c61194a565b90600052602060002001549050919050565b60006104b382610945565b600c805461073690611910565b80601f016020809104026020016040519081016040528092919081815260200182805461076290611910565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b505050505081565b60006001600160a01b0382166107e3576040516322718ad960e21b8152600060048201526024016105ca565b506001600160a01b031660009081526003602052604090205490565b61080761098b565b6108116000610a1d565b565b6060600f80546104c890611910565b6060600d80546104c890611910565b61057f338383610a6f565b600e805461073690611910565b61085161098b565b61085a81610b0e565b50565b6108688484846105a4565b61062e84848484610b1a565b600d805461073690611910565b60606104b382610c43565b61089461098b565b61089e8383610d4c565b6106b482826109b8565b6060600e80546104c890611910565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6108ed61098b565b6001600160a01b03811661091757604051631e4fbdf760e01b8152600060048201526024016105ca565b61085a81610a1d565b60006001600160e01b0319821663780e9d6360e01b14806104b357506104b382610d66565b6000818152600260205260408120546001600160a01b0316806104b357604051637e27328960e01b8152600481018490526024016105ca565b6106b48383836001610d8b565b600b546001600160a01b031633146108115760405163118cdaa760e01b81523360048201526024016105ca565b60008281526006602052604090206109d082826119b0565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000610a15848484610e91565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610aa157604051630b61174360e31b81526001600160a01b03831660048201526024016105ca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600f61057f82826119b0565b6001600160a01b0383163b1561062e57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610b5c903390889087908790600401611a70565b6020604051808303816000875af1925050508015610b97575060408051601f3d908101601f19168201909252610b9491810190611aad565b60015b610c00573d808015610bc5576040519150601f19603f3d011682016040523d82523d6000602084013e610bca565b606091505b508051600003610bf857604051633250574960e11b81526001600160a01b03851660048201526024016105ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610c3c57604051633250574960e11b81526001600160a01b03851660048201526024016105ca565b5050505050565b6060610c4e82610945565b5060008281526006602052604081208054610c6890611910565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9490611910565b8015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b505050505090506000610cff60408051602081019091526000815290565b90508051600003610d11575092915050565b815115610d43578082604051602001610d2b929190611aca565b60405160208183030381529060405292505050919050565b610a1584610f5e565b61057f828260405180602001604052806000815250610fd3565b60006001600160e01b03198216632483248360e11b14806104b357506104b382610fea565b8080610d9f57506001600160a01b03821615155b15610e61576000610daf84610945565b90506001600160a01b03831615801590610ddb5750826001600160a01b0316816001600160a01b031614155b8015610dee5750610dec81846108b7565b155b15610e175760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105ca565b8115610e5f5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e9f85858561103a565b90506001600160a01b038116610efc57610ef784600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b610f1f565b846001600160a01b0316816001600160a01b031614610f1f57610f1f8185611133565b6001600160a01b038516610f3b57610f36846111c4565b610a15565b846001600160a01b0316816001600160a01b031614610a1557610a158585611273565b6060610f6982610945565b506000610f8160408051602081019091526000815290565b90506000815111610fa15760405180602001604052806000815250610fcc565b80610fab846112c3565b604051602001610fbc929190611aca565b6040516020818303038152906040525b9392505050565b610fdd8383611356565b6106b46000848484610b1a565b60006001600160e01b031982166380ac58cd60e01b148061101b57506001600160e01b03198216635b5e139f60e01b145b806104b357506301ffc9a760e01b6001600160e01b03198316146104b3565b6000828152600260205260408120546001600160a01b0390811690831615611067576110678184866113bb565b6001600160a01b038116156110a557611084600085600080610d8b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156110d4576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061113e836107b7565b600083815260086020526040902054909150808214611191576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906111d690600190611af9565b6000838152600a6020526040812054600980549394509092849081106111fe576111fe61194a565b90600052602060002001549050806009838154811061121f5761121f61194a565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061125757611257611b1a565b6001900381819060005260206000200160009055905550505050565b60006001611280846107b7565b61128a9190611af9565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b606060006112d08361141f565b600101905060008167ffffffffffffffff8111156112f0576112f061164f565b6040519080825280601f01601f19166020018201604052801561131a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461132457509392505050565b6001600160a01b03821661138057604051633250574960e11b8152600060048201526024016105ca565b600061138e83836000610a08565b90506001600160a01b038116156106b4576040516339e3563760e11b8152600060048201526024016105ca565b6113c68383836114f7565b6106b4576001600160a01b0383166113f457604051637e27328960e01b8152600481018290526024016105ca565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105ca565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061145e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061148a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106114a857662386f26fc10000830492506010015b6305f5e10083106114c0576305f5e100830492506008015b61271083106114d457612710830492506004015b606483106114e6576064830492506002015b600a83106104b35760010192915050565b60006001600160a01b03831615801590610a155750826001600160a01b0316846001600160a01b03161480611531575061153184846108b7565b80610a155750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461085a57600080fd5b60006020828403121561158257600080fd5b8135610fcc8161155a565b60005b838110156115a8578181015183820152602001611590565b50506000910152565b600081518084526115c981602086016020860161158d565b601f01601f19169290920160200192915050565b602081526000610fcc60208301846115b1565b60006020828403121561160257600080fd5b5035919050565b80356001600160a01b038116811461162057600080fd5b919050565b6000806040838503121561163857600080fd5b61164183611609565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116805761168061164f565b604051601f8501601f19908116603f011681019082821181831017156116a8576116a861164f565b816040528093508581528686860111156116c157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126116ec57600080fd5b610fcc83833560208501611665565b6000806040838503121561170e57600080fd5b82359150602083013567ffffffffffffffff81111561172c57600080fd5b611738858286016116db565b9150509250929050565b60008060006060848603121561175757600080fd5b61176084611609565b925061176e60208501611609565b9150604084013590509250925092565b60006020828403121561179057600080fd5b610fcc82611609565b600080604083850312156117ac57600080fd5b6117b583611609565b9150602083013580151581146117ca57600080fd5b809150509250929050565b6000602082840312156117e757600080fd5b813567ffffffffffffffff8111156117fe57600080fd5b610a15848285016116db565b6000806000806080858703121561182057600080fd5b61182985611609565b935061183760208601611609565b925060408501359150606085013567ffffffffffffffff81111561185a57600080fd5b8501601f8101871361186b57600080fd5b61187a87823560208401611665565b91505092959194509250565b60008060006060848603121561189b57600080fd5b6118a484611609565b925060208401359150604084013567ffffffffffffffff8111156118c757600080fd5b6118d3868287016116db565b9150509250925092565b600080604083850312156118f057600080fd5b6118f983611609565b915061190760208401611609565b90509250929050565b600181811c9082168061192457607f821691505b60208210810361194457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f8211156106b4576000816000526020600020601f850160051c810160208610156119895750805b601f850160051c820191505b818110156119a857828155600101611995565b505050505050565b815167ffffffffffffffff8111156119ca576119ca61164f565b6119de816119d88454611910565b84611960565b602080601f831160018114611a1357600084156119fb5750858301515b600019600386901b1c1916600185901b1785556119a8565b600085815260208120601f198616915b82811015611a4257888601518255948401946001909101908401611a23565b5085821015611a605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611aa3908301846115b1565b9695505050505050565b600060208284031215611abf57600080fd5b8151610fcc8161155a565b60008351611adc81846020880161158d565b835190830190611af081836020880161158d565b01949350505050565b818103818111156104b357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e708ad8174a5df5c602c7a68f8ef19d0343c901a0800a36618542be68d6a333264736f6c63430008180033a264697066735822122073f5f1bfe1177c16816d43f4e0bbf2615d36fb452254b7ac865fb27f1e426de364736f6c63430008180033" access(all) let registryBytecode = "608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610058565b50600080546001600160a01b031916331790556100aa565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610bbd806100b96000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063862119ae11610071578063862119ae146101315780638da5cb5b14610144578063a6de610514610155578063b3d5dbdc14610168578063f2fde38b14610188578063faab9d391461019b57600080fd5b806301ffc9a7146100ae57806304433bbc146100d65780632b20e39714610101578063522791d114610114578063715018a614610129575b600080fd5b6100c16100bc366004610833565b6101ae565b60405190151581526020015b60405180910390f35b6100e96100e4366004610907565b6101e5565b6040516001600160a01b0390911681526020016100cd565b6000546100e9906001600160a01b031681565b610127610122366004610960565b610216565b005b6101276102b7565b6100c161013f366004610907565b6102cb565b6003546001600160a01b03166100e9565b6100c16101633660046109ae565b610308565b61017b6101763660046109ae565b610334565b6040516100cd91906109ed565b6101276101963660046109ae565b6103e0565b6101276101a93660046109ae565b61041e565b60006001600160e01b0319821663976998cb60e01b14806101df57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006001826040516101f79190610a20565b908152604051908190036020019020546001600160a01b031692915050565b6000546001600160a01b031633146102a95760405162461bcd60e51b815260206004820152604560248201527f466c6f774272696467654465706c6f796d656e7452656769737472793a204f6e60448201527f6c79207265676973747261722063616e207265676973746572206173736f636960648201526430ba34b7b760d91b608482015260a4015b60405180910390fd5b6102b3828261042f565b5050565b6102bf6106fd565b6102c9600061072a565b565b6000806001600160a01b03166001836040516102e79190610a20565b908152604051908190036020019020546001600160a01b0316141592915050565b6001600160a01b0381166000908152600260205260408120805461032b90610a3c565b15159392505050565b6001600160a01b038116600090815260026020526040902080546060919061035b90610a3c565b80601f016020809104026020016040519081016040528092919081815260200182805461038790610a3c565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b50505050509050919050565b6103e86106fd565b6001600160a01b03811661041257604051631e4fbdf760e01b8152600060048201526024016102a0565b61041b8161072a565b50565b6104266106fd565b61041b8161077c565b6001600160a01b0381166104ab5760405162461bcd60e51b815260206004820152603760248201527f466c6f7745564d4465706c6f796d656e7452656769737472793a20436f6e747260448201527f61637420616464726573732063616e6e6f74206265203000000000000000000060648201526084016102a0565b81516000036105225760405162461bcd60e51b815260206004820152603d60248201527f466c6f7745564d4465706c6f796d656e7452656769737472793a20436164656e60448201527f6365206964656e7469666965722063616e6e6f7420626520656d70747900000060648201526084016102a0565b60006001600160a01b031660018360405161053d9190610a20565b908152604051908190036020019020546001600160a01b0316146105cb576040805162461bcd60e51b81526020600482015260248101919091527f466c6f7745564d4465706c6f796d656e7452656769737472793a20436164656e60448201527f6365206964656e74696669657220616c7265616479207265676973746572656460648201526084016102a0565b6001600160a01b038116600090815260026020526040902080546105ee90610a3c565b1590506106635760405162461bcd60e51b815260206004820152603e60248201527f466c6f7745564d4465706c6f796d656e7452656769737472793a20436f6e747260448201527f616374206164647265737320616c72656164792072656769737465726564000060648201526084016102a0565b806001836040516106749190610a20565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b0394851617905591831660009081526002909152206106b78382610ac7565b50806001600160a01b03167f25d7ffc1de7be1c9b0762be63022756c4773f73211c044d668da6bbcba3e7f14836040516106f191906109ed565b60405180910390a25050565b6003546001600160a01b031633146102c95760405163118cdaa760e01b81523360048201526024016102a0565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166107eb5760405162461bcd60e51b815260206004820152603060248201527f466c6f7745564d4465706c6f796d656e7452656769737472793a20526567697360448201526f0747261722063616e6e6f7420626520360841b60648201526084016102a0565b600080546001600160a01b0319166001600160a01b038316908117825560405190917ff90b3304151c89847ba28c08c86e9391dd12ef3a402cba7d3728776a36f29d1191a250565b60006020828403121561084557600080fd5b81356001600160e01b03198116811461085d57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261088b57600080fd5b813567ffffffffffffffff808211156108a6576108a6610864565b604051601f8301601f19908116603f011681019082821181831017156108ce576108ce610864565b816040528381528660208588010111156108e757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091957600080fd5b813567ffffffffffffffff81111561093057600080fd5b61093c8482850161087a565b949350505050565b80356001600160a01b038116811461095b57600080fd5b919050565b6000806040838503121561097357600080fd5b823567ffffffffffffffff81111561098a57600080fd5b6109968582860161087a565b9250506109a560208401610944565b90509250929050565b6000602082840312156109c057600080fd5b61085d82610944565b60005b838110156109e45781810151838201526020016109cc565b50506000910152565b6020815260008251806020840152610a0c8160408501602087016109c9565b601f01601f19169190910160400192915050565b60008251610a328184602087016109c9565b9190910192915050565b600181811c90821680610a5057607f821691505b602082108103610a7057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610ac2576000816000526020600020601f850160051c81016020861015610a9f5750805b601f850160051c820191505b81811015610abe57828155600101610aab565b5050505b505050565b815167ffffffffffffffff811115610ae157610ae1610864565b610af581610aef8454610a3c565b84610a76565b602080601f831160018114610b2a5760008415610b125750858301515b600019600386901b1c1916600185901b178555610abe565b600085815260208120601f198616915b82811015610b5957888601518255948401946001909101908401610b3a565b5085821015610b775787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212207bc4fe07fbc245f342675c43729c0cf0da0a7b16d24fef9f2aac1a401e334c8964736f6c63430008180033" diff --git a/solidity/src/templates/FlowEVMBridgedERC20.sol b/solidity/src/templates/FlowEVMBridgedERC20.sol index 9ec8a77a..659f6475 100644 --- a/solidity/src/templates/FlowEVMBridgedERC20.sol +++ b/solidity/src/templates/FlowEVMBridgedERC20.sol @@ -15,14 +15,17 @@ contract FlowEVMBridgedERC20 is ERC165, ERC20, ERC20Burnable, ERC20Permit, Ownab string public cadenceTokenIdentifier; string public contractMetadata; + string private _customSymbol; + constructor( address owner, - string memory name, - string memory symbol, + string memory name_, + string memory symbol_, string memory _cadenceTokenAddress, string memory _cadenceTokenIdentifier, string memory _contractMetadata - ) ERC20(name, symbol) Ownable(owner) ERC20Permit(name) { + ) ERC20(name_, symbol_) Ownable(owner) ERC20Permit(name_) { + _customSymbol = symbol_; cadenceTokenAddress = _cadenceTokenAddress; cadenceTokenIdentifier = _cadenceTokenIdentifier; contractMetadata = _contractMetadata; @@ -36,17 +39,33 @@ contract FlowEVMBridgedERC20 is ERC165, ERC20, ERC20Burnable, ERC20Permit, Ownab return cadenceTokenIdentifier; } - function mint(address to, uint256 amount) public onlyOwner { - _mint(to, amount); + function symbol() public view override returns (string memory) { + return _customSymbol; } function contractURI() public view returns (string memory) { return contractMetadata; } + function mint(address to, uint256 amount) public onlyOwner { + _mint(to, amount); + } + + function setSymbol(string memory newSymbol) public onlyOwner { + _setSymbol(newSymbol); + } + + function setContractURI(string memory newContractURI) public onlyOwner { + contractMetadata = newContractURI; + } + function supportsInterface(bytes4 interfaceId) public view override(ERC165) returns (bool) { return interfaceId == type(IERC20).interfaceId || interfaceId == type(ERC20Burnable).interfaceId || interfaceId == type(Ownable).interfaceId || interfaceId == type(ERC20Permit).interfaceId || interfaceId == type(ICrossVM).interfaceId || super.supportsInterface(interfaceId); } + + function _setSymbol(string memory newSymbol) internal { + _customSymbol = newSymbol; + } } diff --git a/solidity/src/templates/FlowEVMBridgedERC721.sol b/solidity/src/templates/FlowEVMBridgedERC721.sol index 9af62692..5e21fbff 100644 --- a/solidity/src/templates/FlowEVMBridgedERC721.sol +++ b/solidity/src/templates/FlowEVMBridgedERC721.sol @@ -18,14 +18,17 @@ contract FlowEVMBridgedERC721 is ERC721, ERC721URIStorage, ERC721Burnable, ERC72 string public cadenceNFTIdentifier; string public contractMetadata; + string private _customSymbol; + constructor( address owner, - string memory name, - string memory symbol, + string memory name_, + string memory symbol_, string memory _cadenceNFTAddress, string memory _cadenceNFTIdentifier, string memory _contractMetadata - ) ERC721(name, symbol) Ownable(owner) { + ) ERC721(name_, symbol_) Ownable(owner) { + _customSymbol = symbol_; cadenceNFTAddress = _cadenceNFTAddress; cadenceNFTIdentifier = _cadenceNFTIdentifier; contractMetadata = _contractMetadata; @@ -39,6 +42,10 @@ contract FlowEVMBridgedERC721 is ERC721, ERC721URIStorage, ERC721Burnable, ERC72 return cadenceNFTIdentifier; } + function symbol() public view override returns (string memory) { + return _customSymbol; + } + function safeMint(address to, uint256 tokenId, string memory uri) public onlyOwner { _safeMint(to, tokenId); _setTokenURI(tokenId, uri); @@ -48,6 +55,10 @@ contract FlowEVMBridgedERC721 is ERC721, ERC721URIStorage, ERC721Burnable, ERC72 _setTokenURI(tokenId, uri); } + function setSymbol(string memory newSymbol) public onlyOwner { + _setSymbol(newSymbol); + } + function contractURI() public view returns (string memory) { return contractMetadata; } @@ -72,6 +83,10 @@ contract FlowEVMBridgedERC721 is ERC721, ERC721URIStorage, ERC721Burnable, ERC72 return _ownerOf(tokenId) != address(0); } + function _setSymbol(string memory newSymbol) internal { + _customSymbol = newSymbol; + } + function _update(address to, uint256 tokenId, address auth) internal override(ERC721, ERC721Enumerable) diff --git a/solidity/test/FlowBridgeFactory.t.sol b/solidity/test/FlowBridgeFactory.t.sol index 19857e23..3e5b2936 100644 --- a/solidity/test/FlowBridgeFactory.t.sol +++ b/solidity/test/FlowBridgeFactory.t.sol @@ -158,4 +158,26 @@ contract FlowBridgeFactoryTest is Test { uint256 balance = deployedERC20Contract.balanceOf(recipient); assertEq(balance, amount); } + + function test_UpdateERC721Symbol() public { + string memory _symbol = deployedERC721Contract.symbol(); + assertEq(_symbol, symbol); + + string memory newSymbol = "NEW_SYMBOL"; + deployedERC721Contract.setSymbol(newSymbol); + + _symbol = deployedERC721Contract.symbol(); + assertEq(_symbol, newSymbol); + } + + function test_UpdateERC20Symbol() public { + string memory _symbol = deployedERC20Contract.symbol(); + assertEq(_symbol, symbol); + + string memory newSymbol = "NEW_SYMBOL"; + deployedERC20Contract.setSymbol(newSymbol); + + _symbol = deployedERC20Contract.symbol(); + assertEq(_symbol, newSymbol); + } }