@settlemint/solidity-token-erc721a
Version:
Smart contract set to build an ERC721a token in SettleMint
1 lines • 118 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"baseTokenURI_","type":"string","internalType":"string"},{"name":"wallet_","type":"address","internalType":"address payable"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_PER_TX","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_SUPPLY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PRICE_IN_WEI_PUBLIC","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PRICE_IN_WEI_WHITELIST","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"RESERVES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"_whiteListMerkleRoot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"collectReserves","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disableWhitelistMerkleRoot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllowance","inputs":[{"name":"allowance","type":"string","internalType":"string"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"gift","inputs":[{"name":"recipients_","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"publicMint","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBaseURI","inputs":[{"name":"baseTokenURI_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWhitelistMerkleRoot","inputs":[{"name":"whitelistMerkleRoot_","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPublicSale","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wallet","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"whitelistMint","inputs":[{"name":"count","type":"uint256","internalType":"uint256"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ConsecutiveTransfer","inputs":[{"name":"fromTokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"toTokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ApprovalCallerNotOwnerNorApproved","inputs":[]},{"type":"error","name":"ApprovalQueryForNonexistentToken","inputs":[]},{"type":"error","name":"BalanceQueryForZeroAddress","inputs":[]},{"type":"error","name":"MintERC2309QuantityExceedsLimit","inputs":[]},{"type":"error","name":"MintToZeroAddress","inputs":[]},{"type":"error","name":"MintZeroQuantity","inputs":[]},{"type":"error","name":"NotCompatibleWithSpotMints","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"OwnerQueryForNonexistentToken","inputs":[]},{"type":"error","name":"OwnershipNotInitializedForExtraData","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SequentialMintExceedsLimit","inputs":[]},{"type":"error","name":"SequentialUpToTooSmall","inputs":[]},{"type":"error","name":"SpotMintTokenIdTooSmall","inputs":[]},{"type":"error","name":"TokenAlreadyExists","inputs":[]},{"type":"error","name":"TransferCallerNotOwnerNorApproved","inputs":[]},{"type":"error","name":"TransferFromIncorrectOwner","inputs":[]},{"type":"error","name":"TransferToNonERC721ReceiverImplementer","inputs":[]},{"type":"error","name":"TransferToZeroAddress","inputs":[]},{"type":"error","name":"URIQueryForNonexistentToken","inputs":[]}],"bytecode":{"object":"0x60a0604052346100cd57612e9980380380610019816100e5565b92833981016080828203126100cd5781516001600160401b0381116100cd578161004491840161010f565b60208301519092906001600160401b0381116100cd578261006691830161010f565b60408201519092906001600160401b0381116100cd5760609161008a91840161010f565b910151916001600160a01b03831683036100cd576100a7936103f5565b604051612927908161057282396080518181816103d901528181610bbd0152610c4a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761010a57604052565b6100d1565b81601f820112156100cd578051906001600160401b03821161010a5761013e601f8301601f19166020016100e5565b92828452602083830101116100cd57815f9260208093018386015e8301015290565b90600182811c9216801561018e575b602083101461017a57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161016f565b601f81116101a4575050565b60025f5260205f20906020601f840160051c830193106101de575b601f0160051c01905b8181106101d3575050565b5f81556001016101c8565b90915081906101bf565b601f82116101f557505050565b5f5260205f20906020601f840160051c8301931061022d575b601f0160051c01905b818110610222575050565b5f8155600101610217565b909150819061020e565b80519091906001600160401b03811161010a5761026081610259600354610160565b60036101e8565b602092601f82116001146102a057610290929382915f92610295575b50508160011b915f199060031b1c19161790565b600355565b015190505f8061027c565b60035f52601f198216937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f5b86811061030457508360019596106102ec575b505050811b01600355565b01515f1960f88460031b161c191690555f80806102e1565b919260206001819286850151815501940192016102ce565b80519091906001600160401b03811161010a576103458161033e600c54610160565b600c6101e8565b602092601f821160011461037957610374929382915f926102955750508160011b915f199060031b1c19161790565b600c55565b600c5f52601f198216937fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b8681106103dd57508360019596106103c5575b505050811b01600c55565b01515f1960f88460031b161c191690555f80806103ba565b919260206001819286850151815501940192016103a7565b8051906001600160401b03821161010a5761041a82610415600254610160565b610198565b602090601f83116001146104a257918061044d9261045595945f926102955750508160011b915f199060031b1c19161790565b600255610237565b5f8055331561048e576104899061046b33610529565b6104756001600b55565b61048460ff19600e5416600e55565b61031c565b608052565b631e4fbdf760e01b5f90815260045260245ffd5b60025f52601f19831691907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace925f5b8181106105115750916001939185610455979694106104f9575b505050811b01600255610237565b01515f1960f88460031b161c191690555f80806104eb565b929360206001819287860151815501950193016104d1565b600a80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a356fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461022f578063029877b61461022a578063041fa44e1461022557806306fdde0314610220578063081812fc1461021b5780630922f9c514610194578063095ea7b3146102165780630c1c972a14610211578063163e1e611461020c57806318160ddd1461020757806323b872dd146102025780632db11544146101fd57806332cb6b0c146101f85780633ccfd60b146101f357806342842e0e146101ee578063521eb273146101e957806355f804b3146101e45780636352211e146101df57806366fddfa9146101da57806370a08231146101d5578063715018a6146101d05780637ad7614d146101cb5780638da5cb5b146101c657806395d89b41146101c1578063a22cb465146101bc578063b4402979146101b7578063b88d4fde146101b2578063bd32fb66146101ad578063c4be5b59146101a8578063c87b56dd146101a3578063e985e9c51461019e578063f2fde38b14610199578063f43a22dc146101945763fbd9b92d1461018f575f80fd5b6118de565b61076c565b61180a565b61178a565b6115c2565b61135d565b61133c565b6112d9565b6112bb565b6111ec565b611147565b611114565b6110f3565b611075565b610ff4565b610e82565b610e46565b610d30565b610c1e565b610bfa565b610b81565b610b66565b610a82565b610a6e565b610a21565b610937565b6108bd565b6107a5565b6106f6565b610602565b6105ac565b6103a4565b610262565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361025e57565b5f80fd5b3461025e57602060031936011261025e5761030160043561028281610234565b7fffffffff000000000000000000000000000000000000000000000000000000008116907f0e08307600000000000000000000000000000000000000000000000000000000821491821561037a575b8215610350575b821561033f575b8215610315575b508115610305575b5060405190151581529081906020820190565b0390f35b61030f9150612017565b5f6102ee565b7f2baae9fd000000000000000000000000000000000000000000000000000000001491505f6102e6565b915061034a81612017565b916102df565b7f62e27be700000000000000000000000000000000000000000000000000000000811492506102d8565b7fc21b8f2800000000000000000000000000000000000000000000000000000000811492506102d1565b3461025e575f60031936011261025e576103bc6120bf565b5f5461054e5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051610407602082610c9b565b5f8082525473ffffffffffffffffffffffffffffffffffffffff83164260a01b1761043a825f52600460205260405f2090565b556104638373ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b68050000000000000005815401905573ffffffffffffffffffffffffffffffffffffffff83169182156105495760058201919360015b156104cc575b5f85855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4610499565b936001019382850361049f57825f55803b6104e357005b5f54907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb82019160015b15610535575b5f61052a610526866001870196866126dc565b1590565b1561050d575b611eed565b80831061051357925050505f540361025e57005b6124d0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f526573657276657320616c726561647920636f6c6c65637465640000000000006044820152fd5b3461025e575f60031936011261025e576020600954604051908152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b9060206105ff9281815201906105c9565b90565b3461025e575f60031936011261025e576040515f600254610622816118ff565b80845290600181169081156106b45750600114610656575b6103018361064a81850382610c9b565b604051918291826105ee565b91905060025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace915f905b80821061069a5750909150810160200161064a61063a565b919260018160209254838588010152019101909291610682565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061064a905061063a565b3461025e57602060031936011261025e57600435610713816123b0565b15610744575f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b7fcf4700e4000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e575f60031936011261025e57602060405160058152f35b73ffffffffffffffffffffffffffffffffffffffff81160361025e57565b604060031936011261025e576004356107bd81610787565b6024359073ffffffffffffffffffffffffffffffffffffffff6107df83612520565b169081330361087d575b8061085573ffffffffffffffffffffffffffffffffffffffff92610815865f52600660205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b815f52600760205260ff6108b23360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166107e957612408565b3461025e575f60031936011261025e576108d56120bf565b5f600955600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b9181601f8401121561025e5782359167ffffffffffffffff831161025e576020808501948460051b01011161025e57565b3461025e57602060031936011261025e5760043567ffffffffffffffff811161025e57610968903690600401610906565b6109706120bf565b61097c5f541515611950565b5f54818101809111610a1c57606f106109be575f5b81811061099a57005b806109b86109b36109ae60019486886119ef565b611a2c565b61210c565b01610991565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f45786365646573206d617820737570706c7900000000000000000000000000006044820152fd5b6119b5565b3461025e575f60031936011261025e5760205f546001549003604051908152f35b600319606091011261025e57600435610a5a81610787565b90602435610a6781610787565b9060443590565b610a80610a7a36610a42565b91611a36565b005b602060031936011261025e57600435610a996125e3565b610aa560095415611c8e565b610ab360ff600e5416611c8e565b610abf5f541515611950565b5f54818101809111610a1c57606f610ad8911115611cf3565b6005811015610b085780610af8610af1610afe93611d58565b3414611d9c565b33612262565b610a806001600b55565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152fd5b3461025e575f60031936011261025e576020604051606f8152f35b3461025e575f60031936011261025e57610b996120bf565b5f80808047818115610bf1575b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f115610be657005b6040513d5f823e3d90fd5b506108fc610ba6565b610a80610c0636610a42565b9060405192610c16602085610c9b565b5f8452611ebb565b3461025e575f60031936011261025e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff821117610cbe57604052565b610c6e565b67ffffffffffffffff8111610cbe57601f01601f191660200190565b929192610ceb82610cc3565b91610cf96040519384610c9b565b82948184528183011161025e578281602093845f960137010152565b9080601f8301121561025e578160206105ff93359101610cdf565b3461025e57602060031936011261025e5760043567ffffffffffffffff811161025e57610d61903690600401610d15565b610d696120bf565b805167ffffffffffffffff8111610cbe57610d8e81610d89600c546118ff565b611e15565b602091601f8211600114610dcb57610dbb925f9183610dc0575b50505f198260011b9260031b1c19161790565b600c55005b015190505f80610da8565b600c5f52601f198216927fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b858110610e2e57508360019510610e16575b505050811b01600c55005b01515f1960f88460031b161c191690555f8080610e0b565b91926020600181928685015181550194019201610df9565b3461025e57602060031936011261025e57602073ffffffffffffffffffffffffffffffffffffffff610e79600435612520565b16604051908152f35b3461025e57604060031936011261025e5760043567ffffffffffffffff811161025e57610eb3903690600401610d15565b60243567ffffffffffffffff811161025e57610ed6610eea913690600401610906565b9190610ee2843361261c565b923691611e65565b906009548015610f9657610efd92612828565b15610f125761030190604051918291826105ee565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f496e76616c6964204d65726b6c6520547265652070726f6f6620737570706c6960448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f57686974656c697374206d65726b6c6520726f6f74206e6f74207365740000006044820152fd5b3461025e57602060031936011261025e5773ffffffffffffffffffffffffffffffffffffffff60043561102681610787565b16801561104d575f526005602052602067ffffffffffffffff60405f205416604051908152f35b7f8f4eb604000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e575f60031936011261025e5761108d6120bf565b5f73ffffffffffffffffffffffffffffffffffffffff600a547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600a55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461025e575f60031936011261025e5760206040516618838370f340008152f35b3461025e575f60031936011261025e57602073ffffffffffffffffffffffffffffffffffffffff600a5416604051908152f35b3461025e575f60031936011261025e576040515f600354611167816118ff565b80845290600181169081156106b4575060011461118e576103018361064a81850382610c9b565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b8082106111d25750909150810160200161064a61063a565b9192600181602092548385880101520191019092916111ba565b3461025e57604060031936011261025e5760043561120981610787565b6024359081151580920361025e5773ffffffffffffffffffffffffffffffffffffffff90335f5260076020526112608160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461025e575f60031936011261025e576112d36120bf565b5f600955005b608060031936011261025e576004356112f181610787565b602435906112fe82610787565b6044356064359267ffffffffffffffff841161025e573660238501121561025e57611336610a80943690602481600401359101610cdf565b92611ebb565b3461025e57602060031936011261025e576004356113586120bf565b600955005b606060031936011261025e5760243560043560443567ffffffffffffffff811161025e5761138f903690600401610906565b926113986125e3565b6113a45f541515611950565b5f54838101809111610a1c57606f6113bd911115611cf3565b5f9381807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561159a575b806d04ee2d6d415b85acef8100000000600a92101561157e575b662386f26fc10000811015611569575b6305f5e100811015611557575b612710811015611547575b6064811015611538575b101561152d575b6114815f19602161144b60018a01612879565b988901015b01917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b90811561149457611481905f1990611450565b50506114c2611500936114c7926114bd6114b1610afe993361261c565b92600954923691611e65565b612828565b611f15565b6114f9836114f33373ffffffffffffffffffffffffffffffffffffffff165f52600d60205260405f2090565b546119e2565b1115611fa0565b61150c610af182611d7a565b335f908152600d602052604090206115258282546119e2565b905533612262565b600190950194611438565b60029060649004970196611431565b6004906127109004970196611427565b6008906305f5e100900497019661141c565b601090662386f26fc10000900497019661140f565b6020906d04ee2d6d415b85acef810000000090049701966113ff565b50604095507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083046113e5565b3461025e57602060031936011261025e576004356115df816123b0565b1561176257604051905f82600c54916115f7836118ff565b808352926001811690811561172557506001146116c6575b61161b92500383610c9b565b8151156116b7576116459161164b611635611659936128aa565b6040519485936020850190612005565b90612005565b03601f198101835282610c9b565b8051156116a65761167d61064a6103019261164b6040519384926020840190612005565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815260050190565b506103016116b2611e01565b61064a565b50506116c1611e01565b611659565b5090600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f915b81831061170957505090602061161b9282010161160f565b60209193508060019154838589010152019101909184926116f1565b6020925061161b9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010161160f565b7fa14c4b50000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e57604060031936011261025e57602060ff6117fe6004356117ae81610787565b73ffffffffffffffffffffffffffffffffffffffff602435916117d083610787565b165f526007845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b3461025e57602060031936011261025e5773ffffffffffffffffffffffffffffffffffffffff60043561183c81610787565b6118446120bf565b1680156118b25773ffffffffffffffffffffffffffffffffffffffff600a54827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600a55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461025e575f60031936011261025e576020604051669536c7089100008152f35b90600182811c92168015611946575b602083101461191957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161190e565b1561195757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5265736572766573206e6f742074616b656e20796574000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211610a1c57565b91908110156119ff5760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b356105ff81610787565b91909173ffffffffffffffffffffffffffffffffffffffff611a5783612520565b9116928373ffffffffffffffffffffffffffffffffffffffff831603611c89575f83815260066020526040902080549290611aae73ffffffffffffffffffffffffffffffffffffffff871633908114908614171590565b611c23575b73ffffffffffffffffffffffffffffffffffffffff93611c1a575b50611af78573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b80545f19019055611b268273ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b8054600101905573ffffffffffffffffffffffffffffffffffffffff82164260a01b177c020000000000000000000000000000000000000000000000000000000017611b7a855f52600460205260405f2090565b557c0200000000000000000000000000000000000000000000000000000000811615611bd5575b501680927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a415611bd057565b612480565b60018401611beb815f52600460205260405f2090565b5415611bf8575b50611ba1565b5f548114611bf257611c12905f52600460205260405f2090565b555f80611bf2565b5f90555f611ace565b611c7f610526611c7833611c558a73ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5460ff1690565b15611ab357612458565b612430565b15611c9557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5075626c69632073616c65206e6f7420616374697665000000000000000000006044820152fd5b15611cfa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f45786365656473206d617820737570706c7900000000000000000000000000006044820152fd5b90669536c708910000820291808304669536c7089100001490151715610a1c57565b906618838370f340008202918083046618838370f340001490151715610a1c57565b15611da357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c69642066756e64732070726f7669646564000000000000000000006044820152fd5b60405190611e10602083610c9b565b5f8252565b601f8111611e21575050565b600c5f5260205f20906020601f840160051c83019310611e5b575b601f0160051c01905b818110611e50575050565b5f8155600101611e45565b9091508190611e3c565b9291909267ffffffffffffffff8411610cbe578360051b906020604051611e8e82850182610c9b565b809681520191810192831161025e57905b828210611eab57505050565b8135815260209182019101611e9f565b929190611ec9828286611a36565b803b611ed6575b50505050565b611edf936127d2565b15611eed575f808080611ed0565b7fd1a57ed6000000000000000000000000000000000000000000000000000000005f5260045ffd5b15611f1c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f496e76616c6964204d65726b6c6520547265652070726f6f6620737570706c6960448201527f65640000000000000000000000000000000000000000000000000000000000006064820152fd5b15611fa757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f457863656564732077686974656c69737420616c6c6f77616e636500000000006044820152fd5b805191908290602001825e015f815290565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115612095575b811561206e575090565b7f5b5e139f0000000000000000000000000000000000000000000000000000000091501490565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150612064565b73ffffffffffffffffffffffffffffffffffffffff600a541633036120e057565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b9060405161211b602082610c9b565b5f808252549073ffffffffffffffffffffffffffffffffffffffff84164260a01b177c02000000000000000000000000000000000000000000000000000000001761216e835f52600460205260405f2090565b556121978473ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b68010000000000000001815401905573ffffffffffffffffffffffffffffffffffffffff84169283156105495760018301929460015b15612200575b5f86865f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46121cd565b94600101948386036121d3579291945092505f55803b61221f57509050565b5f54915f1983019260015b1561224d575b5f612243610526876001880197876126dc565b1561222a57611eed565b8084106122305792509250505f540361025e57565b9160405190612272602083610c9b565b5f82525f549183156123ab5773ffffffffffffffffffffffffffffffffffffffff85164260a01b6001861460e11b17176122b4845f52600460205260405f2090565b556122dd8573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b680100000000000000018502815401905573ffffffffffffffffffffffffffffffffffffffff851693841561054957808401939560015b15612347575b5f87875f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4612314565b956001019584870361231a57929550929093505f55803b61236757505050565b9091925f549283039260015b15612396575b5f61238c610526876001880197876126dc565b1561237357611eed565b8084106123795792509250505f540361025e57565b6124a8565b905f915f5481106123be5750565b9091505b805f52600460205260405f2054806123e357508015610a1c575f19016123c2565b7c01000000000000000000000000000000000000000000000000000000009150161590565b7fcfb3b942000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa1148100000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f59c896be000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fea553b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fb562e8dd000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f2e076300000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdf2d9b42000000000000000000000000000000000000000000000000000000005f5260045ffd5b612532815f52600460205260405f2090565b5490811561256257507c010000000000000000000000000000000000000000000000000000000081166124f85790565b90505f548110156124f8575f19905b01612584815f52600460205260405f2090565b549081156125da57507c01000000000000000000000000000000000000000000000000000000008116156105ff577fdf2d9b42000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f199150612571565b6002600b54146125f4576002600b55565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9061265761164b9160405192839173ffffffffffffffffffffffffffffffffffffffff602084019616865260408084015260608301906105c9565b51902090565b9081602091031261025e57516105ff81610234565b909273ffffffffffffffffffffffffffffffffffffffff608093816105ff9796168452166020830152604082015281606082015201906105c9565b3d156126d7573d906126be82610cc3565b916126cc6040519384610c9b565b82523d5f602084013e565b606090565b91612731926020925f73ffffffffffffffffffffffffffffffffffffffff6040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000008452853360048601612672565b0393165af15f91816127a1575b5061275a5761274b6126ad565b80511561053057805190602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490565b6127c491925060203d6020116127cb575b6127bc8183610c9b565b81019061265d565b905f61273e565b503d6127b2565b906020925f73ffffffffffffffffffffffffffffffffffffffff6127319694604051978896879586937f150b7a020000000000000000000000000000000000000000000000000000000085523360048601612672565b929091905f915b84518310156128715760208360051b86010151908181105f14612860575f52602052600160405f205b92019161282f565b905f52602052600160405f20612858565b915092501490565b9061288382610cc3565b6128906040519182610c9b565b828152601f196128a08294610cc3565b0190602036910137565b9060405160a08101604052600a5f1960808301945f8652945b01938181066030018553049283156128df575f19600a916128c3565b9250608083601f19920301920191825256fea2646970667358221220e5b4b39ed8c9deadc61a3ebf46c4c204e393d1eb8446bd7d3378b8fa27a2e0ce64736f6c634300081b0033","sourceMap":"452:6436:0:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;452:6436:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;452:6436:0;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;;-1:-1:-1;;452:6436:0;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;452:6436:0;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;5327:13:35;-1:-1:-1;452:6436:0;;-1:-1:-1;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;452:6436:0;;;;;;;;;-1:-1:-1;452:6436:0;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;452:6436:0;;-1:-1:-1;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;452:6436:0;;;;;;;;;-1:-1:-1;452:6436:0;;;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;5350:17:35;452:6436:0;;:::i;:::-;5350:17:35;452:6436:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5350:17:35;452:6436:0;:::o;:::-;;;;-1:-1:-1;452:6436:0;;;;;5350:17:35;452:6436:0;;-1:-1:-1;;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5350:17:35;452:6436:0;:::o;:::-;;;;;;;5350:17:35;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;452:6436:0;;;;;;;2259:29;452:6436;;:::i;:::-;2259:29;452:6436;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:29;452:6436;:::o;:::-;2259:29;452:6436;;-1:-1:-1;;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:29;452:6436;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2037:285;452:6436;;;-1:-1:-1;;;;;452:6436:0;;;;;;;5327:13:35;452:6436:0;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5327:13:35;452:6436:0;;:::i;:::-;;1857:1:26;;2233:10:0;1273:26:21;1269:95;;452:6436:0;2233:10;1392:12:21;2233:10:0;1392:12:21;:::i;:::-;2061:21:26;1857:1;2061:21;1857:1;;2061:21;1997:5:0;452:6436;;1997:5;452:6436;;1997:5;452:6436;;1997:5;452:6436;:::i;:::-;2298:17;;2037:285::o;1269:95:21:-;-1:-1:-1;;;452:6436:0;1322:31:21;;;;452:6436:0;;;1322:31:21;452:6436:0;5327:13:35;452:6436:0;;-1:-1:-1;;452:6436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5327:13:35;452:6436:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:187:21;3004:6;452:6436:0;;-1:-1:-1;;;;;452:6436:0;;;-1:-1:-1;;;;;;452:6436:0;;;;;;;;;;3052:40:21;-1:-1:-1;;3052:40:21;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461022f578063029877b61461022a578063041fa44e1461022557806306fdde0314610220578063081812fc1461021b5780630922f9c514610194578063095ea7b3146102165780630c1c972a14610211578063163e1e611461020c57806318160ddd1461020757806323b872dd146102025780632db11544146101fd57806332cb6b0c146101f85780633ccfd60b146101f357806342842e0e146101ee578063521eb273146101e957806355f804b3146101e45780636352211e146101df57806366fddfa9146101da57806370a08231146101d5578063715018a6146101d05780637ad7614d146101cb5780638da5cb5b146101c657806395d89b41146101c1578063a22cb465146101bc578063b4402979146101b7578063b88d4fde146101b2578063bd32fb66146101ad578063c4be5b59146101a8578063c87b56dd146101a3578063e985e9c51461019e578063f2fde38b14610199578063f43a22dc146101945763fbd9b92d1461018f575f80fd5b6118de565b61076c565b61180a565b61178a565b6115c2565b61135d565b61133c565b6112d9565b6112bb565b6111ec565b611147565b611114565b6110f3565b611075565b610ff4565b610e82565b610e46565b610d30565b610c1e565b610bfa565b610b81565b610b66565b610a82565b610a6e565b610a21565b610937565b6108bd565b6107a5565b6106f6565b610602565b6105ac565b6103a4565b610262565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361025e57565b5f80fd5b3461025e57602060031936011261025e5761030160043561028281610234565b7fffffffff000000000000000000000000000000000000000000000000000000008116907f0e08307600000000000000000000000000000000000000000000000000000000821491821561037a575b8215610350575b821561033f575b8215610315575b508115610305575b5060405190151581529081906020820190565b0390f35b61030f9150612017565b5f6102ee565b7f2baae9fd000000000000000000000000000000000000000000000000000000001491505f6102e6565b915061034a81612017565b916102df565b7f62e27be700000000000000000000000000000000000000000000000000000000811492506102d8565b7fc21b8f2800000000000000000000000000000000000000000000000000000000811492506102d1565b3461025e575f60031936011261025e576103bc6120bf565b5f5461054e5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051610407602082610c9b565b5f8082525473ffffffffffffffffffffffffffffffffffffffff83164260a01b1761043a825f52600460205260405f2090565b556104638373ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b68050000000000000005815401905573ffffffffffffffffffffffffffffffffffffffff83169182156105495760058201919360015b156104cc575b5f85855f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4610499565b936001019382850361049f57825f55803b6104e357005b5f54907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb82019160015b15610535575b5f61052a610526866001870196866126dc565b1590565b1561050d575b611eed565b80831061051357925050505f540361025e57005b6124d0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f526573657276657320616c726561647920636f6c6c65637465640000000000006044820152fd5b3461025e575f60031936011261025e576020600954604051908152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b9060206105ff9281815201906105c9565b90565b3461025e575f60031936011261025e576040515f600254610622816118ff565b80845290600181169081156106b45750600114610656575b6103018361064a81850382610c9b565b604051918291826105ee565b91905060025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace915f905b80821061069a5750909150810160200161064a61063a565b919260018160209254838588010152019101909291610682565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061064a905061063a565b3461025e57602060031936011261025e57600435610713816123b0565b15610744575f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b7fcf4700e4000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e575f60031936011261025e57602060405160058152f35b73ffffffffffffffffffffffffffffffffffffffff81160361025e57565b604060031936011261025e576004356107bd81610787565b6024359073ffffffffffffffffffffffffffffffffffffffff6107df83612520565b169081330361087d575b8061085573ffffffffffffffffffffffffffffffffffffffff92610815865f52600660205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b815f52600760205260ff6108b23360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166107e957612408565b3461025e575f60031936011261025e576108d56120bf565b5f600955600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b9181601f8401121561025e5782359167ffffffffffffffff831161025e576020808501948460051b01011161025e57565b3461025e57602060031936011261025e5760043567ffffffffffffffff811161025e57610968903690600401610906565b6109706120bf565b61097c5f541515611950565b5f54818101809111610a1c57606f106109be575f5b81811061099a57005b806109b86109b36109ae60019486886119ef565b611a2c565b61210c565b01610991565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f45786365646573206d617820737570706c7900000000000000000000000000006044820152fd5b6119b5565b3461025e575f60031936011261025e5760205f546001549003604051908152f35b600319606091011261025e57600435610a5a81610787565b90602435610a6781610787565b9060443590565b610a80610a7a36610a42565b91611a36565b005b602060031936011261025e57600435610a996125e3565b610aa560095415611c8e565b610ab360ff600e5416611c8e565b610abf5f541515611950565b5f54818101809111610a1c57606f610ad8911115611cf3565b6005811015610b085780610af8610af1610afe93611d58565b3414611d9c565b33612262565b610a806001600b55565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45786365656473206d617820706572207472616e73616374696f6e00000000006044820152fd5b3461025e575f60031936011261025e576020604051606f8152f35b3461025e575f60031936011261025e57610b996120bf565b5f80808047818115610bf1575b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f115610be657005b6040513d5f823e3d90fd5b506108fc610ba6565b610a80610c0636610a42565b9060405192610c16602085610c9b565b5f8452611ebb565b3461025e575f60031936011261025e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff821117610cbe57604052565b610c6e565b67ffffffffffffffff8111610cbe57601f01601f191660200190565b929192610ceb82610cc3565b91610cf96040519384610c9b565b82948184528183011161025e578281602093845f960137010152565b9080601f8301121561025e578160206105ff93359101610cdf565b3461025e57602060031936011261025e5760043567ffffffffffffffff811161025e57610d61903690600401610d15565b610d696120bf565b805167ffffffffffffffff8111610cbe57610d8e81610d89600c546118ff565b611e15565b602091601f8211600114610dcb57610dbb925f9183610dc0575b50505f198260011b9260031b1c19161790565b600c55005b015190505f80610da8565b600c5f52601f198216927fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b858110610e2e57508360019510610e16575b505050811b01600c55005b01515f1960f88460031b161c191690555f8080610e0b565b91926020600181928685015181550194019201610df9565b3461025e57602060031936011261025e57602073ffffffffffffffffffffffffffffffffffffffff610e79600435612520565b16604051908152f35b3461025e57604060031936011261025e5760043567ffffffffffffffff811161025e57610eb3903690600401610d15565b60243567ffffffffffffffff811161025e57610ed6610eea913690600401610906565b9190610ee2843361261c565b923691611e65565b906009548015610f9657610efd92612828565b15610f125761030190604051918291826105ee565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f496e76616c6964204d65726b6c6520547265652070726f6f6620737570706c6960448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f57686974656c697374206d65726b6c6520726f6f74206e6f74207365740000006044820152fd5b3461025e57602060031936011261025e5773ffffffffffffffffffffffffffffffffffffffff60043561102681610787565b16801561104d575f526005602052602067ffffffffffffffff60405f205416604051908152f35b7f8f4eb604000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e575f60031936011261025e5761108d6120bf565b5f73ffffffffffffffffffffffffffffffffffffffff600a547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600a55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461025e575f60031936011261025e5760206040516618838370f340008152f35b3461025e575f60031936011261025e57602073ffffffffffffffffffffffffffffffffffffffff600a5416604051908152f35b3461025e575f60031936011261025e576040515f600354611167816118ff565b80845290600181169081156106b4575060011461118e576103018361064a81850382610c9b565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b8082106111d25750909150810160200161064a61063a565b9192600181602092548385880101520191019092916111ba565b3461025e57604060031936011261025e5760043561120981610787565b6024359081151580920361025e5773ffffffffffffffffffffffffffffffffffffffff90335f5260076020526112608160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461025e575f60031936011261025e576112d36120bf565b5f600955005b608060031936011261025e576004356112f181610787565b602435906112fe82610787565b6044356064359267ffffffffffffffff841161025e573660238501121561025e57611336610a80943690602481600401359101610cdf565b92611ebb565b3461025e57602060031936011261025e576004356113586120bf565b600955005b606060031936011261025e5760243560043560443567ffffffffffffffff811161025e5761138f903690600401610906565b926113986125e3565b6113a45f541515611950565b5f54838101809111610a1c57606f6113bd911115611cf3565b5f9381807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081101561159a575b806d04ee2d6d415b85acef8100000000600a92101561157e575b662386f26fc10000811015611569575b6305f5e100811015611557575b612710811015611547575b6064811015611538575b101561152d575b6114815f19602161144b60018a01612879565b988901015b01917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b90811561149457611481905f1990611450565b50506114c2611500936114c7926114bd6114b1610afe993361261c565b92600954923691611e65565b612828565b611f15565b6114f9836114f33373ffffffffffffffffffffffffffffffffffffffff165f52600d60205260405f2090565b546119e2565b1115611fa0565b61150c610af182611d7a565b335f908152600d602052604090206115258282546119e2565b905533612262565b600190950194611438565b60029060649004970196611431565b6004906127109004970196611427565b6008906305f5e100900497019661141c565b601090662386f26fc10000900497019661140f565b6020906d04ee2d6d415b85acef810000000090049701966113ff565b50604095507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083046113e5565b3461025e57602060031936011261025e576004356115df816123b0565b1561176257604051905f82600c54916115f7836118ff565b808352926001811690811561172557506001146116c6575b61161b92500383610c9b565b8151156116b7576116459161164b611635611659936128aa565b6040519485936020850190612005565b90612005565b03601f198101835282610c9b565b8051156116a65761167d61064a6103019261164b6040519384926020840190612005565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815260050190565b506103016116b2611e01565b61064a565b50506116c1611e01565b611659565b5090600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f915b81831061170957505090602061161b9282010161160f565b60209193508060019154838589010152019101909184926116f1565b6020925061161b9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010161160f565b7fa14c4b50000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461025e57604060031936011261025e57602060ff6117fe6004356117ae81610787565b73ffffffffffffffffffffffffffffffffffffffff602435916117d083610787565b165f526007845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b3461025e57602060031936011261025e5773ffffffffffffffffffffffffffffffffffffffff60043561183c81610787565b6118446120bf565b1680156118b25773ffffffffffffffffffffffffffffffffffffffff600a54827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600a55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461025e575f60031936011261025e576020604051669536c7089100008152f35b90600182811c92168015611946575b602083101461191957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161190e565b1561195757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5265736572766573206e6f742074616b656e20796574000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211610a1c57565b91908110156119ff5760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b356105ff81610787565b91909173ffffffffffffffffffffffffffffffffffffffff611a5783612520565b9116928373ffffffffffffffffffffffffffffffffffffffff831603611c89575f83815260066020526040902080549290611aae73ffffffffffffffffffffffffffffffffffffffff871633908114908614171590565b611c23575b73ffffffffffffffffffffffffffffffffffffffff93611c1a575b50611af78573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b80545f19019055611b268273ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b8054600101905573ffffffffffffffffffffffffffffffffffffffff82164260a01b177c020000000000000000000000000000000000000000000000000000000017611b7a855f52600460205260405f2090565b557c0200000000000000000000000000000000000000000000000000000000811615611bd5575b501680927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a415611bd057565b612480565b60018401611beb815f52600460205260405f2090565b5415611bf8575b50611ba1565b5f548114611bf257611c12905f52600460205260405f2090565b555f80611bf2565b5f90555f611ace565b611c7f610526611c7833611c558a73f