craft-nft

A standalone NFT implementation for real-world arts and crafts assets
Log | Files | Refs | README

commit 47eb21c2e7f4de3eab7cd9ab29972da67b4d0853
parent 852f73f5614bdb7436e1f6942153642bffa960f2
Author: lash <dev@holbrook.no>
Date:   Mon, 27 Mar 2023 09:58:08 +0100

Remove dedundant to hex contract converter

Diffstat:
Mjs/contract/CraftNFT.bin | 4++--
Mjs/contract/CraftNFT.json | 2+-
Mjs/contract/CraftNFT.metadata.json | 2+-
Mpython/craft_nft/data/CraftNFT.bin | 4++--
Mpython/craft_nft/data/CraftNFT.json | 2+-
Mpython/craft_nft/data/CraftNFT.metadata.json | 2+-
Msolidity/CraftNFT.sol | 33++++-----------------------------
7 files changed, 12 insertions(+), 37 deletions(-)

diff --git a/js/contract/CraftNFT.bin b/js/contract/CraftNFT.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405162006ce238038062006ce2833981810160405281019062000037919062000631565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009908162000088919062000907565b5080600a90816200009a919062000907565b50620000ee602060126040518060400160405280600681526020017f736861323536000000000000000000000000000000000000000000000000000081525062000161640100000000026401000000009004565b6012601181905550602067ffffffffffffffff811115620001145762000113620004cd565b5b6040519080825280601f01601f191660200182016040528015620001475781602001600182028036833780820191505090505b506010908162000158919062000a5e565b50505062000db3565b6060819050601081511115620001ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a59062000ba6565b60405180910390fd5b620001b862000438565b6000600790505b60008160ff16106200021c576000600882620001dc919062000c04565b60ff1660ff9060020a029050600086821667ffffffffffffffff1611156200020557506200021c565b8180620002129062000c4a565b92505050620001bf565b6001816200022b919062000c78565b826020019060ff16908160ff168152505060088160076200024d919062000cb4565b62000259919062000c04565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082620002e79062000d43565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050782620004bc565b810181811067ffffffffffffffff82111715620005295762000528620004cd565b5b80604052505050565b60006200053e6200049e565b90506200054c8282620004fc565b919050565b600067ffffffffffffffff8211156200056f576200056e620004cd565b5b6200057a82620004bc565b9050602081019050919050565b60005b83811015620005a75780820151818401526020810190506200058a565b60008484015250505050565b6000620005ca620005c48462000551565b62000532565b905082815260208101848484011115620005e957620005e8620004b7565b5b620005f684828562000587565b509392505050565b600082601f830112620006165762000615620004b2565b5b815162000628848260208601620005b3565b91505092915050565b600080604083850312156200064b576200064a620004a8565b5b600083015167ffffffffffffffff8111156200066c576200066b620004ad565b5b6200067a85828601620005fe565b925050602083015167ffffffffffffffff8111156200069e576200069d620004ad565b5b620006ac85828601620005fe565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070957607f821691505b6020821081036200071f576200071e620006c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200078c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200074a565b6200079886836200074a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007e5620007df620007d984620007b0565b620007ba565b620007b0565b9050919050565b6000819050919050565b6200080183620007c4565b620008196200081082620007ec565b8484546200075a565b825550505050565b600090565b6200083062000821565b6200083d818484620007f6565b505050565b5b8181101562000865576200085960008262000826565b60018101905062000843565b5050565b601f821115620008b4576200087e8162000725565b62000889846200073a565b8101602085101562000899578190505b620008b1620008a8856200073a565b83018262000842565b50505b505050565b60008160020a8304905092915050565b6000620008dc60001984600802620008b9565b1980831691505092915050565b6000620008f78383620008c9565b9150826002028217905092915050565b6200091282620006b6565b67ffffffffffffffff8111156200092e576200092d620004cd565b5b6200093a8254620006f0565b6200094782828562000869565b600060209050601f8311600181146200097f57600084156200096a578287015190505b620009768582620008e9565b865550620009e6565b601f1984166200098f8662000725565b60005b82811015620009b95784890151825560018201915060208501945060208101905062000992565b86831015620009d95784890151620009d5601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b60008190508160005260206000209050919050565b601f82111562000a595762000a2381620009f9565b62000a2e846200073a565b8101602085101562000a3e578190505b62000a5662000a4d856200073a565b83018262000842565b50505b505050565b62000a6982620009ee565b67ffffffffffffffff81111562000a855762000a84620004cd565b5b62000a918254620006f0565b62000a9e82828562000a0e565b600060209050601f83116001811462000ad6576000841562000ac1578287015190505b62000acd8582620008e9565b86555062000b3d565b601f19841662000ae686620009f9565b60005b8281101562000b105784890151825560018201915060208501945060208101905062000ae9565b8683101562000b30578489015162000b2c601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600062000b8e60138362000b45565b915062000b9b8262000b56565b602082019050919050565b6000602082019050818103600083015262000bc18162000b7f565b9050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c118262000bc8565b915062000c1e8362000bc8565b925082820262000c2e8162000bc8565b915080821462000c435762000c4262000bd5565b5b5092915050565b600062000c578262000bc8565b91506000820362000c6d5762000c6c62000bd5565b5b600182039050919050565b600062000c858262000bc8565b915062000c928362000bc8565b9250828201905060ff81111562000cae5762000cad62000bd5565b5b92915050565b600062000cc18262000bc8565b915062000cce8362000bc8565b9250828203905060ff81111562000cea5762000ce962000bd5565b5b92915050565b6000819050602082019050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b600062000d3a825162000d00565b80915050919050565b600062000d5082620009ee565b8262000d5c8462000cf0565b905062000d698162000d2c565b9250601082101562000dac5762000da77fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026200074a565b831692505b5050919050565b615f1f8062000dc36000396000f3fe608060405260043610610284576000357c0100000000000000000000000000000000000000000000000000000000900480638832e6e311610161578063c6eba7c4116100d3578063e8a7f4c511610097578063e8a7f4c514610a1b578063e985e9c514610a58578063f117e17314610a95578063f2fde38b14610ad2578063f70a3de814610b0f578063f9613ab214610b4c57610284565b8063c6eba7c414610912578063c87b56dd1461093b578063cfc3b17914610978578063d824ee4f146109b5578063da2824a8146109f257610284565b8063a22cb46511610125578063a22cb465146107e7578063a249e91214610810578063a5d6f2091461083b578063b88d4fde1461087c578063c43ead8814610898578063c5bec6fc146108d557610284565b80638832e6e3146107165780638da5cb5b1461073f57806394d008ef1461076a57806395d89b41146107935780639a7c5e9f146107be57610284565b8063449a52f8116101fa578063559f5dc9116101be578063559f5dc9146105b95780635ae06f7e146105f95780636352211e146106225780636b9cb86a1461065f57806370a082311461069c57806386e90b59146106d957610284565b8063449a52f81461049c57806349f2553a146104d95780634f64b2be146105025780634f6ccce71461053f57806353a1fd021461057c57610284565b806323b872dd1161024c57806323b872dd1461038257806324e0febc1461039e5780632b29ba23146103db5780632f745c591461041857806340c84b0e1461045557806342842e0e1461048057610284565b806301ffc9a71461028957806306fdde03146102c6578063081812fc146102f157806318160ddd1461032e5780631f8cf64914610359575b600080fd5b34801561029557600080fd5b506102b060048036038101906102ab91906148fe565b610b89565b6040516102bd9190614946565b60405180910390f35b3480156102d257600080fd5b506102db610c88565b6040516102e891906149f1565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190614a49565b610d16565b6040516103259190614ab7565b60405180910390f35b34801561033a57600080fd5b50610343610d53565b6040516103509190614ae1565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190614caa565b610d60565b005b61039c60048036038101906103979190614d45565b611022565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190614dce565b61108d565b6040516103d29190614e0a565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190614e25565b6110a5565b60405161040f9190614946565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190614e52565b611151565b60405161044c9190614ae1565b60405180910390f35b34801561046157600080fd5b5061046a611176565b6040516104779190614ee7565b60405180910390f35b61049a60048036038101906104959190614d45565b611204565b005b3480156104a857600080fd5b506104c360048036038101906104be9190614e52565b61126f565b6040516104d09190614e0a565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb9190614f09565b61128b565b005b34801561050e57600080fd5b5061052960048036038101906105249190614a49565b6115a3565b6040516105369190614e0a565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614a49565b6115c7565b6040516105739190614ae1565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190614f52565b6115eb565b6040516105b09190614e0a565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190614f92565b61193d565b6040516105f09493929190614ff3565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614e25565b6119c4565b005b34801561062e57600080fd5b5061064960048036038101906106449190614a49565b611ae3565b6040516106569190614ab7565b60405180910390f35b34801561066b57600080fd5b50610686600480360381019061068191906150d9565b611b1f565b60405161069391906149f1565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190614e25565b611d38565b6040516106d09190614ae1565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb91906150d9565b611d81565b60405161070d91906149f1565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190615182565b61202c565b005b34801561074b57600080fd5b5061075461203d565b6040516107619190614ab7565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190615182565b612061565b005b34801561079f57600080fd5b506107a8612072565b6040516107b591906149f1565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614a49565b612100565b005b3480156107f357600080fd5b5061080e60048036038101906108099190615222565b6121b3565b005b34801561081c57600080fd5b50610825612455565b6040516108329190614ae1565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190614a49565b61245b565b6040516108739594939291906152e7565b60405180910390f35b6108966004803603810190610891919061533a565b6124fa565b005b3480156108a457600080fd5b506108bf60048036038101906108ba91906150d9565b6125d5565b6040516108cc9190614ee7565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906150d9565b6125ea565b6040516109099190614ee7565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190615423565b6129a3565b005b34801561094757600080fd5b50610962600480360381019061095d9190614a49565b612b5b565b60405161096f91906149f1565b60405180910390f35b34801561098457600080fd5b5061099f600480360381019061099a9190615476565b612cae565b6040516109ac9190614ee7565b60405180910390f35b3480156109c157600080fd5b506109dc60048036038101906109d791906154d2565b612f84565b6040516109e99190614e0a565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614e25565b613229565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906150d9565b613311565b604051610a4f9190614ee7565b60405180910390f35b348015610a6457600080fd5b50610a7f6004803603810190610a7a9190615525565b6136ca565b604051610a8c9190614946565b60405180910390f35b348015610aa157600080fd5b50610abc6004803603810190610ab79190615565565b613762565b604051610ac99190614e0a565b60405180910390f35b348015610ade57600080fd5b50610af96004803603810190610af49190614e25565b61390c565b604051610b069190614946565b60405180910390f35b348015610b1b57600080fd5b50610b366004803603810190610b319190615605565b613a4e565b604051610b439190614946565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614dce565b613d7c565b604051610b809190614e0a565b60405180910390f35b6000806000837c0100000000000000000000000000000000000000000000000000000000900491506301ffc9a7847c0100000000000000000000000000000000000000000000000000000000900463ffffffff1603610bed57600192505050610c83565b60005b610100811015610c7b5763ffffffff817fc22876c3d283ef1ddd9d2087449a52f8abe1f1f5ed75b333f0440c0f982ab05d908060020a820491505016915060008263ffffffff1603610c485760009350505050610c83565b8163ffffffff168363ffffffff1603610c675760019350505050610c83565b602081610c749190615674565b9050610bf0565b506000925050505b919050565b60098054610c95906156d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc1906156d7565b8015610d0e5780601f10610ce357610100808354040283529160200191610d0e565b820191906000526020600020905b815481529060010190602001808311610cf157829003601f168201915b505050505081565b60006007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600680549050905090565b6060819050601081511115610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190615754565b60405180910390fd5b610db26147f0565b6000600790505b60008160ff1610610e0e576000600882610dd39190615774565b60ff1660ff9060020a029050600086821667ffffffffffffffff161115610dfa5750610e0e565b8180610e05906157b1565b92505050610db9565b600181610e1b91906157da565b826020019060ff16908160ff16815250506008816007610e3b919061580f565b610e459190615774565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082610ed190615879565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b61102d838383613e28565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60056020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061114a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600b8054611183906156d7565b80601f01602080910402602001604051908101604052809291908181526020018280546111af906156d7565b80156111fc5780601f106111d1576101008083540402835291602001916111fc565b820191906000526020600020905b8154815290600101906020018083116111df57829003601f168201915b505050505081565b61120f838383613e28565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008082600102905061128284826115eb565b91505092915050565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e857600080fd5b82915081519050602f7f0100000000000000000000000000000000000000000000000000000000000000028260018361132191906158e0565b8151811061133257611331615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113b25780806113ae90615943565b9150505b8067ffffffffffffffff8111156113cc576113cb614b7f565b5b6040519080825280601f01601f1916602001820160405280156113fe5781602001600182028036833780820191505090505b50600b908161140d9190615b2d565b5060005b82518110156114fe5782818151811061142d5761142c615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002600b828154611485906156d7565b811061149457611493615914565b5b8154600116156114b35790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555080806114f690615943565b915050611411565b508151811461159e577f2f00000000000000000000000000000000000000000000000000000000000000600b83518154611537906156d7565b811061154657611545615914565b5b8154600116156115655790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b505050565b600381815481106115b357600080fd5b906000526020600020016000915090505481565b600681815481106115d757600080fd5b906000526020600020016000915090505481565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116945750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61169d57600080fd5b60016004600087815260200190815260200160002080549050146116c057600080fd5b6000600460008781526020019081526020016000206000815481106116e8576116e7615914565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff161461171a57600080fd5b600060010260056000878152602001908152602001600020541461173d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1692507fc0000000000000000000000000000000000000000000000000000000000000008317925082600102600560008781526020019081526020016000208190555084600190049150600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008481526020019081526020016000208190555081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189c9190615674565b9250508190555060068290806001815401808255809150506001900390600052602060002001600090919091909150558573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516119299190614ae1565b60405180910390a384935050505092915050565b6004602052816000526040600020818154811061195957600080fd5b90600052602060002001600091509150508060000160009054906101000a900465ffffffffffff16908060000160069054906101000a900465ffffffffffff169080600001600c9054906101000a900460ff169080600001600d9054906101000a900460ff16905084565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a49575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90615c4b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080600560008460010281526020019081526020016000205490506060819060020a026c010000000000000000000000009004915050919050565b60608060606000611b2f85613311565b9150600b8054611b3e906156d7565b90509050808251611b4f9190615674565b67ffffffffffffffff811115611b6857611b67614b7f565b5b6040519080825280601f01601f191660200182016040528015611b9a5781602001600182028036833780820191505090505b50925060005b81811015611c5f57600b818154611bb6906156d7565b8110611bc557611bc4615914565b5b815460011615611be45790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611c1d57611c1c615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611c5790615943565b915050611ba0565b5060005b8251811015611d2c57828181518110611c7f57611c7e615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848381518110611cdc57611cdb615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611d1690615943565b9250508080611d2490615943565b915050611c63565b50829350505050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060006060806000611d93866125ea565b9150600f6000601154815260200190815260200160002093508360000160029054906101000a900460ff1660ff1690506001825182611dd29190615674565b611ddc9190615674565b67ffffffffffffffff811115611df557611df4614b7f565b5b6040519080825280601f01601f191660200182016040528015611e275781602001600182028036833780820191505090505b50925060005b81811015611ee1578460000160039054906101000a9004700100000000000000000000000000000000028160108110611e6957611e68615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611e9f57611e9e615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611ed990615943565b915050611e2d565b50603a7f010000000000000000000000000000000000000000000000000000000000000002838281518110611f1957611f18615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611f5390615943565b91505060005b825181101561201f57828181518110611f7557611f74615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848284611fcc9190615674565b81518110611fdd57611fdc615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061201790615943565b915050611f59565b5082945050505050919050565b612036848461126f565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61206b848461126f565b5050505050565b600a805461207f906156d7565b80601f01602080910402602001604051908101604052809291908181526020018280546120ab906156d7565b80156120f85780601f106120cd576101008083540402835291602001916120f8565b820191906000526020600020905b8154815290600101906020018083116120db57829003601f168201915b505050505081565b6000600f6000838152602001908152602001600020905060008160000160009054906101000a900460ff1660ff161161213857600080fd5b816011819055508060000160009054906101000a900460ff1660ff1667ffffffffffffffff81111561216d5761216c614b7f565b5b6040519080825280601f01601f19166020018201604052801561219f5781602001600182028036833780820191505090505b50601090816121ae9190615b2d565b505050565b80156122d457600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225157600080fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506123ec565b600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361236c57600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124499190614946565b60405180910390a35050565b60115481565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900470010000000000000000000000000000000002908060000160139054906101000a9004780100000000000000000000000000000000000000000000000002905085565b612505848484613e28565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e846125ba90615c80565b6040516125c79190614e0a565b60405180910390a450505050565b60606125e382601154612cae565b9050919050565b606080600080600285516125fe9190615ce7565b67ffffffffffffffff81111561261757612616614b7f565b5b6040519080825280601f01601f1916602001820160405280156126495781602001600182028036833780820191505090505b5092506000905060005b602081101561299757600460f087838151811061267357612672615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156127725760308361270991906157da565b7f01000000000000000000000000000000000000000000000000000000000000000284838151811061273e5761273d615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506127e4565b60578361277f91906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106127b4576127b3615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f8682815181106127f9576127f8615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff1610156128f75760308361288291906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846128b29190615674565b815181106128c3576128c2615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612975565b60578361290491906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846129349190615674565b8151811061294557612944615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826129829190615674565b9150808061298f90615943565b915050612653565b50829350505050919050565b6000600460008581526020019081526020016000208361ffff16815481106129ce576129cd615914565b5b90600052602060002001905080600001600c9054906101000a900460ff1615612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390615d75565b60405180910390fd5b80600001600d9054906101000a900460ff1615612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590615de1565b60405180910390fd5b60008265ffffffffffff1603612aa8578060000160069054906101000a900465ffffffffffff1691505b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168265ffffffffffff161015612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890615e4d565b60405180910390fd5b818160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550600181600001600d6101000a81548160ff02191690831515021790555050505050565b6060600060608360010291506000600460008481526020019081526020016000208054905003612b9157612b8e82613d7c565b91505b6000600460008481526020019081526020016000208054905011612bb457600080fd5b602067ffffffffffffffff811115612bcf57612bce614b7f565b5b6040519080825280601f01601f191660200182016040528015612c015781602001600182028036833780820191505090505b50905060005b6020811015612c9b57828160208110612c2357612c22615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612c5957612c58615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612c9390615943565b915050612c07565b50612ca581611b1f565b92505050919050565b606060006060600f600085815260200190815260200160002091508160000160019054906101000a900460ff1660ff168260000160009054906101000a900460ff1660ff168651612cff9190615674565b612d099190615674565b67ffffffffffffffff811115612d2257612d21614b7f565b5b6040519080825280601f01601f191660200182016040528015612d545781602001600182028036833780820191505090505b50905060005b8260000160019054906101000a900460ff1660ff16811015612e2a578260000160139054906101000a90047801000000000000000000000000000000000000000000000000028160088110612db257612db1615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612de857612de7615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612e2290615943565b915050612d5a565b8260000160009054906101000a900460ff167f010000000000000000000000000000000000000000000000000000000000000002828281518110612e7157612e70615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612eab90615943565b91505060005b8651811015612f7757868181518110612ecd57612ecc615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838284612f249190615674565b81518110612f3557612f34615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612f6f90615943565b915050612eb1565b5081935050505092915050565b600080600460008581526020019081526020016000208361ffff1681548110612fb057612faf615914565b5b90600052602060002001905080600001600c9054906101000a900460ff161561300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300590615d75565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130b15750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e790615c4b565b60405180910390fd5b60008361ffff16148015613122575060008160000160009054906101000a900465ffffffffffff1665ffffffffffff16145b801561313c575080600001600d9054906101000a900460ff165b1561319b5760018160000160068282829054906101000a900465ffffffffffff166131679190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555061319385856115eb565b915050613222565b80600001600d9054906101000a900460ff16156131fb578060000160009054906101000a900465ffffffffffff1665ffffffffffff168160000160069054906101000a900465ffffffffffff1665ffffffffffff16106131fa57600080fd5b5b61321e8585858460000160069054906101000a900465ffffffffffff1685614343565b9150505b9392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90615c4b565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606080600080600285516133259190615ce7565b67ffffffffffffffff81111561333e5761333d614b7f565b5b6040519080825280601f01601f1916602001820160405280156133705781602001600182028036833780820191505090505b5092506000905060005b60208110156136be57600460f087838151811061339a57613399615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156134995760308361343091906157da565b7f01000000000000000000000000000000000000000000000000000000000000000284838151811061346557613464615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061350b565b6057836134a691906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106134db576134da615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f8682815181106135205761351f615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff16101561361e576030836135a991906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846135d99190615674565b815181106135ea576135e9615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061369c565b60578361362b91906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028460018461365b9190615674565b8151811061366c5761366b615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826136a99190615674565b915080806136b690615943565b91505061337a565b50829350505050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600080600460008681526020019081526020016000208461ffff168154811061378e5761378d615914565b5b90600052602060002001905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061383d5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61387c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387390615c4b565b60405180910390fd5b60008160000160009054906101000a900465ffffffffffff1665ffffffffffff16116138a757600080fd5b80600001600d9054906101000a900460ff166138c257600080fd5b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168365ffffffffffff16106138f457600080fd5b6139018686868685614343565b915050949350505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461396757600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613af45750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2a90615c4b565b60405180910390fd5b613b3b614856565b600460008681526020019081526020016000208054905091506000821115613bb857600060046000878152602001908152602001600020600081548110613b8557613b84615914565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff1611613bb757600080fd5b5b60008460050b03613bd9576001816060019015159081151581525050613c14565b60008460050b1315613c135783816000019065ffffffffffff16908165ffffffffffff168152505060018160600190151590811515815250505b5b60046000868152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548160ff021916908315150217905550606082015181600001600d6101000a81548160ff0219169083151502179055505050600385908060018154018082558091505060019003906000526020600020016000909190919091505580606001511515816000015165ffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77d96978d8b40ac826d1984d992e71a84672e62d825fda78cd646656481d065b88604051613d689190614e0a565b60405180910390a460019250505092915050565b60008060056000848152602001908152602001600020549050613d9e816146fb565b613da757600080fd5b613db08161472d565b15613dbe5782915050613e23565b7effffffffffffffff00000000000000000000000000000000000000000000006001028116905060b881908060020a820491505090507fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000600102831681179050809150505b919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613e829190614ae1565b602060405180830381865afa158015613e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec39190615ebc565b92508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613efd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614614031573373ffffffffffffffffffffffffffffffffffffffff166007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061402757503373ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61403057600080fd5b5b60006007600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061408e848661475f565b600d60008581526020019081526020016000205491506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f091906158e0565b9050818111156141a057600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055505b6000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142dd91906158e0565b925050819055506001600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143349190615674565b92505081905550505050505050565b60008060008060007fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008960019004169350603067ffffffffffffffff8961ffff161667ffffffffffffffff169060020a0267ffffffffffffffff16841793508665ffffffffffff168417935083600102915060006001026005600084815260200190815260200160002054146143d857600080fd5b85600001600c9054906101000a900460ff1661443a578560000160069054906101000a900465ffffffffffff1665ffffffffffff168765ffffffffffff161461443957600186600001600c6101000a81548160ff0219169083151502179055505b5b67ffffffffffffffff896001900416925060b8839060020a0292507f8000000000000000000000000000000000000000000000000000000000000000831792508973ffffffffffffffffffffffffffffffffffffffff168317925060018660000160068282829054906101000a900465ffffffffffff166144bb9190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555085600001600d9054906101000a900460ff1661453c5760018660000160008282829054906101000a900465ffffffffffff166145199190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505b826001026005600084815260200190815260200160002081905550600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008681526020019081526020016000208190555083600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546146569190615674565b9250508190555060068490806001815401808255809150506001900390600052602060002001600090919091909150558973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8866040516146e39190614ae1565b60405180910390a38194505050505095945050505050565b6000807f8000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b6000807f4000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b60008083600102905060056000828152602001908152602001600020546001900491506000820361478f57600080fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000821691508273ffffffffffffffffffffffffffffffffffffffff168217915081600102600560008381526020019081526020016000208190555050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6040518060800160405280600065ffffffffffff168152602001600065ffffffffffff1681526020016000151581526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6148db816148a6565b81146148e657600080fd5b50565b6000813590506148f8816148d2565b92915050565b6000602082840312156149145761491361489c565b5b6000614922848285016148e9565b91505092915050565b60008115159050919050565b6149408161492b565b82525050565b600060208201905061495b6000830184614937565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561499b578082015181840152602081019050614980565b60008484015250505050565b6000601f19601f8301169050919050565b60006149c382614961565b6149cd818561496c565b93506149dd81856020860161497d565b6149e6816149a7565b840191505092915050565b60006020820190508181036000830152614a0b81846149b8565b905092915050565b6000819050919050565b614a2681614a13565b8114614a3157600080fd5b50565b600081359050614a4381614a1d565b92915050565b600060208284031215614a5f57614a5e61489c565b5b6000614a6d84828501614a34565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614aa182614a76565b9050919050565b614ab181614a96565b82525050565b6000602082019050614acc6000830184614aa8565b92915050565b614adb81614a13565b82525050565b6000602082019050614af66000830184614ad2565b92915050565b600060ff82169050919050565b614b1281614afc565b8114614b1d57600080fd5b50565b600081359050614b2f81614b09565b92915050565b600067ffffffffffffffff82169050919050565b614b5281614b35565b8114614b5d57600080fd5b50565b600081359050614b6f81614b49565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614bb7826149a7565b810181811067ffffffffffffffff82111715614bd657614bd5614b7f565b5b80604052505050565b6000614be9614892565b9050614bf58282614bae565b919050565b600067ffffffffffffffff821115614c1557614c14614b7f565b5b614c1e826149a7565b9050602081019050919050565b82818337600083830152505050565b6000614c4d614c4884614bfa565b614bdf565b905082815260208101848484011115614c6957614c68614b7a565b5b614c74848285614c2b565b509392505050565b600082601f830112614c9157614c90614b75565b5b8135614ca1848260208601614c3a565b91505092915050565b600080600060608486031215614cc357614cc261489c565b5b6000614cd186828701614b20565b9350506020614ce286828701614b60565b925050604084013567ffffffffffffffff811115614d0357614d026148a1565b5b614d0f86828701614c7c565b9150509250925092565b614d2281614a96565b8114614d2d57600080fd5b50565b600081359050614d3f81614d19565b92915050565b600080600060608486031215614d5e57614d5d61489c565b5b6000614d6c86828701614d30565b9350506020614d7d86828701614d30565b9250506040614d8e86828701614a34565b9150509250925092565b6000819050919050565b614dab81614d98565b8114614db657600080fd5b50565b600081359050614dc881614da2565b92915050565b600060208284031215614de457614de361489c565b5b6000614df284828501614db9565b91505092915050565b614e0481614d98565b82525050565b6000602082019050614e1f6000830184614dfb565b92915050565b600060208284031215614e3b57614e3a61489c565b5b6000614e4984828501614d30565b91505092915050565b60008060408385031215614e6957614e6861489c565b5b6000614e7785828601614d30565b9250506020614e8885828601614a34565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000614eb982614e92565b614ec38185614e9d565b9350614ed381856020860161497d565b614edc816149a7565b840191505092915050565b60006020820190508181036000830152614f018184614eae565b905092915050565b600060208284031215614f1f57614f1e61489c565b5b600082013567ffffffffffffffff811115614f3d57614f3c6148a1565b5b614f4984828501614c7c565b91505092915050565b60008060408385031215614f6957614f6861489c565b5b6000614f7785828601614d30565b9250506020614f8885828601614db9565b9150509250929050565b60008060408385031215614fa957614fa861489c565b5b6000614fb785828601614db9565b9250506020614fc885828601614a34565b9150509250929050565b600065ffffffffffff82169050919050565b614fed81614fd2565b82525050565b60006080820190506150086000830187614fe4565b6150156020830186614fe4565b6150226040830185614937565b61502f6060830184614937565b95945050505050565b600067ffffffffffffffff82111561505357615052614b7f565b5b61505c826149a7565b9050602081019050919050565b600061507c61507784615038565b614bdf565b90508281526020810184848401111561509857615097614b7a565b5b6150a3848285614c2b565b509392505050565b600082601f8301126150c0576150bf614b75565b5b81356150d0848260208601615069565b91505092915050565b6000602082840312156150ef576150ee61489c565b5b600082013567ffffffffffffffff81111561510d5761510c6148a1565b5b615119848285016150ab565b91505092915050565b600080fd5b600080fd5b60008083601f84011261514257615141614b75565b5b8235905067ffffffffffffffff81111561515f5761515e615122565b5b60208301915083600182028301111561517b5761517a615127565b5b9250929050565b6000806000806060858703121561519c5761519b61489c565b5b60006151aa87828801614d30565b94505060206151bb87828801614a34565b935050604085013567ffffffffffffffff8111156151dc576151db6148a1565b5b6151e88782880161512c565b925092505092959194509250565b6151ff8161492b565b811461520a57600080fd5b50565b60008135905061521c816151f6565b92915050565b600080604083850312156152395761523861489c565b5b600061524785828601614d30565b92505060206152588582860161520d565b9150509250929050565b61526b81614afc565b82525050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b6152a681615271565b82525050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b6152e1816152ac565b82525050565b600060a0820190506152fc6000830188615262565b6153096020830187615262565b6153166040830186615262565b615323606083018561529d565b61533060808301846152d8565b9695505050505050565b600080600080608085870312156153545761535361489c565b5b600061536287828801614d30565b945050602061537387828801614d30565b935050604061538487828801614a34565b925050606085013567ffffffffffffffff8111156153a5576153a46148a1565b5b6153b1878288016150ab565b91505092959194509250565b600061ffff82169050919050565b6153d4816153bd565b81146153df57600080fd5b50565b6000813590506153f1816153cb565b92915050565b61540081614fd2565b811461540b57600080fd5b50565b60008135905061541d816153f7565b92915050565b60008060006060848603121561543c5761543b61489c565b5b600061544a86828701614db9565b935050602061545b868287016153e2565b925050604061546c8682870161540e565b9150509250925092565b6000806040838503121561548d5761548c61489c565b5b600083013567ffffffffffffffff8111156154ab576154aa6148a1565b5b6154b7858286016150ab565b92505060206154c885828601614a34565b9150509250929050565b6000806000606084860312156154eb576154ea61489c565b5b60006154f986828701614d30565b935050602061550a86828701614db9565b925050604061551b868287016153e2565b9150509250925092565b6000806040838503121561553c5761553b61489c565b5b600061554a85828601614d30565b925050602061555b85828601614d30565b9150509250929050565b6000806000806080858703121561557f5761557e61489c565b5b600061558d87828801614d30565b945050602061559e87828801614db9565b93505060406155af878288016153e2565b92505060606155c08782880161540e565b91505092959194509250565b60008160050b9050919050565b6155e2816155cc565b81146155ed57600080fd5b50565b6000813590506155ff816155d9565b92915050565b6000806040838503121561561c5761561b61489c565b5b600061562a85828601614db9565b925050602061563b858286016155f0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061567f82614a13565b915061568a83614a13565b92508282019050808211156156a2576156a1615645565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806156ef57607f821691505b602082108103615702576157016156a8565b5b50919050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600061573e60138361496c565b915061574982615708565b602082019050919050565b6000602082019050818103600083015261576d81615731565b9050919050565b600061577f82614afc565b915061578a83614afc565b925082820261579881614afc565b91508082146157aa576157a9615645565b5b5092915050565b60006157bc82614afc565b9150600082036157cf576157ce615645565b5b600182039050919050565b60006157e582614afc565b91506157f083614afc565b9250828201905060ff81111561580957615808615645565b5b92915050565b600061581a82614afc565b915061582583614afc565b9250828203905060ff81111561583e5761583d615645565b5b92915050565b6000819050602082019050919050565b60006158608251615271565b80915050919050565b60008160020a8302905092915050565b600061588482614e92565b8261588e84615844565b905061589981615854565b925060108210156158d9576158d47fffffffffffffffffffffffffffffffff0000000000000000000000000000000083601003600802615869565b831692505b5050919050565b60006158eb82614a13565b91506158f683614a13565b925082820390508181111561590e5761590d615645565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061594e82614a13565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036159805761597f615645565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b6000600883026159e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615869565b6159ea8683615869565b95508019841693508086168417925050509392505050565b6000819050919050565b6000615a27615a22615a1d84614a13565b615a02565b614a13565b9050919050565b6000819050919050565b615a4183615a0c565b615a55615a4d82615a2e565b8484546159b0565b825550505050565b600090565b615a6a615a5d565b615a75818484615a38565b505050565b5b81811015615a9957615a8e600082615a62565b600181019050615a7b565b5050565b601f821115615ade57615aaf8161598b565b615ab8846159a0565b81016020851015615ac7578190505b615adb615ad3856159a0565b830182615a7a565b50505b505050565b60008160020a8304905092915050565b6000615b0460001984600802615ae3565b1980831691505092915050565b6000615b1d8383615af3565b9150826002028217905092915050565b615b3682614e92565b67ffffffffffffffff811115615b4f57615b4e614b7f565b5b615b5982546156d7565b615b64828285615a9d565b600060209050601f831160018114615b975760008415615b85578287015190505b615b8f8582615b11565b865550615bf7565b601f198416615ba58661598b565b60005b82811015615bcd57848901518255600182019150602085019450602081019050615ba8565b86831015615bea5784890151615be6601f891682615af3565b8355505b6001600288020188555050505b505050505050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000615c35600a8361496c565b9150615c4082615bff565b602082019050919050565b60006020820190508181036000830152615c6481615c28565b9050919050565b6000615c778251614d98565b80915050919050565b6000615c8b82614e92565b82615c9584615844565b9050615ca081615c6b565b92506020821015615ce057615cdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802615869565b831692505b5050919050565b6000615cf282614a13565b9150615cfd83614a13565b9250828202615d0b81614a13565b91508282048414831517615d2257615d21615645565b5b5092915050565b7f4552525f53504152534500000000000000000000000000000000000000000000600082015250565b6000615d5f600a8361496c565b9150615d6a82615d29565b602082019050919050565b60006020820190508181036000830152615d8e81615d52565b9050919050565b7f4552525f43415050454400000000000000000000000000000000000000000000600082015250565b6000615dcb600a8361496c565b9150615dd682615d95565b602082019050919050565b60006020820190508181036000830152615dfa81615dbe565b9050919050565b7f4552525f4341505f4c4f57000000000000000000000000000000000000000000600082015250565b6000615e37600b8361496c565b9150615e4282615e01565b602082019050919050565b60006020820190508181036000830152615e6681615e2a565b9050919050565b6000615e7882614fd2565b9150615e8383614fd2565b9250828201905065ffffffffffff811115615ea157615ea0615645565b5b92915050565b600081519050615eb681614d19565b92915050565b600060208284031215615ed257615ed161489c565b5b6000615ee084828501615ea7565b9150509291505056fea26469706673582212206169dbc4c5a1b80a003c6ca077d743d6319e728a25234b24abfa69e7d3e1d92664736f6c63430008120033 -\ No newline at end of file +60806040523480156200001157600080fd5b5060405162006a7138038062006a71833981810160405281019062000037919062000631565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009908162000088919062000907565b5080600a90816200009a919062000907565b50620000ee602060126040518060400160405280600681526020017f736861323536000000000000000000000000000000000000000000000000000081525062000161640100000000026401000000009004565b6012601181905550602067ffffffffffffffff811115620001145762000113620004cd565b5b6040519080825280601f01601f191660200182016040528015620001475781602001600182028036833780820191505090505b506010908162000158919062000a5e565b50505062000db3565b6060819050601081511115620001ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a59062000ba6565b60405180910390fd5b620001b862000438565b6000600790505b60008160ff16106200021c576000600882620001dc919062000c04565b60ff1660ff9060020a029050600086821667ffffffffffffffff1611156200020557506200021c565b8180620002129062000c4a565b92505050620001bf565b6001816200022b919062000c78565b826020019060ff16908160ff168152505060088160076200024d919062000cb4565b62000259919062000c04565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082620002e79062000d43565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050782620004bc565b810181811067ffffffffffffffff82111715620005295762000528620004cd565b5b80604052505050565b60006200053e6200049e565b90506200054c8282620004fc565b919050565b600067ffffffffffffffff8211156200056f576200056e620004cd565b5b6200057a82620004bc565b9050602081019050919050565b60005b83811015620005a75780820151818401526020810190506200058a565b60008484015250505050565b6000620005ca620005c48462000551565b62000532565b905082815260208101848484011115620005e957620005e8620004b7565b5b620005f684828562000587565b509392505050565b600082601f830112620006165762000615620004b2565b5b815162000628848260208601620005b3565b91505092915050565b600080604083850312156200064b576200064a620004a8565b5b600083015167ffffffffffffffff8111156200066c576200066b620004ad565b5b6200067a85828601620005fe565b925050602083015167ffffffffffffffff8111156200069e576200069d620004ad565b5b620006ac85828601620005fe565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070957607f821691505b6020821081036200071f576200071e620006c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200078c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200074a565b6200079886836200074a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007e5620007df620007d984620007b0565b620007ba565b620007b0565b9050919050565b6000819050919050565b6200080183620007c4565b620008196200081082620007ec565b8484546200075a565b825550505050565b600090565b6200083062000821565b6200083d818484620007f6565b505050565b5b8181101562000865576200085960008262000826565b60018101905062000843565b5050565b601f821115620008b4576200087e8162000725565b62000889846200073a565b8101602085101562000899578190505b620008b1620008a8856200073a565b83018262000842565b50505b505050565b60008160020a8304905092915050565b6000620008dc60001984600802620008b9565b1980831691505092915050565b6000620008f78383620008c9565b9150826002028217905092915050565b6200091282620006b6565b67ffffffffffffffff8111156200092e576200092d620004cd565b5b6200093a8254620006f0565b6200094782828562000869565b600060209050601f8311600181146200097f57600084156200096a578287015190505b620009768582620008e9565b865550620009e6565b601f1984166200098f8662000725565b60005b82811015620009b95784890151825560018201915060208501945060208101905062000992565b86831015620009d95784890151620009d5601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b60008190508160005260206000209050919050565b601f82111562000a595762000a2381620009f9565b62000a2e846200073a565b8101602085101562000a3e578190505b62000a5662000a4d856200073a565b83018262000842565b50505b505050565b62000a6982620009ee565b67ffffffffffffffff81111562000a855762000a84620004cd565b5b62000a918254620006f0565b62000a9e82828562000a0e565b600060209050601f83116001811462000ad6576000841562000ac1578287015190505b62000acd8582620008e9565b86555062000b3d565b601f19841662000ae686620009f9565b60005b8281101562000b105784890151825560018201915060208501945060208101905062000ae9565b8683101562000b30578489015162000b2c601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600062000b8e60138362000b45565b915062000b9b8262000b56565b602082019050919050565b6000602082019050818103600083015262000bc18162000b7f565b9050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c118262000bc8565b915062000c1e8362000bc8565b925082820262000c2e8162000bc8565b915080821462000c435762000c4262000bd5565b5b5092915050565b600062000c578262000bc8565b91506000820362000c6d5762000c6c62000bd5565b5b600182039050919050565b600062000c858262000bc8565b915062000c928362000bc8565b9250828201905060ff81111562000cae5762000cad62000bd5565b5b92915050565b600062000cc18262000bc8565b915062000cce8362000bc8565b9250828203905060ff81111562000cea5762000ce962000bd5565b5b92915050565b6000819050602082019050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b600062000d3a825162000d00565b80915050919050565b600062000d5082620009ee565b8262000d5c8462000cf0565b905062000d698162000d2c565b9250601082101562000dac5762000da77fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026200074a565b831692505b5050919050565b615cae8062000dc36000396000f3fe60806040526004361061028f576000357c01000000000000000000000000000000000000000000000000000000009004806386e90b591161016c578063c43ead88116100de578063da2824a811610097578063da2824a814610a51578063e985e9c514610a7a578063f117e17314610ab7578063f2fde38b14610af4578063f70a3de814610b31578063f9613ab214610b6e5761028f565b8063c43ead88146108f7578063c5bec6fc14610934578063c6eba7c414610971578063c87b56dd1461099a578063cfc3b179146109d7578063d824ee4f14610a145761028f565b80639a7c5e9f116101305780639a7c5e9f146107f2578063a22cb4651461081b578063a249e91214610844578063a5d6f2091461086f578063b5fdeb23146108b0578063b88d4fde146108db5761028f565b806386e90b591461070d5780638832e6e31461074a5780638da5cb5b1461077357806394d008ef1461079e57806395d89b41146107c75761028f565b8063449a52f81161020557806353a1fd02116101c957806353a1fd02146105b0578063559f5dc9146105ed5780635ae06f7e1461062d5780636352211e146106565780636b9cb86a1461069357806370a08231146106d05761028f565b8063449a52f8146104a757806349f2553a146104e45780634f64b2be1461050d5780634f6ccce71461054a5780635344299a146105875761028f565b806323b872dd1161025757806323b872dd1461038d57806324e0febc146103a95780632b29ba23146103e65780632f745c591461042357806340c84b0e1461046057806342842e0e1461048b5761028f565b806301ffc9a71461029457806306fdde03146102d1578063081812fc146102fc57806318160ddd146103395780631f8cf64914610364575b600080fd5b3480156102a057600080fd5b506102bb60048036038101906102b6919061468d565b610bab565b6040516102c891906146d5565b60405180910390f35b3480156102dd57600080fd5b506102e6610caa565b6040516102f39190614780565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906147d8565b610d38565b6040516103309190614846565b60405180910390f35b34801561034557600080fd5b5061034e610d75565b60405161035b9190614870565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190614a39565b610d82565b005b6103a760048036038101906103a29190614ad4565b611044565b005b3480156103b557600080fd5b506103d060048036038101906103cb9190614b5d565b6110af565b6040516103dd9190614b99565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614bb4565b6110c7565b60405161041a91906146d5565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190614be1565b611173565b6040516104579190614870565b60405180910390f35b34801561046c57600080fd5b50610475611198565b6040516104829190614c76565b60405180910390f35b6104a560048036038101906104a09190614ad4565b611226565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190614be1565b611291565b6040516104db9190614b99565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190614c98565b6112ad565b005b34801561051957600080fd5b50610534600480360381019061052f91906147d8565b6115c5565b6040516105419190614b99565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906147d8565b6115e9565b60405161057e9190614870565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614d82565b61160d565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190614dcb565b611699565b6040516105e49190614b99565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614e0b565b6119eb565b6040516106249493929190614e6c565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614bb4565b611a72565b005b34801561066257600080fd5b5061067d600480360381019061067891906147d8565b611b91565b60405161068a9190614846565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190614d82565b611bcd565b6040516106c79190614780565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190614bb4565b611de6565b6040516107049190614870565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190614d82565b611e2f565b6040516107419190614780565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c9190614f11565b6120da565b005b34801561077f57600080fd5b506107886120eb565b6040516107959190614846565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190614f11565b61210f565b005b3480156107d357600080fd5b506107dc612120565b6040516107e99190614780565b60405180910390f35b3480156107fe57600080fd5b50610819600480360381019061081491906147d8565b6121ae565b005b34801561082757600080fd5b50610842600480360381019061083d9190614fb1565b612261565b005b34801561085057600080fd5b50610859612503565b6040516108669190614870565b60405180910390f35b34801561087b57600080fd5b50610896600480360381019061089191906147d8565b612509565b6040516108a7959493929190615076565b60405180910390f35b3480156108bc57600080fd5b506108c56125a8565b6040516108d29190614c76565b60405180910390f35b6108f560048036038101906108f091906150c9565b612642565b005b34801561090357600080fd5b5061091e60048036038101906109199190614d82565b61271d565b60405161092b9190614c76565b60405180910390f35b34801561094057600080fd5b5061095b60048036038101906109569190614d82565b612732565b6040516109689190614c76565b60405180910390f35b34801561097d57600080fd5b50610998600480360381019061099391906151b2565b612aeb565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906147d8565b612ca3565b6040516109ce9190614780565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f99190615205565b612df6565b604051610a0b9190614c76565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a369190615261565b6130cc565b604051610a489190614b99565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a739190614bb4565b613371565b005b348015610a8657600080fd5b50610aa16004803603810190610a9c91906152b4565b613459565b604051610aae91906146d5565b60405180910390f35b348015610ac357600080fd5b50610ade6004803603810190610ad991906152f4565b6134f1565b604051610aeb9190614b99565b60405180910390f35b348015610b0057600080fd5b50610b1b6004803603810190610b169190614bb4565b61369b565b604051610b2891906146d5565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b539190615394565b6137dd565b604051610b6591906146d5565b60405180910390f35b348015610b7a57600080fd5b50610b956004803603810190610b909190614b5d565b613b0b565b604051610ba29190614b99565b60405180910390f35b6000806000837c0100000000000000000000000000000000000000000000000000000000900491506301ffc9a7847c0100000000000000000000000000000000000000000000000000000000900463ffffffff1603610c0f57600192505050610ca5565b60005b610100811015610c9d5763ffffffff817fc22876c3d283ef1ddd9d2087449a52f8abe1f1f5ed75b333f0440c0f982ab05d908060020a820491505016915060008263ffffffff1603610c6a5760009350505050610ca5565b8163ffffffff168363ffffffff1603610c895760019350505050610ca5565b602081610c969190615403565b9050610c12565b506000925050505b919050565b60098054610cb790615466565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce390615466565b8015610d305780601f10610d0557610100808354040283529160200191610d30565b820191906000526020600020905b815481529060010190602001808311610d1357829003601f168201915b505050505081565b60006007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600680549050905090565b6060819050601081511115610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906154e3565b60405180910390fd5b610dd461457f565b6000600790505b60008160ff1610610e30576000600882610df59190615503565b60ff1660ff9060020a029050600086821667ffffffffffffffff161115610e1c5750610e30565b8180610e2790615540565b92505050610ddb565b600181610e3d9190615569565b826020019060ff16908160ff16815250506008816007610e5d919061559e565b610e679190615503565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082610ef390615608565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b61104f838383613bb7565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60056020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061116c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600b80546111a590615466565b80601f01602080910402602001604051908101604052809291908181526020018280546111d190615466565b801561121e5780601f106111f35761010080835404028352916020019161121e565b820191906000526020600020905b81548152906001019060200180831161120157829003601f168201915b505050505081565b611231838383613bb7565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000808260010290506112a48482611699565b91505092915050565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130a57600080fd5b82915081519050602f7f01000000000000000000000000000000000000000000000000000000000000000282600183611343919061566f565b81518110611354576113536156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113d45780806113d0906156d2565b9150505b8067ffffffffffffffff8111156113ee576113ed61490e565b5b6040519080825280601f01601f1916602001820160405280156114205781602001600182028036833780820191505090505b50600b908161142f91906158bc565b5060005b82518110156115205782818151811061144f5761144e6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002600b8281546114a790615466565b81106114b6576114b56156a3565b5b8154600116156114d55790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055508080611518906156d2565b915050611433565b50815181146115c0577f2f00000000000000000000000000000000000000000000000000000000000000600b8351815461155990615466565b8110611568576115676156a3565b5b8154600116156115875790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b505050565b600381815481106115d557600080fd5b906000526020600020016000915090505481565b600681815481106115f957600080fd5b906000526020600020016000915090505481565b6000600f6000601154815260200190815260200160002090508060000160009054906101000a900460ff1660ff1682511461164757600080fd5b816010908161165691906158bc565b507f502ae868d71f78c5d099f033dd3007a4f58aebb3a2816544fe690f8b9604b56c6116806125a8565b60405161168d9190614c76565b60405180910390a15050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117425750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61174b57600080fd5b600160046000878152602001908152602001600020805490501461176e57600080fd5b600060046000878152602001908152602001600020600081548110611796576117956156a3565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff16146117c857600080fd5b60006001026005600087815260200190815260200160002054146117eb57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1692507fc0000000000000000000000000000000000000000000000000000000000000008317925082600102600560008781526020019081526020016000208190555084600190049150600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008481526020019081526020016000208190555081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461194a9190615403565b9250508190555060068290806001815401808255809150506001900390600052602060002001600090919091909150558573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516119d79190614870565b60405180910390a384935050505092915050565b60046020528160005260406000208181548110611a0757600080fd5b90600052602060002001600091509150508060000160009054906101000a900465ffffffffffff16908060000160069054906101000a900465ffffffffffff169080600001600c9054906101000a900460ff169080600001600d9054906101000a900460ff16905084565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611af7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d906159da565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080600560008460010281526020019081526020016000205490506060819060020a026c010000000000000000000000009004915050919050565b60608060606000611bdd85612732565b9150600b8054611bec90615466565b90509050808251611bfd9190615403565b67ffffffffffffffff811115611c1657611c1561490e565b5b6040519080825280601f01601f191660200182016040528015611c485781602001600182028036833780820191505090505b50925060005b81811015611d0d57600b818154611c6490615466565b8110611c7357611c726156a3565b5b815460011615611c925790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611ccb57611cca6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611d05906156d2565b915050611c4e565b5060005b8251811015611dda57828181518110611d2d57611d2c6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848381518110611d8a57611d896156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611dc4906156d2565b9250508080611dd2906156d2565b915050611d11565b50829350505050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060006060806000611e4186612732565b9150600f6000601154815260200190815260200160002093508360000160029054906101000a900460ff1660ff1690506001825182611e809190615403565b611e8a9190615403565b67ffffffffffffffff811115611ea357611ea261490e565b5b6040519080825280601f01601f191660200182016040528015611ed55781602001600182028036833780820191505090505b50925060005b81811015611f8f578460000160039054906101000a9004700100000000000000000000000000000000028160108110611f1757611f166156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611f4d57611f4c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611f87906156d2565b915050611edb565b50603a7f010000000000000000000000000000000000000000000000000000000000000002838281518110611fc757611fc66156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612001906156d2565b91505060005b82518110156120cd57828181518110612023576120226156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000284828461207a9190615403565b8151811061208b5761208a6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806120c5906156d2565b915050612007565b5082945050505050919050565b6120e48484611291565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121198484611291565b5050505050565b600a805461212d90615466565b80601f016020809104026020016040519081016040528092919081815260200182805461215990615466565b80156121a65780601f1061217b576101008083540402835291602001916121a6565b820191906000526020600020905b81548152906001019060200180831161218957829003601f168201915b505050505081565b6000600f6000838152602001908152602001600020905060008160000160009054906101000a900460ff1660ff16116121e657600080fd5b816011819055508060000160009054906101000a900460ff1660ff1667ffffffffffffffff81111561221b5761221a61490e565b5b6040519080825280601f01601f19166020018201604052801561224d5781602001600182028036833780820191505090505b506010908161225c91906158bc565b505050565b801561238257600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ff57600080fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061249a565b600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361241a57600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124f791906146d5565b60405180910390a35050565b60115481565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900470010000000000000000000000000000000002908060000160139054906101000a9004780100000000000000000000000000000000000000000000000002905085565b606061263d601080546125ba90615466565b80601f01602080910402602001604051908101604052809291908181526020018280546125e690615466565b80156126335780601f1061260857610100808354040283529160200191612633565b820191906000526020600020905b81548152906001019060200180831161261657829003601f168201915b505050505061271d565b905090565b61264d848484613bb7565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e8461270290615a0f565b60405161270f9190614b99565b60405180910390a450505050565b606061272b82601154612df6565b9050919050565b606080600080600285516127469190615a76565b67ffffffffffffffff81111561275f5761275e61490e565b5b6040519080825280601f01601f1916602001820160405280156127915781602001600182028036833780820191505090505b5092506000905060005b6020811015612adf57600460f08783815181106127bb576127ba6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156128ba576030836128519190615569565b7f010000000000000000000000000000000000000000000000000000000000000002848381518110612886576128856156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061292c565b6057836128c79190615569565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106128fc576128fb6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f868281518110612941576129406156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff161015612a3f576030836129ca9190615569565b7f010000000000000000000000000000000000000000000000000000000000000002846001846129fa9190615403565b81518110612a0b57612a0a6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612abd565b605783612a4c9190615569565b7f01000000000000000000000000000000000000000000000000000000000000000284600184612a7c9190615403565b81518110612a8d57612a8c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600282612aca9190615403565b91508080612ad7906156d2565b91505061279b565b50829350505050919050565b6000600460008581526020019081526020016000208361ffff1681548110612b1657612b156156a3565b5b90600052602060002001905080600001600c9054906101000a900460ff1615612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90615b04565b60405180910390fd5b80600001600d9054906101000a900460ff1615612bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbd90615b70565b60405180910390fd5b60008265ffffffffffff1603612bf0578060000160069054906101000a900465ffffffffffff1691505b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168265ffffffffffff161015612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5090615bdc565b60405180910390fd5b818160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550600181600001600d6101000a81548160ff02191690831515021790555050505050565b6060600060608360010291506000600460008481526020019081526020016000208054905003612cd957612cd682613b0b565b91505b6000600460008481526020019081526020016000208054905011612cfc57600080fd5b602067ffffffffffffffff811115612d1757612d1661490e565b5b6040519080825280601f01601f191660200182016040528015612d495781602001600182028036833780820191505090505b50905060005b6020811015612de357828160208110612d6b57612d6a6156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612da157612da06156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612ddb906156d2565b915050612d4f565b50612ded81611bcd565b92505050919050565b606060006060600f600085815260200190815260200160002091508160000160019054906101000a900460ff1660ff168260000160009054906101000a900460ff1660ff168651612e479190615403565b612e519190615403565b67ffffffffffffffff811115612e6a57612e6961490e565b5b6040519080825280601f01601f191660200182016040528015612e9c5781602001600182028036833780820191505090505b50905060005b8260000160019054906101000a900460ff1660ff16811015612f72578260000160139054906101000a90047801000000000000000000000000000000000000000000000000028160088110612efa57612ef96156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612f3057612f2f6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612f6a906156d2565b915050612ea2565b8260000160009054906101000a900460ff167f010000000000000000000000000000000000000000000000000000000000000002828281518110612fb957612fb86156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612ff3906156d2565b91505060005b86518110156130bf57868181518110613015576130146156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828461306c9190615403565b8151811061307d5761307c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806130b7906156d2565b915050612ff9565b5081935050505092915050565b600080600460008581526020019081526020016000208361ffff16815481106130f8576130f76156a3565b5b90600052602060002001905080600001600c9054906101000a900460ff1615613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d90615b04565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806131f95750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f906159da565b60405180910390fd5b60008361ffff1614801561326a575060008160000160009054906101000a900465ffffffffffff1665ffffffffffff16145b8015613284575080600001600d9054906101000a900460ff165b156132e35760018160000160068282829054906101000a900465ffffffffffff166132af9190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055506132db8585611699565b91505061336a565b80600001600d9054906101000a900460ff1615613343578060000160009054906101000a900465ffffffffffff1665ffffffffffff168160000160069054906101000a900465ffffffffffff1665ffffffffffff161061334257600080fd5b5b6133668585858460000160069054906101000a900465ffffffffffff16856140d2565b9150505b9392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f6906159da565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600080600460008681526020019081526020016000208461ffff168154811061351d5761351c6156a3565b5b90600052602060002001905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135cc5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61360b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613602906159da565b60405180910390fd5b60008160000160009054906101000a900465ffffffffffff1665ffffffffffff161161363657600080fd5b80600001600d9054906101000a900460ff1661365157600080fd5b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168365ffffffffffff161061368357600080fd5b61369086868686856140d2565b915050949350505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136f657600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806138835750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6138c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b9906159da565b60405180910390fd5b6138ca6145e5565b60046000868152602001908152602001600020805490509150600082111561394757600060046000878152602001908152602001600020600081548110613914576139136156a3565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff161161394657600080fd5b5b60008460050b036139685760018160600190151590811515815250506139a3565b60008460050b13156139a25783816000019065ffffffffffff16908165ffffffffffff168152505060018160600190151590811515815250505b5b60046000868152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548160ff021916908315150217905550606082015181600001600d6101000a81548160ff0219169083151502179055505050600385908060018154018082558091505060019003906000526020600020016000909190919091505580606001511515816000015165ffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77d96978d8b40ac826d1984d992e71a84672e62d825fda78cd646656481d065b88604051613af79190614b99565b60405180910390a460019250505092915050565b60008060056000848152602001908152602001600020549050613b2d8161448a565b613b3657600080fd5b613b3f816144bc565b15613b4d5782915050613bb2565b7effffffffffffffff00000000000000000000000000000000000000000000006001028116905060b881908060020a820491505090507fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000600102831681179050809150505b919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613c119190614870565b602060405180830381865afa158015613c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c529190615c4b565b92508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613c8c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613dc0573373ffffffffffffffffffffffffffffffffffffffff166007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613db657503373ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b613dbf57600080fd5b5b60006007600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e1d84866144ee565b600d60008581526020019081526020016000205491506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e7f919061566f565b905081811115613f2f57600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055505b6000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461406c919061566f565b925050819055506001600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140c39190615403565b92505081905550505050505050565b60008060008060007fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008960019004169350603067ffffffffffffffff8961ffff161667ffffffffffffffff169060020a0267ffffffffffffffff16841793508665ffffffffffff1684179350836001029150600060010260056000848152602001908152602001600020541461416757600080fd5b85600001600c9054906101000a900460ff166141c9578560000160069054906101000a900465ffffffffffff1665ffffffffffff168765ffffffffffff16146141c857600186600001600c6101000a81548160ff0219169083151502179055505b5b67ffffffffffffffff896001900416925060b8839060020a0292507f8000000000000000000000000000000000000000000000000000000000000000831792508973ffffffffffffffffffffffffffffffffffffffff168317925060018660000160068282829054906101000a900465ffffffffffff1661424a9190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555085600001600d9054906101000a900460ff166142cb5760018660000160008282829054906101000a900465ffffffffffff166142a89190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505b826001026005600084815260200190815260200160002081905550600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008681526020019081526020016000208190555083600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143e59190615403565b9250508190555060068490806001815401808255809150506001900390600052602060002001600090919091909150558973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8866040516144729190614870565b60405180910390a38194505050505095945050505050565b6000807f8000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b6000807f4000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b60008083600102905060056000828152602001908152602001600020546001900491506000820361451e57600080fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000821691508273ffffffffffffffffffffffffffffffffffffffff168217915081600102600560008381526020019081526020016000208190555050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6040518060800160405280600065ffffffffffff168152602001600065ffffffffffff1681526020016000151581526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61466a81614635565b811461467557600080fd5b50565b60008135905061468781614661565b92915050565b6000602082840312156146a3576146a261462b565b5b60006146b184828501614678565b91505092915050565b60008115159050919050565b6146cf816146ba565b82525050565b60006020820190506146ea60008301846146c6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b6000819050919050565b6147b5816147a2565b81146147c057600080fd5b50565b6000813590506147d2816147ac565b92915050565b6000602082840312156147ee576147ed61462b565b5b60006147fc848285016147c3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483082614805565b9050919050565b61484081614825565b82525050565b600060208201905061485b6000830184614837565b92915050565b61486a816147a2565b82525050565b60006020820190506148856000830184614861565b92915050565b600060ff82169050919050565b6148a18161488b565b81146148ac57600080fd5b50565b6000813590506148be81614898565b92915050565b600067ffffffffffffffff82169050919050565b6148e1816148c4565b81146148ec57600080fd5b50565b6000813590506148fe816148d8565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61494682614736565b810181811067ffffffffffffffff821117156149655761496461490e565b5b80604052505050565b6000614978614621565b9050614984828261493d565b919050565b600067ffffffffffffffff8211156149a4576149a361490e565b5b6149ad82614736565b9050602081019050919050565b82818337600083830152505050565b60006149dc6149d784614989565b61496e565b9050828152602081018484840111156149f8576149f7614909565b5b614a038482856149ba565b509392505050565b600082601f830112614a2057614a1f614904565b5b8135614a308482602086016149c9565b91505092915050565b600080600060608486031215614a5257614a5161462b565b5b6000614a60868287016148af565b9350506020614a71868287016148ef565b925050604084013567ffffffffffffffff811115614a9257614a91614630565b5b614a9e86828701614a0b565b9150509250925092565b614ab181614825565b8114614abc57600080fd5b50565b600081359050614ace81614aa8565b92915050565b600080600060608486031215614aed57614aec61462b565b5b6000614afb86828701614abf565b9350506020614b0c86828701614abf565b9250506040614b1d868287016147c3565b9150509250925092565b6000819050919050565b614b3a81614b27565b8114614b4557600080fd5b50565b600081359050614b5781614b31565b92915050565b600060208284031215614b7357614b7261462b565b5b6000614b8184828501614b48565b91505092915050565b614b9381614b27565b82525050565b6000602082019050614bae6000830184614b8a565b92915050565b600060208284031215614bca57614bc961462b565b5b6000614bd884828501614abf565b91505092915050565b60008060408385031215614bf857614bf761462b565b5b6000614c0685828601614abf565b9250506020614c17858286016147c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000614c4882614c21565b614c528185614c2c565b9350614c6281856020860161470c565b614c6b81614736565b840191505092915050565b60006020820190508181036000830152614c908184614c3d565b905092915050565b600060208284031215614cae57614cad61462b565b5b600082013567ffffffffffffffff811115614ccc57614ccb614630565b5b614cd884828501614a0b565b91505092915050565b600067ffffffffffffffff821115614cfc57614cfb61490e565b5b614d0582614736565b9050602081019050919050565b6000614d25614d2084614ce1565b61496e565b905082815260208101848484011115614d4157614d40614909565b5b614d4c8482856149ba565b509392505050565b600082601f830112614d6957614d68614904565b5b8135614d79848260208601614d12565b91505092915050565b600060208284031215614d9857614d9761462b565b5b600082013567ffffffffffffffff811115614db657614db5614630565b5b614dc284828501614d54565b91505092915050565b60008060408385031215614de257614de161462b565b5b6000614df085828601614abf565b9250506020614e0185828601614b48565b9150509250929050565b60008060408385031215614e2257614e2161462b565b5b6000614e3085828601614b48565b9250506020614e41858286016147c3565b9150509250929050565b600065ffffffffffff82169050919050565b614e6681614e4b565b82525050565b6000608082019050614e816000830187614e5d565b614e8e6020830186614e5d565b614e9b60408301856146c6565b614ea860608301846146c6565b95945050505050565b600080fd5b600080fd5b60008083601f840112614ed157614ed0614904565b5b8235905067ffffffffffffffff811115614eee57614eed614eb1565b5b602083019150836001820283011115614f0a57614f09614eb6565b5b9250929050565b60008060008060608587031215614f2b57614f2a61462b565b5b6000614f3987828801614abf565b9450506020614f4a878288016147c3565b935050604085013567ffffffffffffffff811115614f6b57614f6a614630565b5b614f7787828801614ebb565b925092505092959194509250565b614f8e816146ba565b8114614f9957600080fd5b50565b600081359050614fab81614f85565b92915050565b60008060408385031215614fc857614fc761462b565b5b6000614fd685828601614abf565b9250506020614fe785828601614f9c565b9150509250929050565b614ffa8161488b565b82525050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b61503581615000565b82525050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b6150708161503b565b82525050565b600060a08201905061508b6000830188614ff1565b6150986020830187614ff1565b6150a56040830186614ff1565b6150b2606083018561502c565b6150bf6080830184615067565b9695505050505050565b600080600080608085870312156150e3576150e261462b565b5b60006150f187828801614abf565b945050602061510287828801614abf565b9350506040615113878288016147c3565b925050606085013567ffffffffffffffff81111561513457615133614630565b5b61514087828801614d54565b91505092959194509250565b600061ffff82169050919050565b6151638161514c565b811461516e57600080fd5b50565b6000813590506151808161515a565b92915050565b61518f81614e4b565b811461519a57600080fd5b50565b6000813590506151ac81615186565b92915050565b6000806000606084860312156151cb576151ca61462b565b5b60006151d986828701614b48565b93505060206151ea86828701615171565b92505060406151fb8682870161519d565b9150509250925092565b6000806040838503121561521c5761521b61462b565b5b600083013567ffffffffffffffff81111561523a57615239614630565b5b61524685828601614d54565b9250506020615257858286016147c3565b9150509250929050565b60008060006060848603121561527a5761527961462b565b5b600061528886828701614abf565b935050602061529986828701614b48565b92505060406152aa86828701615171565b9150509250925092565b600080604083850312156152cb576152ca61462b565b5b60006152d985828601614abf565b92505060206152ea85828601614abf565b9150509250929050565b6000806000806080858703121561530e5761530d61462b565b5b600061531c87828801614abf565b945050602061532d87828801614b48565b935050604061533e87828801615171565b925050606061534f8782880161519d565b91505092959194509250565b60008160050b9050919050565b6153718161535b565b811461537c57600080fd5b50565b60008135905061538e81615368565b92915050565b600080604083850312156153ab576153aa61462b565b5b60006153b985828601614b48565b92505060206153ca8582860161537f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061540e826147a2565b9150615419836147a2565b9250828201905080821115615431576154306153d4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061547e57607f821691505b60208210810361549157615490615437565b5b50919050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b60006154cd6013836146fb565b91506154d882615497565b602082019050919050565b600060208201905081810360008301526154fc816154c0565b9050919050565b600061550e8261488b565b91506155198361488b565b92508282026155278161488b565b9150808214615539576155386153d4565b5b5092915050565b600061554b8261488b565b91506000820361555e5761555d6153d4565b5b600182039050919050565b60006155748261488b565b915061557f8361488b565b9250828201905060ff811115615598576155976153d4565b5b92915050565b60006155a98261488b565b91506155b48361488b565b9250828203905060ff8111156155cd576155cc6153d4565b5b92915050565b6000819050602082019050919050565b60006155ef8251615000565b80915050919050565b60008160020a8302905092915050565b600061561382614c21565b8261561d846155d3565b9050615628816155e3565b92506010821015615668576156637fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026155f8565b831692505b5050919050565b600061567a826147a2565b9150615685836147a2565b925082820390508181111561569d5761569c6153d4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006156dd826147a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361570f5761570e6153d4565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60006008830261576f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826155f8565b61577986836155f8565b95508019841693508086168417925050509392505050565b6000819050919050565b60006157b66157b16157ac846147a2565b615791565b6147a2565b9050919050565b6000819050919050565b6157d08361579b565b6157e46157dc826157bd565b84845461573f565b825550505050565b600090565b6157f96157ec565b6158048184846157c7565b505050565b5b818110156158285761581d6000826157f1565b60018101905061580a565b5050565b601f82111561586d5761583e8161571a565b6158478461572f565b81016020851015615856578190505b61586a6158628561572f565b830182615809565b50505b505050565b60008160020a8304905092915050565b600061589360001984600802615872565b1980831691505092915050565b60006158ac8383615882565b9150826002028217905092915050565b6158c582614c21565b67ffffffffffffffff8111156158de576158dd61490e565b5b6158e88254615466565b6158f382828561582c565b600060209050601f8311600181146159265760008415615914578287015190505b61591e85826158a0565b865550615986565b601f1984166159348661571a565b60005b8281101561595c57848901518255600182019150602085019450602081019050615937565b868310156159795784890151615975601f891682615882565b8355505b6001600288020188555050505b505050505050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006159c4600a836146fb565b91506159cf8261598e565b602082019050919050565b600060208201905081810360008301526159f3816159b7565b9050919050565b6000615a068251614b27565b80915050919050565b6000615a1a82614c21565b82615a24846155d3565b9050615a2f816159fa565b92506020821015615a6f57615a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026155f8565b831692505b5050919050565b6000615a81826147a2565b9150615a8c836147a2565b9250828202615a9a816147a2565b91508282048414831517615ab157615ab06153d4565b5b5092915050565b7f4552525f53504152534500000000000000000000000000000000000000000000600082015250565b6000615aee600a836146fb565b9150615af982615ab8565b602082019050919050565b60006020820190508181036000830152615b1d81615ae1565b9050919050565b7f4552525f43415050454400000000000000000000000000000000000000000000600082015250565b6000615b5a600a836146fb565b9150615b6582615b24565b602082019050919050565b60006020820190508181036000830152615b8981615b4d565b9050919050565b7f4552525f4341505f4c4f57000000000000000000000000000000000000000000600082015250565b6000615bc6600b836146fb565b9150615bd182615b90565b602082019050919050565b60006020820190508181036000830152615bf581615bb9565b9050919050565b6000615c0782614e4b565b9150615c1283614e4b565b9250828201905065ffffffffffff811115615c3057615c2f6153d4565b5b92915050565b600081519050615c4581614aa8565b92915050565b600060208284031215615c6157615c6061462b565b5b6000615c6f84828501615c36565b9150509291505056fea264697066735822122050c46c41c021119f2db1cd645fbb63951f9b71bc6bc73741dd001524ffd8683364736f6c63430008120033 +\ No newline at end of file diff --git a/js/contract/CraftNFT.json b/js/contract/CraftNFT.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getDigestHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMsg","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"setMsg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/js/contract/CraftNFT.metadata.json b/js/contract/CraftNFT.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getDigestHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CraftNFT.sol":"CraftNFT"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CraftNFT.sol":{"keccak256":"0x918c0d21063846d753913dca52fcf2e9cdca193764319f7075c082ca4c4d8ef6","license":"AGPL-3.0-or-later","urls":["bzz-raw://07c4a2305c3cc3992d8186a098d0f617b9643c903a900bc9cd8df1998125123f","dweb:/ipfs/QmccndYqRwKb9fAfsmdQMUkgCMysvzHCcBqutdhmMfF6xK"]}},"version":1} +{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMsg","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"setMsg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CraftNFT.sol":"CraftNFT"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CraftNFT.sol":{"keccak256":"0x6047a7ac24c08ebca14954eeb400fe76130fcba683da78386d18ff0ed50fc809","license":"AGPL-3.0-or-later","urls":["bzz-raw://5ea560bc4f69b44ca3c395f1ca96ac50bc64a23c248ad37ca6cf38fc3bb5c1ca","dweb:/ipfs/Qmbj8qo9RNKimiB9MmyEVJv52bnb2PpvBbWNptepw9RmXW"]}},"version":1} diff --git a/python/craft_nft/data/CraftNFT.bin b/python/craft_nft/data/CraftNFT.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405162006ce238038062006ce2833981810160405281019062000037919062000631565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009908162000088919062000907565b5080600a90816200009a919062000907565b50620000ee602060126040518060400160405280600681526020017f736861323536000000000000000000000000000000000000000000000000000081525062000161640100000000026401000000009004565b6012601181905550602067ffffffffffffffff811115620001145762000113620004cd565b5b6040519080825280601f01601f191660200182016040528015620001475781602001600182028036833780820191505090505b506010908162000158919062000a5e565b50505062000db3565b6060819050601081511115620001ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a59062000ba6565b60405180910390fd5b620001b862000438565b6000600790505b60008160ff16106200021c576000600882620001dc919062000c04565b60ff1660ff9060020a029050600086821667ffffffffffffffff1611156200020557506200021c565b8180620002129062000c4a565b92505050620001bf565b6001816200022b919062000c78565b826020019060ff16908160ff168152505060088160076200024d919062000cb4565b62000259919062000c04565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082620002e79062000d43565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050782620004bc565b810181811067ffffffffffffffff82111715620005295762000528620004cd565b5b80604052505050565b60006200053e6200049e565b90506200054c8282620004fc565b919050565b600067ffffffffffffffff8211156200056f576200056e620004cd565b5b6200057a82620004bc565b9050602081019050919050565b60005b83811015620005a75780820151818401526020810190506200058a565b60008484015250505050565b6000620005ca620005c48462000551565b62000532565b905082815260208101848484011115620005e957620005e8620004b7565b5b620005f684828562000587565b509392505050565b600082601f830112620006165762000615620004b2565b5b815162000628848260208601620005b3565b91505092915050565b600080604083850312156200064b576200064a620004a8565b5b600083015167ffffffffffffffff8111156200066c576200066b620004ad565b5b6200067a85828601620005fe565b925050602083015167ffffffffffffffff8111156200069e576200069d620004ad565b5b620006ac85828601620005fe565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070957607f821691505b6020821081036200071f576200071e620006c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200078c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200074a565b6200079886836200074a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007e5620007df620007d984620007b0565b620007ba565b620007b0565b9050919050565b6000819050919050565b6200080183620007c4565b620008196200081082620007ec565b8484546200075a565b825550505050565b600090565b6200083062000821565b6200083d818484620007f6565b505050565b5b8181101562000865576200085960008262000826565b60018101905062000843565b5050565b601f821115620008b4576200087e8162000725565b62000889846200073a565b8101602085101562000899578190505b620008b1620008a8856200073a565b83018262000842565b50505b505050565b60008160020a8304905092915050565b6000620008dc60001984600802620008b9565b1980831691505092915050565b6000620008f78383620008c9565b9150826002028217905092915050565b6200091282620006b6565b67ffffffffffffffff8111156200092e576200092d620004cd565b5b6200093a8254620006f0565b6200094782828562000869565b600060209050601f8311600181146200097f57600084156200096a578287015190505b620009768582620008e9565b865550620009e6565b601f1984166200098f8662000725565b60005b82811015620009b95784890151825560018201915060208501945060208101905062000992565b86831015620009d95784890151620009d5601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b60008190508160005260206000209050919050565b601f82111562000a595762000a2381620009f9565b62000a2e846200073a565b8101602085101562000a3e578190505b62000a5662000a4d856200073a565b83018262000842565b50505b505050565b62000a6982620009ee565b67ffffffffffffffff81111562000a855762000a84620004cd565b5b62000a918254620006f0565b62000a9e82828562000a0e565b600060209050601f83116001811462000ad6576000841562000ac1578287015190505b62000acd8582620008e9565b86555062000b3d565b601f19841662000ae686620009f9565b60005b8281101562000b105784890151825560018201915060208501945060208101905062000ae9565b8683101562000b30578489015162000b2c601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600062000b8e60138362000b45565b915062000b9b8262000b56565b602082019050919050565b6000602082019050818103600083015262000bc18162000b7f565b9050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c118262000bc8565b915062000c1e8362000bc8565b925082820262000c2e8162000bc8565b915080821462000c435762000c4262000bd5565b5b5092915050565b600062000c578262000bc8565b91506000820362000c6d5762000c6c62000bd5565b5b600182039050919050565b600062000c858262000bc8565b915062000c928362000bc8565b9250828201905060ff81111562000cae5762000cad62000bd5565b5b92915050565b600062000cc18262000bc8565b915062000cce8362000bc8565b9250828203905060ff81111562000cea5762000ce962000bd5565b5b92915050565b6000819050602082019050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b600062000d3a825162000d00565b80915050919050565b600062000d5082620009ee565b8262000d5c8462000cf0565b905062000d698162000d2c565b9250601082101562000dac5762000da77fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026200074a565b831692505b5050919050565b615f1f8062000dc36000396000f3fe608060405260043610610284576000357c0100000000000000000000000000000000000000000000000000000000900480638832e6e311610161578063c6eba7c4116100d3578063e8a7f4c511610097578063e8a7f4c514610a1b578063e985e9c514610a58578063f117e17314610a95578063f2fde38b14610ad2578063f70a3de814610b0f578063f9613ab214610b4c57610284565b8063c6eba7c414610912578063c87b56dd1461093b578063cfc3b17914610978578063d824ee4f146109b5578063da2824a8146109f257610284565b8063a22cb46511610125578063a22cb465146107e7578063a249e91214610810578063a5d6f2091461083b578063b88d4fde1461087c578063c43ead8814610898578063c5bec6fc146108d557610284565b80638832e6e3146107165780638da5cb5b1461073f57806394d008ef1461076a57806395d89b41146107935780639a7c5e9f146107be57610284565b8063449a52f8116101fa578063559f5dc9116101be578063559f5dc9146105b95780635ae06f7e146105f95780636352211e146106225780636b9cb86a1461065f57806370a082311461069c57806386e90b59146106d957610284565b8063449a52f81461049c57806349f2553a146104d95780634f64b2be146105025780634f6ccce71461053f57806353a1fd021461057c57610284565b806323b872dd1161024c57806323b872dd1461038257806324e0febc1461039e5780632b29ba23146103db5780632f745c591461041857806340c84b0e1461045557806342842e0e1461048057610284565b806301ffc9a71461028957806306fdde03146102c6578063081812fc146102f157806318160ddd1461032e5780631f8cf64914610359575b600080fd5b34801561029557600080fd5b506102b060048036038101906102ab91906148fe565b610b89565b6040516102bd9190614946565b60405180910390f35b3480156102d257600080fd5b506102db610c88565b6040516102e891906149f1565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190614a49565b610d16565b6040516103259190614ab7565b60405180910390f35b34801561033a57600080fd5b50610343610d53565b6040516103509190614ae1565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190614caa565b610d60565b005b61039c60048036038101906103979190614d45565b611022565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190614dce565b61108d565b6040516103d29190614e0a565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190614e25565b6110a5565b60405161040f9190614946565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190614e52565b611151565b60405161044c9190614ae1565b60405180910390f35b34801561046157600080fd5b5061046a611176565b6040516104779190614ee7565b60405180910390f35b61049a60048036038101906104959190614d45565b611204565b005b3480156104a857600080fd5b506104c360048036038101906104be9190614e52565b61126f565b6040516104d09190614e0a565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb9190614f09565b61128b565b005b34801561050e57600080fd5b5061052960048036038101906105249190614a49565b6115a3565b6040516105369190614e0a565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614a49565b6115c7565b6040516105739190614ae1565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190614f52565b6115eb565b6040516105b09190614e0a565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190614f92565b61193d565b6040516105f09493929190614ff3565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614e25565b6119c4565b005b34801561062e57600080fd5b5061064960048036038101906106449190614a49565b611ae3565b6040516106569190614ab7565b60405180910390f35b34801561066b57600080fd5b50610686600480360381019061068191906150d9565b611b1f565b60405161069391906149f1565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190614e25565b611d38565b6040516106d09190614ae1565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb91906150d9565b611d81565b60405161070d91906149f1565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190615182565b61202c565b005b34801561074b57600080fd5b5061075461203d565b6040516107619190614ab7565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190615182565b612061565b005b34801561079f57600080fd5b506107a8612072565b6040516107b591906149f1565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614a49565b612100565b005b3480156107f357600080fd5b5061080e60048036038101906108099190615222565b6121b3565b005b34801561081c57600080fd5b50610825612455565b6040516108329190614ae1565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190614a49565b61245b565b6040516108739594939291906152e7565b60405180910390f35b6108966004803603810190610891919061533a565b6124fa565b005b3480156108a457600080fd5b506108bf60048036038101906108ba91906150d9565b6125d5565b6040516108cc9190614ee7565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906150d9565b6125ea565b6040516109099190614ee7565b60405180910390f35b34801561091e57600080fd5b5061093960048036038101906109349190615423565b6129a3565b005b34801561094757600080fd5b50610962600480360381019061095d9190614a49565b612b5b565b60405161096f91906149f1565b60405180910390f35b34801561098457600080fd5b5061099f600480360381019061099a9190615476565b612cae565b6040516109ac9190614ee7565b60405180910390f35b3480156109c157600080fd5b506109dc60048036038101906109d791906154d2565b612f84565b6040516109e99190614e0a565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614e25565b613229565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906150d9565b613311565b604051610a4f9190614ee7565b60405180910390f35b348015610a6457600080fd5b50610a7f6004803603810190610a7a9190615525565b6136ca565b604051610a8c9190614946565b60405180910390f35b348015610aa157600080fd5b50610abc6004803603810190610ab79190615565565b613762565b604051610ac99190614e0a565b60405180910390f35b348015610ade57600080fd5b50610af96004803603810190610af49190614e25565b61390c565b604051610b069190614946565b60405180910390f35b348015610b1b57600080fd5b50610b366004803603810190610b319190615605565b613a4e565b604051610b439190614946565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614dce565b613d7c565b604051610b809190614e0a565b60405180910390f35b6000806000837c0100000000000000000000000000000000000000000000000000000000900491506301ffc9a7847c0100000000000000000000000000000000000000000000000000000000900463ffffffff1603610bed57600192505050610c83565b60005b610100811015610c7b5763ffffffff817fc22876c3d283ef1ddd9d2087449a52f8abe1f1f5ed75b333f0440c0f982ab05d908060020a820491505016915060008263ffffffff1603610c485760009350505050610c83565b8163ffffffff168363ffffffff1603610c675760019350505050610c83565b602081610c749190615674565b9050610bf0565b506000925050505b919050565b60098054610c95906156d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc1906156d7565b8015610d0e5780601f10610ce357610100808354040283529160200191610d0e565b820191906000526020600020905b815481529060010190602001808311610cf157829003601f168201915b505050505081565b60006007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600680549050905090565b6060819050601081511115610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190615754565b60405180910390fd5b610db26147f0565b6000600790505b60008160ff1610610e0e576000600882610dd39190615774565b60ff1660ff9060020a029050600086821667ffffffffffffffff161115610dfa5750610e0e565b8180610e05906157b1565b92505050610db9565b600181610e1b91906157da565b826020019060ff16908160ff16815250506008816007610e3b919061580f565b610e459190615774565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082610ed190615879565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b61102d838383613e28565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60056020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061114a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600b8054611183906156d7565b80601f01602080910402602001604051908101604052809291908181526020018280546111af906156d7565b80156111fc5780601f106111d1576101008083540402835291602001916111fc565b820191906000526020600020905b8154815290600101906020018083116111df57829003601f168201915b505050505081565b61120f838383613e28565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008082600102905061128284826115eb565b91505092915050565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e857600080fd5b82915081519050602f7f0100000000000000000000000000000000000000000000000000000000000000028260018361132191906158e0565b8151811061133257611331615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113b25780806113ae90615943565b9150505b8067ffffffffffffffff8111156113cc576113cb614b7f565b5b6040519080825280601f01601f1916602001820160405280156113fe5781602001600182028036833780820191505090505b50600b908161140d9190615b2d565b5060005b82518110156114fe5782818151811061142d5761142c615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002600b828154611485906156d7565b811061149457611493615914565b5b8154600116156114b35790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555080806114f690615943565b915050611411565b508151811461159e577f2f00000000000000000000000000000000000000000000000000000000000000600b83518154611537906156d7565b811061154657611545615914565b5b8154600116156115655790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b505050565b600381815481106115b357600080fd5b906000526020600020016000915090505481565b600681815481106115d757600080fd5b906000526020600020016000915090505481565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116945750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61169d57600080fd5b60016004600087815260200190815260200160002080549050146116c057600080fd5b6000600460008781526020019081526020016000206000815481106116e8576116e7615914565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff161461171a57600080fd5b600060010260056000878152602001908152602001600020541461173d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1692507fc0000000000000000000000000000000000000000000000000000000000000008317925082600102600560008781526020019081526020016000208190555084600190049150600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008481526020019081526020016000208190555081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189c9190615674565b9250508190555060068290806001815401808255809150506001900390600052602060002001600090919091909150558573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516119299190614ae1565b60405180910390a384935050505092915050565b6004602052816000526040600020818154811061195957600080fd5b90600052602060002001600091509150508060000160009054906101000a900465ffffffffffff16908060000160069054906101000a900465ffffffffffff169080600001600c9054906101000a900460ff169080600001600d9054906101000a900460ff16905084565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a49575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90615c4b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080600560008460010281526020019081526020016000205490506060819060020a026c010000000000000000000000009004915050919050565b60608060606000611b2f85613311565b9150600b8054611b3e906156d7565b90509050808251611b4f9190615674565b67ffffffffffffffff811115611b6857611b67614b7f565b5b6040519080825280601f01601f191660200182016040528015611b9a5781602001600182028036833780820191505090505b50925060005b81811015611c5f57600b818154611bb6906156d7565b8110611bc557611bc4615914565b5b815460011615611be45790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611c1d57611c1c615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611c5790615943565b915050611ba0565b5060005b8251811015611d2c57828181518110611c7f57611c7e615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848381518110611cdc57611cdb615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611d1690615943565b9250508080611d2490615943565b915050611c63565b50829350505050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060006060806000611d93866125ea565b9150600f6000601154815260200190815260200160002093508360000160029054906101000a900460ff1660ff1690506001825182611dd29190615674565b611ddc9190615674565b67ffffffffffffffff811115611df557611df4614b7f565b5b6040519080825280601f01601f191660200182016040528015611e275781602001600182028036833780820191505090505b50925060005b81811015611ee1578460000160039054906101000a9004700100000000000000000000000000000000028160108110611e6957611e68615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611e9f57611e9e615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611ed990615943565b915050611e2d565b50603a7f010000000000000000000000000000000000000000000000000000000000000002838281518110611f1957611f18615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611f5390615943565b91505060005b825181101561201f57828181518110611f7557611f74615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848284611fcc9190615674565b81518110611fdd57611fdc615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061201790615943565b915050611f59565b5082945050505050919050565b612036848461126f565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61206b848461126f565b5050505050565b600a805461207f906156d7565b80601f01602080910402602001604051908101604052809291908181526020018280546120ab906156d7565b80156120f85780601f106120cd576101008083540402835291602001916120f8565b820191906000526020600020905b8154815290600101906020018083116120db57829003601f168201915b505050505081565b6000600f6000838152602001908152602001600020905060008160000160009054906101000a900460ff1660ff161161213857600080fd5b816011819055508060000160009054906101000a900460ff1660ff1667ffffffffffffffff81111561216d5761216c614b7f565b5b6040519080825280601f01601f19166020018201604052801561219f5781602001600182028036833780820191505090505b50601090816121ae9190615b2d565b505050565b80156122d457600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225157600080fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506123ec565b600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361236c57600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124499190614946565b60405180910390a35050565b60115481565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900470010000000000000000000000000000000002908060000160139054906101000a9004780100000000000000000000000000000000000000000000000002905085565b612505848484613e28565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e846125ba90615c80565b6040516125c79190614e0a565b60405180910390a450505050565b60606125e382601154612cae565b9050919050565b606080600080600285516125fe9190615ce7565b67ffffffffffffffff81111561261757612616614b7f565b5b6040519080825280601f01601f1916602001820160405280156126495781602001600182028036833780820191505090505b5092506000905060005b602081101561299757600460f087838151811061267357612672615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156127725760308361270991906157da565b7f01000000000000000000000000000000000000000000000000000000000000000284838151811061273e5761273d615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506127e4565b60578361277f91906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106127b4576127b3615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f8682815181106127f9576127f8615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff1610156128f75760308361288291906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846128b29190615674565b815181106128c3576128c2615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612975565b60578361290491906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846129349190615674565b8151811061294557612944615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826129829190615674565b9150808061298f90615943565b915050612653565b50829350505050919050565b6000600460008581526020019081526020016000208361ffff16815481106129ce576129cd615914565b5b90600052602060002001905080600001600c9054906101000a900460ff1615612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390615d75565b60405180910390fd5b80600001600d9054906101000a900460ff1615612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590615de1565b60405180910390fd5b60008265ffffffffffff1603612aa8578060000160069054906101000a900465ffffffffffff1691505b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168265ffffffffffff161015612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890615e4d565b60405180910390fd5b818160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550600181600001600d6101000a81548160ff02191690831515021790555050505050565b6060600060608360010291506000600460008481526020019081526020016000208054905003612b9157612b8e82613d7c565b91505b6000600460008481526020019081526020016000208054905011612bb457600080fd5b602067ffffffffffffffff811115612bcf57612bce614b7f565b5b6040519080825280601f01601f191660200182016040528015612c015781602001600182028036833780820191505090505b50905060005b6020811015612c9b57828160208110612c2357612c22615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612c5957612c58615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612c9390615943565b915050612c07565b50612ca581611b1f565b92505050919050565b606060006060600f600085815260200190815260200160002091508160000160019054906101000a900460ff1660ff168260000160009054906101000a900460ff1660ff168651612cff9190615674565b612d099190615674565b67ffffffffffffffff811115612d2257612d21614b7f565b5b6040519080825280601f01601f191660200182016040528015612d545781602001600182028036833780820191505090505b50905060005b8260000160019054906101000a900460ff1660ff16811015612e2a578260000160139054906101000a90047801000000000000000000000000000000000000000000000000028160088110612db257612db1615914565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612de857612de7615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612e2290615943565b915050612d5a565b8260000160009054906101000a900460ff167f010000000000000000000000000000000000000000000000000000000000000002828281518110612e7157612e70615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612eab90615943565b91505060005b8651811015612f7757868181518110612ecd57612ecc615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838284612f249190615674565b81518110612f3557612f34615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612f6f90615943565b915050612eb1565b5081935050505092915050565b600080600460008581526020019081526020016000208361ffff1681548110612fb057612faf615914565b5b90600052602060002001905080600001600c9054906101000a900460ff161561300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300590615d75565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130b15750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e790615c4b565b60405180910390fd5b60008361ffff16148015613122575060008160000160009054906101000a900465ffffffffffff1665ffffffffffff16145b801561313c575080600001600d9054906101000a900460ff165b1561319b5760018160000160068282829054906101000a900465ffffffffffff166131679190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555061319385856115eb565b915050613222565b80600001600d9054906101000a900460ff16156131fb578060000160009054906101000a900465ffffffffffff1665ffffffffffff168160000160069054906101000a900465ffffffffffff1665ffffffffffff16106131fa57600080fd5b5b61321e8585858460000160069054906101000a900465ffffffffffff1685614343565b9150505b9392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90615c4b565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606080600080600285516133259190615ce7565b67ffffffffffffffff81111561333e5761333d614b7f565b5b6040519080825280601f01601f1916602001820160405280156133705781602001600182028036833780820191505090505b5092506000905060005b60208110156136be57600460f087838151811061339a57613399615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156134995760308361343091906157da565b7f01000000000000000000000000000000000000000000000000000000000000000284838151811061346557613464615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061350b565b6057836134a691906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106134db576134da615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f8682815181106135205761351f615914565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff16101561361e576030836135a991906157da565b7f010000000000000000000000000000000000000000000000000000000000000002846001846135d99190615674565b815181106135ea576135e9615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061369c565b60578361362b91906157da565b7f0100000000000000000000000000000000000000000000000000000000000000028460018461365b9190615674565b8151811061366c5761366b615914565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826136a99190615674565b915080806136b690615943565b91505061337a565b50829350505050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600080600460008681526020019081526020016000208461ffff168154811061378e5761378d615914565b5b90600052602060002001905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061383d5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61387c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387390615c4b565b60405180910390fd5b60008160000160009054906101000a900465ffffffffffff1665ffffffffffff16116138a757600080fd5b80600001600d9054906101000a900460ff166138c257600080fd5b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168365ffffffffffff16106138f457600080fd5b6139018686868685614343565b915050949350505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461396757600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613af45750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2a90615c4b565b60405180910390fd5b613b3b614856565b600460008681526020019081526020016000208054905091506000821115613bb857600060046000878152602001908152602001600020600081548110613b8557613b84615914565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff1611613bb757600080fd5b5b60008460050b03613bd9576001816060019015159081151581525050613c14565b60008460050b1315613c135783816000019065ffffffffffff16908165ffffffffffff168152505060018160600190151590811515815250505b5b60046000868152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548160ff021916908315150217905550606082015181600001600d6101000a81548160ff0219169083151502179055505050600385908060018154018082558091505060019003906000526020600020016000909190919091505580606001511515816000015165ffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77d96978d8b40ac826d1984d992e71a84672e62d825fda78cd646656481d065b88604051613d689190614e0a565b60405180910390a460019250505092915050565b60008060056000848152602001908152602001600020549050613d9e816146fb565b613da757600080fd5b613db08161472d565b15613dbe5782915050613e23565b7effffffffffffffff00000000000000000000000000000000000000000000006001028116905060b881908060020a820491505090507fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000600102831681179050809150505b919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613e829190614ae1565b602060405180830381865afa158015613e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec39190615ebc565b92508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613efd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614614031573373ffffffffffffffffffffffffffffffffffffffff166007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061402757503373ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61403057600080fd5b5b60006007600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061408e848661475f565b600d60008581526020019081526020016000205491506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140f091906158e0565b9050818111156141a057600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055505b6000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142dd91906158e0565b925050819055506001600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143349190615674565b92505081905550505050505050565b60008060008060007fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008960019004169350603067ffffffffffffffff8961ffff161667ffffffffffffffff169060020a0267ffffffffffffffff16841793508665ffffffffffff168417935083600102915060006001026005600084815260200190815260200160002054146143d857600080fd5b85600001600c9054906101000a900460ff1661443a578560000160069054906101000a900465ffffffffffff1665ffffffffffff168765ffffffffffff161461443957600186600001600c6101000a81548160ff0219169083151502179055505b5b67ffffffffffffffff896001900416925060b8839060020a0292507f8000000000000000000000000000000000000000000000000000000000000000831792508973ffffffffffffffffffffffffffffffffffffffff168317925060018660000160068282829054906101000a900465ffffffffffff166144bb9190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555085600001600d9054906101000a900460ff1661453c5760018660000160008282829054906101000a900465ffffffffffff166145199190615e6d565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505b826001026005600084815260200190815260200160002081905550600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008681526020019081526020016000208190555083600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546146569190615674565b9250508190555060068490806001815401808255809150506001900390600052602060002001600090919091909150558973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8866040516146e39190614ae1565b60405180910390a38194505050505095945050505050565b6000807f8000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b6000807f4000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b60008083600102905060056000828152602001908152602001600020546001900491506000820361478f57600080fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000821691508273ffffffffffffffffffffffffffffffffffffffff168217915081600102600560008381526020019081526020016000208190555050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6040518060800160405280600065ffffffffffff168152602001600065ffffffffffff1681526020016000151581526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6148db816148a6565b81146148e657600080fd5b50565b6000813590506148f8816148d2565b92915050565b6000602082840312156149145761491361489c565b5b6000614922848285016148e9565b91505092915050565b60008115159050919050565b6149408161492b565b82525050565b600060208201905061495b6000830184614937565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561499b578082015181840152602081019050614980565b60008484015250505050565b6000601f19601f8301169050919050565b60006149c382614961565b6149cd818561496c565b93506149dd81856020860161497d565b6149e6816149a7565b840191505092915050565b60006020820190508181036000830152614a0b81846149b8565b905092915050565b6000819050919050565b614a2681614a13565b8114614a3157600080fd5b50565b600081359050614a4381614a1d565b92915050565b600060208284031215614a5f57614a5e61489c565b5b6000614a6d84828501614a34565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614aa182614a76565b9050919050565b614ab181614a96565b82525050565b6000602082019050614acc6000830184614aa8565b92915050565b614adb81614a13565b82525050565b6000602082019050614af66000830184614ad2565b92915050565b600060ff82169050919050565b614b1281614afc565b8114614b1d57600080fd5b50565b600081359050614b2f81614b09565b92915050565b600067ffffffffffffffff82169050919050565b614b5281614b35565b8114614b5d57600080fd5b50565b600081359050614b6f81614b49565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614bb7826149a7565b810181811067ffffffffffffffff82111715614bd657614bd5614b7f565b5b80604052505050565b6000614be9614892565b9050614bf58282614bae565b919050565b600067ffffffffffffffff821115614c1557614c14614b7f565b5b614c1e826149a7565b9050602081019050919050565b82818337600083830152505050565b6000614c4d614c4884614bfa565b614bdf565b905082815260208101848484011115614c6957614c68614b7a565b5b614c74848285614c2b565b509392505050565b600082601f830112614c9157614c90614b75565b5b8135614ca1848260208601614c3a565b91505092915050565b600080600060608486031215614cc357614cc261489c565b5b6000614cd186828701614b20565b9350506020614ce286828701614b60565b925050604084013567ffffffffffffffff811115614d0357614d026148a1565b5b614d0f86828701614c7c565b9150509250925092565b614d2281614a96565b8114614d2d57600080fd5b50565b600081359050614d3f81614d19565b92915050565b600080600060608486031215614d5e57614d5d61489c565b5b6000614d6c86828701614d30565b9350506020614d7d86828701614d30565b9250506040614d8e86828701614a34565b9150509250925092565b6000819050919050565b614dab81614d98565b8114614db657600080fd5b50565b600081359050614dc881614da2565b92915050565b600060208284031215614de457614de361489c565b5b6000614df284828501614db9565b91505092915050565b614e0481614d98565b82525050565b6000602082019050614e1f6000830184614dfb565b92915050565b600060208284031215614e3b57614e3a61489c565b5b6000614e4984828501614d30565b91505092915050565b60008060408385031215614e6957614e6861489c565b5b6000614e7785828601614d30565b9250506020614e8885828601614a34565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000614eb982614e92565b614ec38185614e9d565b9350614ed381856020860161497d565b614edc816149a7565b840191505092915050565b60006020820190508181036000830152614f018184614eae565b905092915050565b600060208284031215614f1f57614f1e61489c565b5b600082013567ffffffffffffffff811115614f3d57614f3c6148a1565b5b614f4984828501614c7c565b91505092915050565b60008060408385031215614f6957614f6861489c565b5b6000614f7785828601614d30565b9250506020614f8885828601614db9565b9150509250929050565b60008060408385031215614fa957614fa861489c565b5b6000614fb785828601614db9565b9250506020614fc885828601614a34565b9150509250929050565b600065ffffffffffff82169050919050565b614fed81614fd2565b82525050565b60006080820190506150086000830187614fe4565b6150156020830186614fe4565b6150226040830185614937565b61502f6060830184614937565b95945050505050565b600067ffffffffffffffff82111561505357615052614b7f565b5b61505c826149a7565b9050602081019050919050565b600061507c61507784615038565b614bdf565b90508281526020810184848401111561509857615097614b7a565b5b6150a3848285614c2b565b509392505050565b600082601f8301126150c0576150bf614b75565b5b81356150d0848260208601615069565b91505092915050565b6000602082840312156150ef576150ee61489c565b5b600082013567ffffffffffffffff81111561510d5761510c6148a1565b5b615119848285016150ab565b91505092915050565b600080fd5b600080fd5b60008083601f84011261514257615141614b75565b5b8235905067ffffffffffffffff81111561515f5761515e615122565b5b60208301915083600182028301111561517b5761517a615127565b5b9250929050565b6000806000806060858703121561519c5761519b61489c565b5b60006151aa87828801614d30565b94505060206151bb87828801614a34565b935050604085013567ffffffffffffffff8111156151dc576151db6148a1565b5b6151e88782880161512c565b925092505092959194509250565b6151ff8161492b565b811461520a57600080fd5b50565b60008135905061521c816151f6565b92915050565b600080604083850312156152395761523861489c565b5b600061524785828601614d30565b92505060206152588582860161520d565b9150509250929050565b61526b81614afc565b82525050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b6152a681615271565b82525050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b6152e1816152ac565b82525050565b600060a0820190506152fc6000830188615262565b6153096020830187615262565b6153166040830186615262565b615323606083018561529d565b61533060808301846152d8565b9695505050505050565b600080600080608085870312156153545761535361489c565b5b600061536287828801614d30565b945050602061537387828801614d30565b935050604061538487828801614a34565b925050606085013567ffffffffffffffff8111156153a5576153a46148a1565b5b6153b1878288016150ab565b91505092959194509250565b600061ffff82169050919050565b6153d4816153bd565b81146153df57600080fd5b50565b6000813590506153f1816153cb565b92915050565b61540081614fd2565b811461540b57600080fd5b50565b60008135905061541d816153f7565b92915050565b60008060006060848603121561543c5761543b61489c565b5b600061544a86828701614db9565b935050602061545b868287016153e2565b925050604061546c8682870161540e565b9150509250925092565b6000806040838503121561548d5761548c61489c565b5b600083013567ffffffffffffffff8111156154ab576154aa6148a1565b5b6154b7858286016150ab565b92505060206154c885828601614a34565b9150509250929050565b6000806000606084860312156154eb576154ea61489c565b5b60006154f986828701614d30565b935050602061550a86828701614db9565b925050604061551b868287016153e2565b9150509250925092565b6000806040838503121561553c5761553b61489c565b5b600061554a85828601614d30565b925050602061555b85828601614d30565b9150509250929050565b6000806000806080858703121561557f5761557e61489c565b5b600061558d87828801614d30565b945050602061559e87828801614db9565b93505060406155af878288016153e2565b92505060606155c08782880161540e565b91505092959194509250565b60008160050b9050919050565b6155e2816155cc565b81146155ed57600080fd5b50565b6000813590506155ff816155d9565b92915050565b6000806040838503121561561c5761561b61489c565b5b600061562a85828601614db9565b925050602061563b858286016155f0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061567f82614a13565b915061568a83614a13565b92508282019050808211156156a2576156a1615645565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806156ef57607f821691505b602082108103615702576157016156a8565b5b50919050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600061573e60138361496c565b915061574982615708565b602082019050919050565b6000602082019050818103600083015261576d81615731565b9050919050565b600061577f82614afc565b915061578a83614afc565b925082820261579881614afc565b91508082146157aa576157a9615645565b5b5092915050565b60006157bc82614afc565b9150600082036157cf576157ce615645565b5b600182039050919050565b60006157e582614afc565b91506157f083614afc565b9250828201905060ff81111561580957615808615645565b5b92915050565b600061581a82614afc565b915061582583614afc565b9250828203905060ff81111561583e5761583d615645565b5b92915050565b6000819050602082019050919050565b60006158608251615271565b80915050919050565b60008160020a8302905092915050565b600061588482614e92565b8261588e84615844565b905061589981615854565b925060108210156158d9576158d47fffffffffffffffffffffffffffffffff0000000000000000000000000000000083601003600802615869565b831692505b5050919050565b60006158eb82614a13565b91506158f683614a13565b925082820390508181111561590e5761590d615645565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061594e82614a13565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036159805761597f615645565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b6000600883026159e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615869565b6159ea8683615869565b95508019841693508086168417925050509392505050565b6000819050919050565b6000615a27615a22615a1d84614a13565b615a02565b614a13565b9050919050565b6000819050919050565b615a4183615a0c565b615a55615a4d82615a2e565b8484546159b0565b825550505050565b600090565b615a6a615a5d565b615a75818484615a38565b505050565b5b81811015615a9957615a8e600082615a62565b600181019050615a7b565b5050565b601f821115615ade57615aaf8161598b565b615ab8846159a0565b81016020851015615ac7578190505b615adb615ad3856159a0565b830182615a7a565b50505b505050565b60008160020a8304905092915050565b6000615b0460001984600802615ae3565b1980831691505092915050565b6000615b1d8383615af3565b9150826002028217905092915050565b615b3682614e92565b67ffffffffffffffff811115615b4f57615b4e614b7f565b5b615b5982546156d7565b615b64828285615a9d565b600060209050601f831160018114615b975760008415615b85578287015190505b615b8f8582615b11565b865550615bf7565b601f198416615ba58661598b565b60005b82811015615bcd57848901518255600182019150602085019450602081019050615ba8565b86831015615bea5784890151615be6601f891682615af3565b8355505b6001600288020188555050505b505050505050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000615c35600a8361496c565b9150615c4082615bff565b602082019050919050565b60006020820190508181036000830152615c6481615c28565b9050919050565b6000615c778251614d98565b80915050919050565b6000615c8b82614e92565b82615c9584615844565b9050615ca081615c6b565b92506020821015615ce057615cdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802615869565b831692505b5050919050565b6000615cf282614a13565b9150615cfd83614a13565b9250828202615d0b81614a13565b91508282048414831517615d2257615d21615645565b5b5092915050565b7f4552525f53504152534500000000000000000000000000000000000000000000600082015250565b6000615d5f600a8361496c565b9150615d6a82615d29565b602082019050919050565b60006020820190508181036000830152615d8e81615d52565b9050919050565b7f4552525f43415050454400000000000000000000000000000000000000000000600082015250565b6000615dcb600a8361496c565b9150615dd682615d95565b602082019050919050565b60006020820190508181036000830152615dfa81615dbe565b9050919050565b7f4552525f4341505f4c4f57000000000000000000000000000000000000000000600082015250565b6000615e37600b8361496c565b9150615e4282615e01565b602082019050919050565b60006020820190508181036000830152615e6681615e2a565b9050919050565b6000615e7882614fd2565b9150615e8383614fd2565b9250828201905065ffffffffffff811115615ea157615ea0615645565b5b92915050565b600081519050615eb681614d19565b92915050565b600060208284031215615ed257615ed161489c565b5b6000615ee084828501615ea7565b9150509291505056fea26469706673582212206169dbc4c5a1b80a003c6ca077d743d6319e728a25234b24abfa69e7d3e1d92664736f6c63430008120033 -\ No newline at end of file +60806040523480156200001157600080fd5b5060405162006a7138038062006a71833981810160405281019062000037919062000631565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009908162000088919062000907565b5080600a90816200009a919062000907565b50620000ee602060126040518060400160405280600681526020017f736861323536000000000000000000000000000000000000000000000000000081525062000161640100000000026401000000009004565b6012601181905550602067ffffffffffffffff811115620001145762000113620004cd565b5b6040519080825280601f01601f191660200182016040528015620001475781602001600182028036833780820191505090505b506010908162000158919062000a5e565b50505062000db3565b6060819050601081511115620001ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a59062000ba6565b60405180910390fd5b620001b862000438565b6000600790505b60008160ff16106200021c576000600882620001dc919062000c04565b60ff1660ff9060020a029050600086821667ffffffffffffffff1611156200020557506200021c565b8180620002129062000c4a565b92505050620001bf565b6001816200022b919062000c78565b826020019060ff16908160ff168152505060088160076200024d919062000cb4565b62000259919062000c04565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082620002e79062000d43565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050782620004bc565b810181811067ffffffffffffffff82111715620005295762000528620004cd565b5b80604052505050565b60006200053e6200049e565b90506200054c8282620004fc565b919050565b600067ffffffffffffffff8211156200056f576200056e620004cd565b5b6200057a82620004bc565b9050602081019050919050565b60005b83811015620005a75780820151818401526020810190506200058a565b60008484015250505050565b6000620005ca620005c48462000551565b62000532565b905082815260208101848484011115620005e957620005e8620004b7565b5b620005f684828562000587565b509392505050565b600082601f830112620006165762000615620004b2565b5b815162000628848260208601620005b3565b91505092915050565b600080604083850312156200064b576200064a620004a8565b5b600083015167ffffffffffffffff8111156200066c576200066b620004ad565b5b6200067a85828601620005fe565b925050602083015167ffffffffffffffff8111156200069e576200069d620004ad565b5b620006ac85828601620005fe565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070957607f821691505b6020821081036200071f576200071e620006c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b6000600883026200078c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200074a565b6200079886836200074a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007e5620007df620007d984620007b0565b620007ba565b620007b0565b9050919050565b6000819050919050565b6200080183620007c4565b620008196200081082620007ec565b8484546200075a565b825550505050565b600090565b6200083062000821565b6200083d818484620007f6565b505050565b5b8181101562000865576200085960008262000826565b60018101905062000843565b5050565b601f821115620008b4576200087e8162000725565b62000889846200073a565b8101602085101562000899578190505b620008b1620008a8856200073a565b83018262000842565b50505b505050565b60008160020a8304905092915050565b6000620008dc60001984600802620008b9565b1980831691505092915050565b6000620008f78383620008c9565b9150826002028217905092915050565b6200091282620006b6565b67ffffffffffffffff8111156200092e576200092d620004cd565b5b6200093a8254620006f0565b6200094782828562000869565b600060209050601f8311600181146200097f57600084156200096a578287015190505b620009768582620008e9565b865550620009e6565b601f1984166200098f8662000725565b60005b82811015620009b95784890151825560018201915060208501945060208101905062000992565b86831015620009d95784890151620009d5601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b60008190508160005260206000209050919050565b601f82111562000a595762000a2381620009f9565b62000a2e846200073a565b8101602085101562000a3e578190505b62000a5662000a4d856200073a565b83018262000842565b50505b505050565b62000a6982620009ee565b67ffffffffffffffff81111562000a855762000a84620004cd565b5b62000a918254620006f0565b62000a9e82828562000a0e565b600060209050601f83116001811462000ad6576000841562000ac1578287015190505b62000acd8582620008e9565b86555062000b3d565b601f19841662000ae686620009f9565b60005b8281101562000b105784890151825560018201915060208501945060208101905062000ae9565b8683101562000b30578489015162000b2c601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b600062000b8e60138362000b45565b915062000b9b8262000b56565b602082019050919050565b6000602082019050818103600083015262000bc18162000b7f565b9050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c118262000bc8565b915062000c1e8362000bc8565b925082820262000c2e8162000bc8565b915080821462000c435762000c4262000bd5565b5b5092915050565b600062000c578262000bc8565b91506000820362000c6d5762000c6c62000bd5565b5b600182039050919050565b600062000c858262000bc8565b915062000c928362000bc8565b9250828201905060ff81111562000cae5762000cad62000bd5565b5b92915050565b600062000cc18262000bc8565b915062000cce8362000bc8565b9250828203905060ff81111562000cea5762000ce962000bd5565b5b92915050565b6000819050602082019050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b600062000d3a825162000d00565b80915050919050565b600062000d5082620009ee565b8262000d5c8462000cf0565b905062000d698162000d2c565b9250601082101562000dac5762000da77fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026200074a565b831692505b5050919050565b615cae8062000dc36000396000f3fe60806040526004361061028f576000357c01000000000000000000000000000000000000000000000000000000009004806386e90b591161016c578063c43ead88116100de578063da2824a811610097578063da2824a814610a51578063e985e9c514610a7a578063f117e17314610ab7578063f2fde38b14610af4578063f70a3de814610b31578063f9613ab214610b6e5761028f565b8063c43ead88146108f7578063c5bec6fc14610934578063c6eba7c414610971578063c87b56dd1461099a578063cfc3b179146109d7578063d824ee4f14610a145761028f565b80639a7c5e9f116101305780639a7c5e9f146107f2578063a22cb4651461081b578063a249e91214610844578063a5d6f2091461086f578063b5fdeb23146108b0578063b88d4fde146108db5761028f565b806386e90b591461070d5780638832e6e31461074a5780638da5cb5b1461077357806394d008ef1461079e57806395d89b41146107c75761028f565b8063449a52f81161020557806353a1fd02116101c957806353a1fd02146105b0578063559f5dc9146105ed5780635ae06f7e1461062d5780636352211e146106565780636b9cb86a1461069357806370a08231146106d05761028f565b8063449a52f8146104a757806349f2553a146104e45780634f64b2be1461050d5780634f6ccce71461054a5780635344299a146105875761028f565b806323b872dd1161025757806323b872dd1461038d57806324e0febc146103a95780632b29ba23146103e65780632f745c591461042357806340c84b0e1461046057806342842e0e1461048b5761028f565b806301ffc9a71461029457806306fdde03146102d1578063081812fc146102fc57806318160ddd146103395780631f8cf64914610364575b600080fd5b3480156102a057600080fd5b506102bb60048036038101906102b6919061468d565b610bab565b6040516102c891906146d5565b60405180910390f35b3480156102dd57600080fd5b506102e6610caa565b6040516102f39190614780565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906147d8565b610d38565b6040516103309190614846565b60405180910390f35b34801561034557600080fd5b5061034e610d75565b60405161035b9190614870565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190614a39565b610d82565b005b6103a760048036038101906103a29190614ad4565b611044565b005b3480156103b557600080fd5b506103d060048036038101906103cb9190614b5d565b6110af565b6040516103dd9190614b99565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614bb4565b6110c7565b60405161041a91906146d5565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190614be1565b611173565b6040516104579190614870565b60405180910390f35b34801561046c57600080fd5b50610475611198565b6040516104829190614c76565b60405180910390f35b6104a560048036038101906104a09190614ad4565b611226565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190614be1565b611291565b6040516104db9190614b99565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190614c98565b6112ad565b005b34801561051957600080fd5b50610534600480360381019061052f91906147d8565b6115c5565b6040516105419190614b99565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906147d8565b6115e9565b60405161057e9190614870565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614d82565b61160d565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190614dcb565b611699565b6040516105e49190614b99565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614e0b565b6119eb565b6040516106249493929190614e6c565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614bb4565b611a72565b005b34801561066257600080fd5b5061067d600480360381019061067891906147d8565b611b91565b60405161068a9190614846565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190614d82565b611bcd565b6040516106c79190614780565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190614bb4565b611de6565b6040516107049190614870565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190614d82565b611e2f565b6040516107419190614780565b60405180910390f35b34801561075657600080fd5b50610771600480360381019061076c9190614f11565b6120da565b005b34801561077f57600080fd5b506107886120eb565b6040516107959190614846565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190614f11565b61210f565b005b3480156107d357600080fd5b506107dc612120565b6040516107e99190614780565b60405180910390f35b3480156107fe57600080fd5b50610819600480360381019061081491906147d8565b6121ae565b005b34801561082757600080fd5b50610842600480360381019061083d9190614fb1565b612261565b005b34801561085057600080fd5b50610859612503565b6040516108669190614870565b60405180910390f35b34801561087b57600080fd5b50610896600480360381019061089191906147d8565b612509565b6040516108a7959493929190615076565b60405180910390f35b3480156108bc57600080fd5b506108c56125a8565b6040516108d29190614c76565b60405180910390f35b6108f560048036038101906108f091906150c9565b612642565b005b34801561090357600080fd5b5061091e60048036038101906109199190614d82565b61271d565b60405161092b9190614c76565b60405180910390f35b34801561094057600080fd5b5061095b60048036038101906109569190614d82565b612732565b6040516109689190614c76565b60405180910390f35b34801561097d57600080fd5b50610998600480360381019061099391906151b2565b612aeb565b005b3480156109a657600080fd5b506109c160048036038101906109bc91906147d8565b612ca3565b6040516109ce9190614780565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f99190615205565b612df6565b604051610a0b9190614c76565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a369190615261565b6130cc565b604051610a489190614b99565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a739190614bb4565b613371565b005b348015610a8657600080fd5b50610aa16004803603810190610a9c91906152b4565b613459565b604051610aae91906146d5565b60405180910390f35b348015610ac357600080fd5b50610ade6004803603810190610ad991906152f4565b6134f1565b604051610aeb9190614b99565b60405180910390f35b348015610b0057600080fd5b50610b1b6004803603810190610b169190614bb4565b61369b565b604051610b2891906146d5565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b539190615394565b6137dd565b604051610b6591906146d5565b60405180910390f35b348015610b7a57600080fd5b50610b956004803603810190610b909190614b5d565b613b0b565b604051610ba29190614b99565b60405180910390f35b6000806000837c0100000000000000000000000000000000000000000000000000000000900491506301ffc9a7847c0100000000000000000000000000000000000000000000000000000000900463ffffffff1603610c0f57600192505050610ca5565b60005b610100811015610c9d5763ffffffff817fc22876c3d283ef1ddd9d2087449a52f8abe1f1f5ed75b333f0440c0f982ab05d908060020a820491505016915060008263ffffffff1603610c6a5760009350505050610ca5565b8163ffffffff168363ffffffff1603610c895760019350505050610ca5565b602081610c969190615403565b9050610c12565b506000925050505b919050565b60098054610cb790615466565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce390615466565b8015610d305780601f10610d0557610100808354040283529160200191610d30565b820191906000526020600020905b815481529060010190602001808311610d1357829003601f168201915b505050505081565b60006007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600680549050905090565b6060819050601081511115610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906154e3565b60405180910390fd5b610dd461457f565b6000600790505b60008160ff1610610e30576000600882610df59190615503565b60ff1660ff9060020a029050600086821667ffffffffffffffff161115610e1c5750610e30565b8180610e2790615540565b92505050610ddb565b600181610e3d9190615569565b826020019060ff16908160ff16815250506008816007610e5d919061559e565b610e679190615503565b60ff168567ffffffffffffffff169060020a02780100000000000000000000000000000000000000000000000002826080019077ffffffffffffffffffffffffffffffffffffffffffffffff1916908177ffffffffffffffffffffffffffffffffffffffffffffffff1916815250508251826040019060ff16908160ff168152505082610ef390615608565b82606001906fffffffffffffffffffffffffffffffff191690816fffffffffffffffffffffffffffffffff19168152505085826000019060ff16908160ff168152505081600f60008767ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a8154816fffffffffffffffffffffffffffffffff02191690837001000000000000000000000000000000009004021790555060808201518160000160136101000a81548167ffffffffffffffff0219169083780100000000000000000000000000000000000000000000000090040217905550905050505050505050565b61104f838383613bb7565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60056020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061116c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600b80546111a590615466565b80601f01602080910402602001604051908101604052809291908181526020018280546111d190615466565b801561121e5780601f106111f35761010080835404028352916020019161121e565b820191906000526020600020905b81548152906001019060200180831161120157829003601f168201915b505050505081565b611231838383613bb7565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000808260010290506112a48482611699565b91505092915050565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130a57600080fd5b82915081519050602f7f01000000000000000000000000000000000000000000000000000000000000000282600183611343919061566f565b81518110611354576113536156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113d45780806113d0906156d2565b9150505b8067ffffffffffffffff8111156113ee576113ed61490e565b5b6040519080825280601f01601f1916602001820160405280156114205781602001600182028036833780820191505090505b50600b908161142f91906158bc565b5060005b82518110156115205782818151811061144f5761144e6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002600b8281546114a790615466565b81106114b6576114b56156a3565b5b8154600116156114d55790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055508080611518906156d2565b915050611433565b50815181146115c0577f2f00000000000000000000000000000000000000000000000000000000000000600b8351815461155990615466565b8110611568576115676156a3565b5b8154600116156115875790600052602060002090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055505b505050565b600381815481106115d557600080fd5b906000526020600020016000915090505481565b600681815481106115f957600080fd5b906000526020600020016000915090505481565b6000600f6000601154815260200190815260200160002090508060000160009054906101000a900460ff1660ff1682511461164757600080fd5b816010908161165691906158bc565b507f502ae868d71f78c5d099f033dd3007a4f58aebb3a2816544fe690f8b9604b56c6116806125a8565b60405161168d9190614c76565b60405180910390a15050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117425750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61174b57600080fd5b600160046000878152602001908152602001600020805490501461176e57600080fd5b600060046000878152602001908152602001600020600081548110611796576117956156a3565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff16146117c857600080fd5b60006001026005600087815260200190815260200160002054146117eb57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1692507fc0000000000000000000000000000000000000000000000000000000000000008317925082600102600560008781526020019081526020016000208190555084600190049150600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008481526020019081526020016000208190555081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461194a9190615403565b9250508190555060068290806001815401808255809150506001900390600052602060002001600090919091909150558573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516119d79190614870565b60405180910390a384935050505092915050565b60046020528160005260406000208181548110611a0757600080fd5b90600052602060002001600091509150508060000160009054906101000a900465ffffffffffff16908060000160069054906101000a900465ffffffffffff169080600001600c9054906101000a900460ff169080600001600d9054906101000a900460ff16905084565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611af7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d906159da565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080600560008460010281526020019081526020016000205490506060819060020a026c010000000000000000000000009004915050919050565b60608060606000611bdd85612732565b9150600b8054611bec90615466565b90509050808251611bfd9190615403565b67ffffffffffffffff811115611c1657611c1561490e565b5b6040519080825280601f01601f191660200182016040528015611c485781602001600182028036833780820191505090505b50925060005b81811015611d0d57600b818154611c6490615466565b8110611c7357611c726156a3565b5b815460011615611c925790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611ccb57611cca6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611d05906156d2565b915050611c4e565b5060005b8251811015611dda57828181518110611d2d57611d2c6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002848381518110611d8a57611d896156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611dc4906156d2565b9250508080611dd2906156d2565b915050611d11565b50829350505050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060006060806000611e4186612732565b9150600f6000601154815260200190815260200160002093508360000160029054906101000a900460ff1660ff1690506001825182611e809190615403565b611e8a9190615403565b67ffffffffffffffff811115611ea357611ea261490e565b5b6040519080825280601f01601f191660200182016040528015611ed55781602001600182028036833780820191505090505b50925060005b81811015611f8f578460000160039054906101000a9004700100000000000000000000000000000000028160108110611f1757611f166156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002848281518110611f4d57611f4c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611f87906156d2565b915050611edb565b50603a7f010000000000000000000000000000000000000000000000000000000000000002838281518110611fc757611fc66156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612001906156d2565b91505060005b82518110156120cd57828181518110612023576120226156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000284828461207a9190615403565b8151811061208b5761208a6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806120c5906156d2565b915050612007565b5082945050505050919050565b6120e48484611291565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121198484611291565b5050505050565b600a805461212d90615466565b80601f016020809104026020016040519081016040528092919081815260200182805461215990615466565b80156121a65780601f1061217b576101008083540402835291602001916121a6565b820191906000526020600020905b81548152906001019060200180831161218957829003601f168201915b505050505081565b6000600f6000838152602001908152602001600020905060008160000160009054906101000a900460ff1660ff16116121e657600080fd5b816011819055508060000160009054906101000a900460ff1660ff1667ffffffffffffffff81111561221b5761221a61490e565b5b6040519080825280601f01601f19166020018201604052801561224d5781602001600182028036833780820191505090505b506010908161225c91906158bc565b505050565b801561238257600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ff57600080fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061249a565b600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361241a57600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124f791906146d5565b60405180910390a35050565b60115481565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900470010000000000000000000000000000000002908060000160139054906101000a9004780100000000000000000000000000000000000000000000000002905085565b606061263d601080546125ba90615466565b80601f01602080910402602001604051908101604052809291908181526020018280546125e690615466565b80156126335780601f1061260857610100808354040283529160200191612633565b820191906000526020600020905b81548152906001019060200180831161261657829003601f168201915b505050505061271d565b905090565b61264d848484613bb7565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e8461270290615a0f565b60405161270f9190614b99565b60405180910390a450505050565b606061272b82601154612df6565b9050919050565b606080600080600285516127469190615a76565b67ffffffffffffffff81111561275f5761275e61490e565b5b6040519080825280601f01601f1916602001820160405280156127915781602001600182028036833780820191505090505b5092506000905060005b6020811015612adf57600460f08783815181106127bb576127ba6156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156128ba576030836128519190615569565b7f010000000000000000000000000000000000000000000000000000000000000002848381518110612886576128856156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061292c565b6057836128c79190615569565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106128fc576128fb6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f868281518110612941576129406156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff161015612a3f576030836129ca9190615569565b7f010000000000000000000000000000000000000000000000000000000000000002846001846129fa9190615403565b81518110612a0b57612a0a6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612abd565b605783612a4c9190615569565b7f01000000000000000000000000000000000000000000000000000000000000000284600184612a7c9190615403565b81518110612a8d57612a8c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600282612aca9190615403565b91508080612ad7906156d2565b91505061279b565b50829350505050919050565b6000600460008581526020019081526020016000208361ffff1681548110612b1657612b156156a3565b5b90600052602060002001905080600001600c9054906101000a900460ff1615612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90615b04565b60405180910390fd5b80600001600d9054906101000a900460ff1615612bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbd90615b70565b60405180910390fd5b60008265ffffffffffff1603612bf0578060000160069054906101000a900465ffffffffffff1691505b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168265ffffffffffff161015612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5090615bdc565b60405180910390fd5b818160000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550600181600001600d6101000a81548160ff02191690831515021790555050505050565b6060600060608360010291506000600460008481526020019081526020016000208054905003612cd957612cd682613b0b565b91505b6000600460008481526020019081526020016000208054905011612cfc57600080fd5b602067ffffffffffffffff811115612d1757612d1661490e565b5b6040519080825280601f01601f191660200182016040528015612d495781602001600182028036833780820191505090505b50905060005b6020811015612de357828160208110612d6b57612d6a6156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612da157612da06156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612ddb906156d2565b915050612d4f565b50612ded81611bcd565b92505050919050565b606060006060600f600085815260200190815260200160002091508160000160019054906101000a900460ff1660ff168260000160009054906101000a900460ff1660ff168651612e479190615403565b612e519190615403565b67ffffffffffffffff811115612e6a57612e6961490e565b5b6040519080825280601f01601f191660200182016040528015612e9c5781602001600182028036833780820191505090505b50905060005b8260000160019054906101000a900460ff1660ff16811015612f72578260000160139054906101000a90047801000000000000000000000000000000000000000000000000028160088110612efa57612ef96156a3565b5b1a7f010000000000000000000000000000000000000000000000000000000000000002828281518110612f3057612f2f6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612f6a906156d2565b915050612ea2565b8260000160009054906101000a900460ff167f010000000000000000000000000000000000000000000000000000000000000002828281518110612fb957612fb86156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080612ff3906156d2565b91505060005b86518110156130bf57868181518110613015576130146156a3565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828461306c9190615403565b8151811061307d5761307c6156a3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806130b7906156d2565b915050612ff9565b5081935050505092915050565b600080600460008581526020019081526020016000208361ffff16815481106130f8576130f76156a3565b5b90600052602060002001905080600001600c9054906101000a900460ff1615613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d90615b04565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806131f95750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f906159da565b60405180910390fd5b60008361ffff1614801561326a575060008160000160009054906101000a900465ffffffffffff1665ffffffffffff16145b8015613284575080600001600d9054906101000a900460ff165b156132e35760018160000160068282829054906101000a900465ffffffffffff166132af9190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055506132db8585611699565b91505061336a565b80600001600d9054906101000a900460ff1615613343578060000160009054906101000a900465ffffffffffff1665ffffffffffff168160000160069054906101000a900465ffffffffffff1665ffffffffffff161061334257600080fd5b5b6133668585858460000160069054906101000a900465ffffffffffff16856140d2565b9150505b9392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f6906159da565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008173ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600080600460008681526020019081526020016000208461ffff168154811061351d5761351c6156a3565b5b90600052602060002001905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135cc5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61360b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613602906159da565b60405180910390fd5b60008160000160009054906101000a900465ffffffffffff1665ffffffffffff161161363657600080fd5b80600001600d9054906101000a900460ff1661365157600080fd5b8060000160009054906101000a900465ffffffffffff1665ffffffffffff168365ffffffffffff161061368357600080fd5b61369086868686856140d2565b915050949350505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136f657600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806138835750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6138c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b9906159da565b60405180910390fd5b6138ca6145e5565b60046000868152602001908152602001600020805490509150600082111561394757600060046000878152602001908152602001600020600081548110613914576139136156a3565b5b9060005260206000200160000160009054906101000a900465ffffffffffff1665ffffffffffff161161394657600080fd5b5b60008460050b036139685760018160600190151590811515815250506139a3565b60008460050b13156139a25783816000019065ffffffffffff16908165ffffffffffff168152505060018160600190151590811515815250505b5b60046000868152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548160ff021916908315150217905550606082015181600001600d6101000a81548160ff0219169083151502179055505050600385908060018154018082558091505060019003906000526020600020016000909190919091505580606001511515816000015165ffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77d96978d8b40ac826d1984d992e71a84672e62d825fda78cd646656481d065b88604051613af79190614b99565b60405180910390a460019250505092915050565b60008060056000848152602001908152602001600020549050613b2d8161448a565b613b3657600080fd5b613b3f816144bc565b15613b4d5782915050613bb2565b7effffffffffffffff00000000000000000000000000000000000000000000006001028116905060b881908060020a820491505090507fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000600102831681179050809150505b919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613c119190614870565b602060405180830381865afa158015613c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c529190615c4b565b92508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613c8c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613dc0573373ffffffffffffffffffffffffffffffffffffffff166007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613db657503373ffffffffffffffffffffffffffffffffffffffff16600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b613dbf57600080fd5b5b60006007600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e1d84866144ee565b600d60008581526020019081526020016000205491506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e7f919061566f565b905081811115613f2f57600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055505b6000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461406c919061566f565b925050819055506001600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140c39190615403565b92505081905550505050505050565b60008060008060007fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008960019004169350603067ffffffffffffffff8961ffff161667ffffffffffffffff169060020a0267ffffffffffffffff16841793508665ffffffffffff1684179350836001029150600060010260056000848152602001908152602001600020541461416757600080fd5b85600001600c9054906101000a900460ff166141c9578560000160069054906101000a900465ffffffffffff1665ffffffffffff168765ffffffffffff16146141c857600186600001600c6101000a81548160ff0219169083151502179055505b5b67ffffffffffffffff896001900416925060b8839060020a0292507f8000000000000000000000000000000000000000000000000000000000000000831792508973ffffffffffffffffffffffffffffffffffffffff168317925060018660000160068282829054906101000a900465ffffffffffff1661424a9190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff16021790555085600001600d9054906101000a900460ff166142cb5760018660000160008282829054906101000a900465ffffffffffff166142a89190615bfc565b92506101000a81548165ffffffffffff021916908365ffffffffffff1602179055505b826001026005600084815260200190815260200160002081905550600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080600d60008681526020019081526020016000208190555083600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506001600e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143e59190615403565b9250508190555060068490806001815401808255809150506001900390600052602060002001600090919091909150558973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8866040516144729190614870565b60405180910390a38194505050505095945050505050565b6000807f8000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b6000807f4000000000000000000000000000000000000000000000000000000000000000836001900416119050919050565b60008083600102905060056000828152602001908152602001600020546001900491506000820361451e57600080fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000821691508273ffffffffffffffffffffffffffffffffffffffff168217915081600102600560008381526020019081526020016000208190555050505050565b6040518060a00160405280600060ff168152602001600060ff168152602001600060ff16815260200160006fffffffffffffffffffffffffffffffff19168152602001600077ffffffffffffffffffffffffffffffffffffffffffffffff191681525090565b6040518060800160405280600065ffffffffffff168152602001600065ffffffffffff1681526020016000151581526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61466a81614635565b811461467557600080fd5b50565b60008135905061468781614661565b92915050565b6000602082840312156146a3576146a261462b565b5b60006146b184828501614678565b91505092915050565b60008115159050919050565b6146cf816146ba565b82525050565b60006020820190506146ea60008301846146c6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b6000819050919050565b6147b5816147a2565b81146147c057600080fd5b50565b6000813590506147d2816147ac565b92915050565b6000602082840312156147ee576147ed61462b565b5b60006147fc848285016147c3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483082614805565b9050919050565b61484081614825565b82525050565b600060208201905061485b6000830184614837565b92915050565b61486a816147a2565b82525050565b60006020820190506148856000830184614861565b92915050565b600060ff82169050919050565b6148a18161488b565b81146148ac57600080fd5b50565b6000813590506148be81614898565b92915050565b600067ffffffffffffffff82169050919050565b6148e1816148c4565b81146148ec57600080fd5b50565b6000813590506148fe816148d8565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61494682614736565b810181811067ffffffffffffffff821117156149655761496461490e565b5b80604052505050565b6000614978614621565b9050614984828261493d565b919050565b600067ffffffffffffffff8211156149a4576149a361490e565b5b6149ad82614736565b9050602081019050919050565b82818337600083830152505050565b60006149dc6149d784614989565b61496e565b9050828152602081018484840111156149f8576149f7614909565b5b614a038482856149ba565b509392505050565b600082601f830112614a2057614a1f614904565b5b8135614a308482602086016149c9565b91505092915050565b600080600060608486031215614a5257614a5161462b565b5b6000614a60868287016148af565b9350506020614a71868287016148ef565b925050604084013567ffffffffffffffff811115614a9257614a91614630565b5b614a9e86828701614a0b565b9150509250925092565b614ab181614825565b8114614abc57600080fd5b50565b600081359050614ace81614aa8565b92915050565b600080600060608486031215614aed57614aec61462b565b5b6000614afb86828701614abf565b9350506020614b0c86828701614abf565b9250506040614b1d868287016147c3565b9150509250925092565b6000819050919050565b614b3a81614b27565b8114614b4557600080fd5b50565b600081359050614b5781614b31565b92915050565b600060208284031215614b7357614b7261462b565b5b6000614b8184828501614b48565b91505092915050565b614b9381614b27565b82525050565b6000602082019050614bae6000830184614b8a565b92915050565b600060208284031215614bca57614bc961462b565b5b6000614bd884828501614abf565b91505092915050565b60008060408385031215614bf857614bf761462b565b5b6000614c0685828601614abf565b9250506020614c17858286016147c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000614c4882614c21565b614c528185614c2c565b9350614c6281856020860161470c565b614c6b81614736565b840191505092915050565b60006020820190508181036000830152614c908184614c3d565b905092915050565b600060208284031215614cae57614cad61462b565b5b600082013567ffffffffffffffff811115614ccc57614ccb614630565b5b614cd884828501614a0b565b91505092915050565b600067ffffffffffffffff821115614cfc57614cfb61490e565b5b614d0582614736565b9050602081019050919050565b6000614d25614d2084614ce1565b61496e565b905082815260208101848484011115614d4157614d40614909565b5b614d4c8482856149ba565b509392505050565b600082601f830112614d6957614d68614904565b5b8135614d79848260208601614d12565b91505092915050565b600060208284031215614d9857614d9761462b565b5b600082013567ffffffffffffffff811115614db657614db5614630565b5b614dc284828501614d54565b91505092915050565b60008060408385031215614de257614de161462b565b5b6000614df085828601614abf565b9250506020614e0185828601614b48565b9150509250929050565b60008060408385031215614e2257614e2161462b565b5b6000614e3085828601614b48565b9250506020614e41858286016147c3565b9150509250929050565b600065ffffffffffff82169050919050565b614e6681614e4b565b82525050565b6000608082019050614e816000830187614e5d565b614e8e6020830186614e5d565b614e9b60408301856146c6565b614ea860608301846146c6565b95945050505050565b600080fd5b600080fd5b60008083601f840112614ed157614ed0614904565b5b8235905067ffffffffffffffff811115614eee57614eed614eb1565b5b602083019150836001820283011115614f0a57614f09614eb6565b5b9250929050565b60008060008060608587031215614f2b57614f2a61462b565b5b6000614f3987828801614abf565b9450506020614f4a878288016147c3565b935050604085013567ffffffffffffffff811115614f6b57614f6a614630565b5b614f7787828801614ebb565b925092505092959194509250565b614f8e816146ba565b8114614f9957600080fd5b50565b600081359050614fab81614f85565b92915050565b60008060408385031215614fc857614fc761462b565b5b6000614fd685828601614abf565b9250506020614fe785828601614f9c565b9150509250929050565b614ffa8161488b565b82525050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b61503581615000565b82525050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b6150708161503b565b82525050565b600060a08201905061508b6000830188614ff1565b6150986020830187614ff1565b6150a56040830186614ff1565b6150b2606083018561502c565b6150bf6080830184615067565b9695505050505050565b600080600080608085870312156150e3576150e261462b565b5b60006150f187828801614abf565b945050602061510287828801614abf565b9350506040615113878288016147c3565b925050606085013567ffffffffffffffff81111561513457615133614630565b5b61514087828801614d54565b91505092959194509250565b600061ffff82169050919050565b6151638161514c565b811461516e57600080fd5b50565b6000813590506151808161515a565b92915050565b61518f81614e4b565b811461519a57600080fd5b50565b6000813590506151ac81615186565b92915050565b6000806000606084860312156151cb576151ca61462b565b5b60006151d986828701614b48565b93505060206151ea86828701615171565b92505060406151fb8682870161519d565b9150509250925092565b6000806040838503121561521c5761521b61462b565b5b600083013567ffffffffffffffff81111561523a57615239614630565b5b61524685828601614d54565b9250506020615257858286016147c3565b9150509250929050565b60008060006060848603121561527a5761527961462b565b5b600061528886828701614abf565b935050602061529986828701614b48565b92505060406152aa86828701615171565b9150509250925092565b600080604083850312156152cb576152ca61462b565b5b60006152d985828601614abf565b92505060206152ea85828601614abf565b9150509250929050565b6000806000806080858703121561530e5761530d61462b565b5b600061531c87828801614abf565b945050602061532d87828801614b48565b935050604061533e87828801615171565b925050606061534f8782880161519d565b91505092959194509250565b60008160050b9050919050565b6153718161535b565b811461537c57600080fd5b50565b60008135905061538e81615368565b92915050565b600080604083850312156153ab576153aa61462b565b5b60006153b985828601614b48565b92505060206153ca8582860161537f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061540e826147a2565b9150615419836147a2565b9250828201905080821115615431576154306153d4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061547e57607f821691505b60208210810361549157615490615437565b5b50919050565b7f4552525f5052454649585f544f4f5f4c4f4e4700000000000000000000000000600082015250565b60006154cd6013836146fb565b91506154d882615497565b602082019050919050565b600060208201905081810360008301526154fc816154c0565b9050919050565b600061550e8261488b565b91506155198361488b565b92508282026155278161488b565b9150808214615539576155386153d4565b5b5092915050565b600061554b8261488b565b91506000820361555e5761555d6153d4565b5b600182039050919050565b60006155748261488b565b915061557f8361488b565b9250828201905060ff811115615598576155976153d4565b5b92915050565b60006155a98261488b565b91506155b48361488b565b9250828203905060ff8111156155cd576155cc6153d4565b5b92915050565b6000819050602082019050919050565b60006155ef8251615000565b80915050919050565b60008160020a8302905092915050565b600061561382614c21565b8261561d846155d3565b9050615628816155e3565b92506010821015615668576156637fffffffffffffffffffffffffffffffff00000000000000000000000000000000836010036008026155f8565b831692505b5050919050565b600061567a826147a2565b9150615685836147a2565b925082820390508181111561569d5761569c6153d4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006156dd826147a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361570f5761570e6153d4565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60006008830261576f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826155f8565b61577986836155f8565b95508019841693508086168417925050509392505050565b6000819050919050565b60006157b66157b16157ac846147a2565b615791565b6147a2565b9050919050565b6000819050919050565b6157d08361579b565b6157e46157dc826157bd565b84845461573f565b825550505050565b600090565b6157f96157ec565b6158048184846157c7565b505050565b5b818110156158285761581d6000826157f1565b60018101905061580a565b5050565b601f82111561586d5761583e8161571a565b6158478461572f565b81016020851015615856578190505b61586a6158628561572f565b830182615809565b50505b505050565b60008160020a8304905092915050565b600061589360001984600802615872565b1980831691505092915050565b60006158ac8383615882565b9150826002028217905092915050565b6158c582614c21565b67ffffffffffffffff8111156158de576158dd61490e565b5b6158e88254615466565b6158f382828561582c565b600060209050601f8311600181146159265760008415615914578287015190505b61591e85826158a0565b865550615986565b601f1984166159348661571a565b60005b8281101561595c57848901518255600182019150602085019450602081019050615937565b868310156159795784890151615975601f891682615882565b8355505b6001600288020188555050505b505050505050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006159c4600a836146fb565b91506159cf8261598e565b602082019050919050565b600060208201905081810360008301526159f3816159b7565b9050919050565b6000615a068251614b27565b80915050919050565b6000615a1a82614c21565b82615a24846155d3565b9050615a2f816159fa565b92506020821015615a6f57615a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026155f8565b831692505b5050919050565b6000615a81826147a2565b9150615a8c836147a2565b9250828202615a9a816147a2565b91508282048414831517615ab157615ab06153d4565b5b5092915050565b7f4552525f53504152534500000000000000000000000000000000000000000000600082015250565b6000615aee600a836146fb565b9150615af982615ab8565b602082019050919050565b60006020820190508181036000830152615b1d81615ae1565b9050919050565b7f4552525f43415050454400000000000000000000000000000000000000000000600082015250565b6000615b5a600a836146fb565b9150615b6582615b24565b602082019050919050565b60006020820190508181036000830152615b8981615b4d565b9050919050565b7f4552525f4341505f4c4f57000000000000000000000000000000000000000000600082015250565b6000615bc6600b836146fb565b9150615bd182615b90565b602082019050919050565b60006020820190508181036000830152615bf581615bb9565b9050919050565b6000615c0782614e4b565b9150615c1283614e4b565b9250828201905065ffffffffffff811115615c3057615c2f6153d4565b5b92915050565b600081519050615c4581614aa8565b92915050565b600060208284031215615c6157615c6061462b565b5b6000615c6f84828501615c36565b9150509291505056fea264697066735822122050c46c41c021119f2db1cd645fbb63951f9b71bc6bc73741dd001524ffd8683364736f6c63430008120033 +\ No newline at end of file diff --git a/python/craft_nft/data/CraftNFT.json b/python/craft_nft/data/CraftNFT.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getDigestHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMsg","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"setMsg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/craft_nft/data/CraftNFT.metadata.json b/python/craft_nft/data/CraftNFT.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getDigestHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CraftNFT.sol":"CraftNFT"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CraftNFT.sol":{"keccak256":"0x918c0d21063846d753913dca52fcf2e9cdca193764319f7075c082ca4c4d8ef6","license":"AGPL-3.0-or-later","urls":["bzz-raw://07c4a2305c3cc3992d8186a098d0f617b9643c903a900bc9cd8df1998125123f","dweb:/ipfs/QmccndYqRwKb9fAfsmdQMUkgCMysvzHCcBqutdhmMfF6xK"]}},"version":1} +{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"uint48","name":"_count","type":"uint48"},{"indexed":true,"internalType":"bool","name":"_capped","type":"bool"},{"indexed":false,"internalType":"bytes32","name":"_tokenId","type":"bytes32"}],"name":"Allocate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"_multiHash","type":"bytes"}],"name":"Msg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"uint8","name":"_length","type":"uint8"},{"internalType":"uint64","name":"_codecId","type":"uint64"},{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"addMultiCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"content","type":"bytes32"},{"internalType":"int48","name":"count","type":"int48"}],"name":"allocate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultDigestEncoding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"},{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"encodeDigest","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_truncatedId","type":"bytes32"}],"name":"getDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMsg","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_index","type":"uint48"}],"name":"mintExactFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"}],"name":"mintFromBatchTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_contentNumeric","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bytes32","name":"_content","type":"bytes32"}],"name":"mintToBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"mintedToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiHash","outputs":[{"internalType":"uint8","name":"l","type":"uint8"},{"internalType":"uint8","name":"codecRLength","type":"uint8"},{"internalType":"uint8","name":"prefixRLength","type":"uint8"},{"internalType":"bytes16","name":"prefix","type":"bytes16"},{"internalType":"bytes8","name":"codec","type":"bytes8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseString","type":"string"}],"name":"setBaseURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_content","type":"bytes32"},{"internalType":"uint16","name":"_batch","type":"uint16"},{"internalType":"uint48","name":"_cap","type":"uint48"}],"name":"setCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"setMsg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_codec","type":"uint256"}],"name":"setMsgCodec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toHex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_digest","type":"bytes"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"toURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"token","outputs":[{"internalType":"uint48","name":"count","type":"uint48"},{"internalType":"uint48","name":"cursor","type":"uint48"},{"internalType":"bool","name":"sparse","type":"bool"},{"internalType":"bool","name":"capped","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CraftNFT.sol":"CraftNFT"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CraftNFT.sol":{"keccak256":"0x6047a7ac24c08ebca14954eeb400fe76130fcba683da78386d18ff0ed50fc809","license":"AGPL-3.0-or-later","urls":["bzz-raw://5ea560bc4f69b44ca3c395f1ca96ac50bc64a23c248ad37ca6cf38fc3bb5c1ca","dweb:/ipfs/Qmbj8qo9RNKimiB9MmyEVJv52bnb2PpvBbWNptepw9RmXW"]}},"version":1} diff --git a/solidity/CraftNFT.sol b/solidity/CraftNFT.sol @@ -484,7 +484,7 @@ contract CraftNFT { bytes memory _hexDigest; uint256 c; - _hexDigest = getDigestHex(_data); + _hexDigest = toHex(_data); c = baseURL.length; out = new bytes(_hexDigest.length + c); @@ -499,7 +499,9 @@ contract CraftNFT { return string(out); } - function getDigestHex(bytes memory _data) public pure returns(bytes memory) { + // TODO: move to internal library method + // bytes to hex conversion + function toHex(bytes memory _data) public pure returns(bytes memory) { bytes memory out; uint8 t; uint256 c; @@ -656,32 +658,6 @@ contract CraftNFT { } - // TODO: move to internal library method - // bytes to hex conversion - function toHex(bytes memory _data) public pure returns(bytes memory) { - bytes memory out; - uint8 t; - uint256 c; - - out = new bytes(_data.length * 2); - c = 0; - for (uint256 i = 0; i < 32; i++) { - t = (uint8(_data[i]) & 0xf0) >> 4; - if (t < 10) { - out[c] = bytes1(t + 0x30); - } else { - out[c] = bytes1(t + 0x57); - } - t = uint8(_data[i]) & 0x0f; - if (t < 10) { - out[c+1] = bytes1(t + 0x30); - } else { - out[c+1] = bytes1(t + 0x57); - } - c += 2; - } - return out; - } // Set the current multicodec to use for multihash generation function setMsgCodec(uint256 _codec) public { @@ -710,7 +686,6 @@ contract CraftNFT { // Return a multihash of the latest persistent message // Implements Msg function getMsg() public view returns(bytes memory) { - //return toMultiHash(defaultDigestEncoding, currentMsg); return encodeDigest(currentMsg); } }