[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "_baseURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "AllowListChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "_nft_count", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "isInAllowlist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "setAllowList", "outputs": [], "stateMutability": "nonpayable", "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": "newURI", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60a060405234801561000f575f80fd5b50604051612a46380380612a4683398101604081905261002e91610320565b82825f6001338061005957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610062816100d6565b50600561006f8582610433565b50600661007c8482610433565b506080819052335f818152600860205260409020805460ff191660011790556100ba906100ab6012600a6105e6565b6100b590856105fb565b610125565b5050505080600990816100cd9190610433565b50505050610625565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661014e57604051639cfea58360e01b81525f6004820152602401610050565b6101595f838361015d565b5050565b6001600160a01b038316610187578060075f82825461017c9190610612565b909155506101f79050565b6001600160a01b0383165f90815260016020526040902054818110156101d95760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610050565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b03821661021357600780548290039055610231565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161027691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126102a6575f80fd5b81516001600160401b038111156102bf576102bf610283565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ed576102ed610283565b604052818152838201602001851015610304575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f60608486031215610332575f80fd5b83516001600160401b03811115610347575f80fd5b61035386828701610297565b602086015190945090506001600160401b03811115610370575f80fd5b61037c86828701610297565b604086015190935090506001600160401b03811115610399575f80fd5b6103a586828701610297565b9150509250925092565b600181811c908216806103c357607f821691505b6020821081036103e157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561042e57805f5260205f20601f840160051c8101602085101561040c5750805b601f840160051c820191505b8181101561042b575f8155600101610418565b50505b505050565b81516001600160401b0381111561044c5761044c610283565b6104608161045a84546103af565b846103e7565b6020601f821160018114610492575f831561047b5750848201515b5f19600385901b1c1916600184901b17845561042b565b5f84815260208120601f198516915b828110156104c157878501518255602094850194600190920191016104a1565b50848210156104de57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561053c57808504811115610520576105206104ed565b600184161561052e57908102905b60019390931c928002610505565b935093915050565b5f82610552575060016105e0565b8161055e57505f6105e0565b8160018114610574576002811461057e5761059a565b60019150506105e0565b60ff84111561058f5761058f6104ed565b50506001821b6105e0565b5060208310610133831016604e8410600b84101617156105bd575081810a6105e0565b6105c95f198484610501565b805f19048211156105dc576105dc6104ed565b0290505b92915050565b5f6105f460ff841683610544565b9392505050565b80820281158282048414176105e0576105e06104ed565b808201808211156105e0576105e06104ed565b6080516124026106445f395f81816102f2015261042e01526124025ff3fe608060405234801561000f575f80fd5b50600436106101ba575f3560e01c80634f5dd7a0116100f3578063a22cb46511610093578063dd62ed3e1161006e578063dd62ed3e146103ba578063e985e9c5146103f2578063f242432a14610405578063f2fde38b14610418575f80fd5b8063a22cb46514610381578063a457c2d714610394578063a9059cbb146103a7575f80fd5b8063715018a6116100ce578063715018a6146103445780637666f1251461034c5780638da5cb5b1461035f57806395d89b4114610379575f80fd5b80634f5dd7a0146102ed5780636c0360eb1461031457806370a082311461031c575f80fd5b806329d0fdc01161015e5780633950935111610139578063395093511461029457806340c10f19146102a757806342966c68146102ba5780634e1273f4146102cd575f80fd5b806329d0fdc01461025f5780632eb2c2d614610272578063313ce56714610285575f80fd5b8063095ea7b311610199578063095ea7b31461020e5780630e89341c1461023157806318160ddd1461024457806323b872dd1461024c575f80fd5b8062fdd58e146101be57806302fe5305146101e457806306fdde03146101f9575b5f80fd5b6101d16101cc366004611b1e565b61042b565b6040519081526020015b60405180910390f35b6101f76101f2366004611b5a565b6104bd565b005b6102016104d5565b6040516101db9190611c38565b61022161021c366004611b1e565b610565565b60405190151581526020016101db565b61020161023f366004611c4a565b61057c565b6007546101d1565b61022161025a366004611c61565b6105b0565b61022161026d366004611c9b565b6105d3565b6101f7610280366004611d38565b6105f0565b604051601281526020016101db565b6102216102a2366004611b1e565b6106be565b6101f76102b5366004611b1e565b610701565b6101f76102c8366004611c4a565b610848565b6102e06102db366004611df4565b6108a4565b6040516101db9190611e98565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b610201610996565b6101d161032a366004611c9b565b6001600160a01b03165f9081526001602052604090205490565b6101f7610a22565b6101f761035a366004611eaa565b610a35565b5f546040516001600160a01b0390911681526020016101db565b610201610b9b565b6101f761038f366004611eaa565b610baa565b6102216103a2366004611b1e565b610c3f565b6102216103b5366004611b1e565b610cc1565b6101d16103c8366004611ee3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610221610400366004611ee3565b610cce565b6101f7610413366004611f14565b610cfb565b6101f7610426366004611c9b565b610d64565b5f7f000000000000000000000000000000000000000000000000000000000000000082106104935760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a59081d1bdad95b881a5960821b60448201526064015b60405180910390fd5b505f8181526003602090815260408083206001600160a01b03861684529091529020545b92915050565b6104c5610da1565b60096104d18282612002565b5050565b6060600580546104e490611f86565b80601f016020809104026020016040519081016040528092919081815260200182805461051090611f86565b801561055b5780601f106105325761010080835404028352916020019161055b565b820191905f5260205f20905b81548152906001019060200180831161053e57829003601f168201915b5050505050905090565b5f33610572818585610ddc565b5060019392505050565b6060600961058983610de9565b60405160200161059a9291906120bc565b6040516020818303038152906040529050919050565b5f336105bd858285610e78565b6105c8858585610eed565b506001949350505050565b6001600160a01b03165f9081526008602052604090205460ff1690565b336001600160a01b0389168114801590610611575061060f8982610cce565b155b1561064257604051634843fdfb60e01b81526001600160a01b0380831660048301528a16602482015260440161048a565b6106b389898989808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284375f920191909152508a92508991506110499050565b505050505050505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916106f89185906106f3908661116b565b610ddc565b50600192915050565b60648111156107785760405162461bcd60e51b815260206004820152603e60248201527f4d696e74696e672076616c7565206578636565647320746865206d6178696d7560448201527f6d206f662031303020746f6b656e73206d696e746564207065722074782e0000606482015260840161048a565b6001600160a01b0382166107a157604051639cfea58360e01b81525f600482015260240161048a565b6001600160a01b0382165f908152600160205260409020546107d8836107c96012600a61224e565b6107d3908561225c565b611188565b6107e1836105d3565b610843575f6107f26012600a61224e565b6107fc9083612273565b6108086012600a61224e565b6001600160a01b0386165f9081526001602052604090205461082a9190612273565b6108349190612292565b9050610841845f836111bc565b505b505050565b3380610869576040516313053d9360e21b81525f600482015260240161048a565b610872816105d3565b61089a576040516313053d9360e21b81526001600160a01b038216600482015260240161048a565b6104d18183611216565b60608382146108d057604051633b5cfc6960e21b8152600481018390526024810185905260440161048a565b5f846001600160401b038111156108e9576108e9611b46565b604051908082528060200260200182016040528015610912578160200160208202803683370190505b5090505f5b8581101561098c57610967878783818110610934576109346122a5565b90506020020160208101906109499190611c9b565b86868481811061095b5761095b6122a5565b9050602002013561042b565b828281518110610979576109796122a5565b6020908102919091010152600101610917565b5095945050505050565b600980546109a390611f86565b80601f01602080910402602001604051908101604052809291908181526020018280546109cf90611f86565b8015610a1a5780601f106109f157610100808354040283529160200191610a1a565b820191905f5260205f20905b8154815290600101906020018083116109fd57829003601f168201915b505050505081565b610a2a610da1565b610a335f61124a565b565b610a3d610da1565b6001600160a01b0382165f9081526008602052604090205481151560ff909116151503610abc5760405162461bcd60e51b815260206004820152602760248201527f41737369676e696e67207468652073616d65207374617465206973206e6f7420604482015266185b1b1bddd95960ca1b606482015260840161048a565b6001600160a01b0382165f908152600860209081526040808320805460ff1916851580159190911790915560019092529091205490610b25575f610b026012600a61224e565b610b0c9083612273565b90508015610b1f57610b1f845f83611299565b50610b51565b5f610b326012600a61224e565b610b3c9083612273565b90508015610b4f57610b4f845f836111bc565b505b826001600160a01b03167fd003311099c643a28802147fdbc087dd026e2850e364b69a16513a29f4aa2b4983604051610b8e911515815260200190565b60405180910390a2505050565b6060600680546104e490611f86565b6001600160a01b038216610bd357604051633eaa03e360e01b81525f600482015260240161048a565b335f8181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155905190815283917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b335f9081526002602090815260408083206001600160a01b038616845290915281205482811015610cb25760405162461bcd60e51b815260206004820152601e60248201527f4445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f0000604482015260640161048a565b61057233856106f384876112f2565b5f33610572818585610eed565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205460ff1690565b336001600160a01b0387168114801590610d1c5750610d1a8782610cce565b155b15610d4d57604051634843fdfb60e01b81526001600160a01b0380831660048301528816602482015260440161048a565b610d5b878787878787611314565b50505050505050565b610d6c610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f600482015260240161048a565b610d9e8161124a565b50565b33610db35f546001600160a01b031690565b6001600160a01b031614610a335760405163118cdaa760e01b815233600482015260240161048a565b6108438383836001611424565b60605f610df5836114f6565b60010190505f816001600160401b03811115610e1357610e13611b46565b6040519080825280601f01601f191660200182016040528015610e3d576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610e4757509392505050565b6001600160a01b038381165f908152600260209081526040808320938616835292905220545f1981146108415781811015610edf57604051630c95cf2760e11b81526001600160a01b0384166004820152602481018290526044810183905260640161048a565b61084184848484035f611424565b6001600160a01b038316610f16576040516313053d9360e21b81525f600482015260240161048a565b6001600160a01b038216610f3f57604051639cfea58360e01b81525f600482015260240161048a565b6001600160a01b038084165f90815260016020526040808220549285168252902054610f6c8585856115cd565b610f75856105d3565b610fd7575f610f866012600a61224e565b6001600160a01b0387165f90815260016020526040902054610fa89190612273565b610fb46012600a61224e565b610fbe9085612273565b610fc89190612292565b9050610fd5865f83611299565b505b610fe0846105d3565b611042575f610ff16012600a61224e565b610ffb9083612273565b6110076012600a61224e565b6001600160a01b0387165f908152600160205260409020546110299190612273565b6110339190612292565b9050611040855f836111bc565b505b5050505050565b6001600160a01b03851661107257604051639cfea58360e01b81525f600482015260240161048a565b6001600160a01b03861661109b576040516313053d9360e21b81525f600482015260240161048a565b5f805b85518110156110d6578481815181106110b9576110b96122a5565b6020026020010151826110cc91906122b9565b915060010161109e565b506110f787876110e86012600a61224e565b6110f2908561225c565b6115cd565b611100876105d3565b61111057611110875f87876116e6565b611119866105d3565b610d5b57611128865f836111bc565b610d5b335f88888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506118fb92505050565b5f61117682846122b9565b9050828110156104b7576104b76122cc565b6001600160a01b0382166111b157604051639cfea58360e01b81525f600482015260240161048a565b6104d15f83836115cd565b6001600160a01b0383166111e557604051632bfa23e760e11b81525f600482015260240161048a565b604080516001808252602082018590528183019081526060820184905260808201909252906110425f8684846116e6565b6001600160a01b03821661123f576040516313053d9360e21b81525f600482015260240161048a565b6104d1825f836115cd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166112c157604051626a0d4560e21b81525f600482015260240161048a565b60408051600180825260208201859052818301908152606082018490526080820190925290611042855f84846116e6565b5f82821115611303576113036122cc565b61130d8284612292565b9392505050565b6001600160a01b03851661133d57604051639cfea58360e01b81525f600482015260240161048a565b6001600160a01b038616611366576040516313053d9360e21b81525f600482015260240161048a565b604080516001808252602082018790528183019081526060820186905260808201909252906113a6888861139c6012600a61224e565b6110f2908961225c565b6113af886105d3565b6113bf576113bf885f84846116e6565b6113c8876105d3565b61141a576113d7875f876111bc565b61141a335f89898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611a1c92505050565b5050505050505050565b6001600160a01b03841661144d576040516322f051b160e21b81525f600482015260240161048a565b6001600160a01b0383166114765760405163270af7ed60e11b81525f600482015260240161048a565b6001600160a01b038085165f908152600260209081526040808320938716835292905220829055801561084157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114e891815260200190565b60405180910390a350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106115345772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611560576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061157e57662386f26fc10000830492506010015b6305f5e1008310611596576305f5e100830492506008015b61271083106115aa57612710830492506004015b606483106115bc576064830492506002015b600a83106104b75760010192915050565b6001600160a01b0383166115f7578060075f8282546115ec91906122b9565b909155506116679050565b6001600160a01b0383165f90815260016020526040902054818110156116495760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161048a565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b038216611683576007805482900390556116a1565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c3291815260200190565b80518251146117155781518151604051633b5cfc6960e21b81526004810192909252602482015260440161048a565b335f5b835181101561181d576020818102858101820151908501909101516001600160a01b038816156117cd575f8281526003602090815260408083206001600160a01b038c168452909152902054818110156117a5576040516303dee4c560e01b81526001600160a01b038a16600482015260248101829052604481018390526064810184905260840161048a565b5f8381526003602090815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615611813575f8281526003602090815260408083206001600160a01b038b1684529091528120805483929061180d9084906122b9565b90915550505b5050600101611718565b50825160010361189d5760208301515f906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161188e929190918252602082015260400190565b60405180910390a45050611042565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516118ec9291906122e0565b60405180910390a45050505050565b6001600160a01b0384163b156110405760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061193f9089908990889088908890600401612304565b6020604051808303815f875af1925050508015611979575060408051601f3d908101601f1916820190925261197691810190612361565b60015b6119e0573d8080156119a6576040519150601f19603f3d011682016040523d82523d5f602084013e6119ab565b606091505b5080515f036119d857604051632bfa23e760e11b81526001600160a01b038616600482015260240161048a565b805181602001fd5b6001600160e01b0319811663bc197c8160e01b14610d5b57604051632bfa23e760e11b81526001600160a01b038616600482015260240161048a565b6001600160a01b0384163b156110405760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a609089908990889088908890600401612388565b6020604051808303815f875af1925050508015611a9a575060408051601f3d908101601f19168201909252611a9791810190612361565b60015b611ac7573d8080156119a6576040519150601f19603f3d011682016040523d82523d5f602084013e6119ab565b6001600160e01b0319811663f23a6e6160e01b14610d5b57604051632bfa23e760e11b81526001600160a01b038616600482015260240161048a565b80356001600160a01b0381168114611b19575f80fd5b919050565b5f8060408385031215611b2f575f80fd5b611b3883611b03565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611b6a575f80fd5b81356001600160401b03811115611b7f575f80fd5b8201601f81018413611b8f575f80fd5b80356001600160401b03811115611ba857611ba8611b46565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611bd657611bd6611b46565b604052818152828201602001861015611bed575f80fd5b816020840160208301375f91810160200191909152949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61130d6020830184611c0a565b5f60208284031215611c5a575f80fd5b5035919050565b5f805f60608486031215611c73575f80fd5b611c7c84611b03565b9250611c8a60208501611b03565b929592945050506040919091013590565b5f60208284031215611cab575f80fd5b61130d82611b03565b5f8083601f840112611cc4575f80fd5b5081356001600160401b03811115611cda575f80fd5b6020830191508360208260051b8501011115611cf4575f80fd5b9250929050565b5f8083601f840112611d0b575f80fd5b5081356001600160401b03811115611d21575f80fd5b602083019150836020828501011115611cf4575f80fd5b5f805f805f805f8060a0898b031215611d4f575f80fd5b611d5889611b03565b9750611d6660208a01611b03565b965060408901356001600160401b03811115611d80575f80fd5b611d8c8b828c01611cb4565b90975095505060608901356001600160401b03811115611daa575f80fd5b611db68b828c01611cb4565b90955093505060808901356001600160401b03811115611dd4575f80fd5b611de08b828c01611cfb565b999c989b5096995094979396929594505050565b5f805f8060408587031215611e07575f80fd5b84356001600160401b03811115611e1c575f80fd5b611e2887828801611cb4565b90955093505060208501356001600160401b03811115611e46575f80fd5b611e5287828801611cb4565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015611e8e578151865260209586019590910190600101611e70565b5093949350505050565b602081525f61130d6020830184611e5e565b5f8060408385031215611ebb575f80fd5b611ec483611b03565b915060208301358015158114611ed8575f80fd5b809150509250929050565b5f8060408385031215611ef4575f80fd5b611efd83611b03565b9150611f0b60208401611b03565b90509250929050565b5f805f805f8060a08789031215611f29575f80fd5b611f3287611b03565b9550611f4060208801611b03565b9450604087013593506060870135925060808701356001600160401b03811115611f68575f80fd5b611f7489828a01611cfb565b979a9699509497509295939492505050565b600181811c90821680611f9a57607f821691505b602082108103611fb857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561084357805f5260205f20601f840160051c81016020851015611fe35750805b601f840160051c820191505b81811015611042575f8155600101611fef565b81516001600160401b0381111561201b5761201b611b46565b61202f816120298454611f86565b84611fbe565b6020601f821160018114612061575f831561204a5750848201515b5f19600385901b1c1916600184901b178455611042565b5f84815260208120601f198516915b828110156120905787850151825560209485019460019092019101612070565b50848210156120ad57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8084546120c981611f86565b6001821680156120e057600181146120f557612122565b60ff1983168652811515820286019350612122565b875f5260205f205f5b8381101561211a578154888201526001909101906020016120fe565b505081860193505b505050602f60f81b815283518060208601600184015e64173539b7b760d91b9101600181019182526006015b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156121a65780850481111561218a5761218a612157565b600184161561219857908102905b60019390931c92800261216f565b935093915050565b5f826121bc575060016104b7565b816121c857505f6104b7565b81600181146121de57600281146121e857612204565b60019150506104b7565b60ff8411156121f9576121f9612157565b50506001821b6104b7565b5060208310610133831016604e8410600b8410161715612227575081810a6104b7565b6122335f19848461216b565b805f190482111561224657612246612157565b029392505050565b5f61130d60ff8416836121ae565b80820281158282048414176104b7576104b7612157565b5f8261228d57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104b7576104b7612157565b634e487b7160e01b5f52603260045260245ffd5b808201808211156104b7576104b7612157565b634e487b7160e01b5f52600160045260245ffd5b604081525f6122f26040830185611e5e565b828103602084015261214e8185611e5e565b6001600160a01b0386811682528516602082015260a0604082018190525f9061232f90830186611e5e565b82810360608401526123418186611e5e565b905082810360808401526123558185611c0a565b98975050505050505050565b5f60208284031215612371575f80fd5b81516001600160e01b03198116811461130d575f80fd5b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906123c190830184611c0a565b97965050505050505056fea264697066735822122049a11a5930801be825a47de988abe06e33746a41c3ef3a654bf4f897d2cf4af264736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000094772617920446f67650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000547524f4745000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f697066732e696f2f697066732f516d5231537150323473665250746168776f4631436d444367487a477734715a74456a485969386b384839376f6a0000000000000000000000000000000000000000000000000000000000