Loading
[ { "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": [ { "components": [ { "internalType": "uint128", "name": "startTokenId", "type": "uint128" }, { "internalType": "uint128", "name": "endTokenId", "type": "uint128" }, { "internalType": "string", "name": "uri", "type": "string" } ], "indexed": false, "internalType": "struct ERC721SoulBoundToken.BaseURI[]", "name": "newBaseURIs", "type": "tuple[]" } ], "name": "BaseURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "newContractURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newRecipient", "type": "address" } ], "name": "FeeRecipientUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxSupply", "type": "uint256" } ], "name": "MaxSupplyUpdated", "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": false, "internalType": "bytes32", "name": "previousHash", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "newHash", "type": "bytes32" } ], "name": "ProvenanceHashUpdated", "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": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "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": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "elementDrop", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseURIs", "outputs": [ { "components": [ { "internalType": "uint128", "name": "startTokenId", "type": "uint128" }, { "internalType": "uint128", "name": "endTokenId", "type": "uint128" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct ERC721SoulBoundToken.BaseURI[]", "name": "uris", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_tokenName", "type": "string" }, { "internalType": "string", "name": "_tokenSymbol", "type": "string" }, { "internalType": "address", "name": "_ownerAddress", "type": "address" }, { "internalType": "address", "name": "_elementDrop", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "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": [], "name": "provenanceHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "refundEndTime", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "refundPeriod", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "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": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "startTokenId", "type": "uint128" }, { "internalType": "uint128", "name": "endTokenId", "type": "uint128" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct ERC721SoulBoundToken.BaseURI[]", "name": "uris", "type": "tuple[]" } ], "name": "setBaseURIs", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newFeeRecipient", "type": "address" } ], "name": "setFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxSupply", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newProvenanceHash", "type": "bytes32" } ], "name": "setProvenanceHash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "newRefundPeriod", "type": "uint32" } ], "name": "setRefundPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferValidator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060408051602080820183526000808352835191820190935282815290916200003b838262000168565b5060016200004a828262000168565b50505062000067620000616200006d60201b60201c565b62000071565b62000234565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ee57607f821691505b6020821081036200010f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016357600081815260208120601f850160051c810160208610156200013e5750805b601f850160051c820191505b818110156200015f578281556001016200014a565b5050505b505050565b81516001600160401b03811115620001845762000184620000c3565b6200019c81620001958454620000d9565b8462000115565b602080601f831160018114620001d45760008415620001bb5750858301515b600019600386901b1c1916600185901b1785556200015f565b600085815260208120601f198616915b828110156200020557888601518255948401946001909101908401620001e4565b5085821015620002245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612e2c80620002446000396000f3fe60806040526004361061021a5760003560e01c8063715018a611610123578063a9fc664e116100ab578063e74b981b1161006f578063e74b981b14610665578063e8a3d48514610685578063e985e9c51461069a578063f2fde38b146106ba578063fcddb5af146106da57600080fd5b8063a9fc664e146105ca578063b88d4fde146105ea578063c6ab67a31461060a578063c87b56dd14610620578063d5abeb011461064057600080fd5b80638f15b414116100f25780638f15b4141461051c578063938e3d7b1461053c57806395d89b411461055c578063a22cb46514610571578063a6a3b5b41461059157600080fd5b8063715018a61461048a57806373fddd161461049f578063866fa387146104de5780638da5cb5b146104fe57600080fd5b806320351117116101a657806342842e0e1161017557806342842e0e146103ea578063469048401461040a5780636352211e1461042a5780636f8b44b01461044a57806370a082311461046a57600080fd5b8063203511171461037757806323b872dd1461039757806329e38d5e146103b757806340c10f19146103d757600080fd5b8063098144d4116101ed578063098144d4146102d0578063099b6bfa146102ee578063158ef93e1461030e57806318160ddd1461032f578063187548771461035757600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a366004612364565b6106fc565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061026961074e565b60405161024b91906123d1565b34801561028257600080fd5b506102966102913660046123e4565b6107e0565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c9366004612419565b610807565b005b3480156102dc57600080fd5b50600d546001600160a01b0316610296565b3480156102fa57600080fd5b506102ce6103093660046123e4565b610921565b34801561031a57600080fd5b50600e5461023f90600160a01b900460ff1681565b34801561033b57600080fd5b50600a546001600160401b03165b60405190815260200161024b565b34801561036357600080fd5b506102ce610372366004612443565b610a3a565b34801561038357600080fd5b506102ce610392366004612565565b610afe565b3480156103a357600080fd5b506102ce6103b236600461267d565b610d73565b3480156103c357600080fd5b50600d54610296906001600160a01b031681565b6102ce6103e5366004612419565b610da4565b3480156103f657600080fd5b506102ce61040536600461267d565b610edc565b34801561041657600080fd5b50600e54610296906001600160a01b031681565b34801561043657600080fd5b506102966104453660046123e4565b610ef7565b34801561045657600080fd5b506102ce6104653660046123e4565b610f57565b34801561047657600080fd5b506103496104853660046126b9565b611196565b34801561049657600080fd5b506102ce61121c565b3480156104ab57600080fd5b50600a546104c690600160801b90046001600160401b031681565b6040516001600160401b03909116815260200161024b565b3480156104ea57600080fd5b50600b54610296906001600160a01b031681565b34801561050a57600080fd5b506006546001600160a01b0316610296565b34801561052857600080fd5b506102ce6105373660046126d4565b611230565b34801561054857600080fd5b506102ce610557366004612758565b611348565b34801561056857600080fd5b506102696114ab565b34801561057d57600080fd5b506102ce61058c3660046127c9565b6114ba565b34801561059d57600080fd5b50600a546105b590600160c01b900463ffffffff1681565b60405163ffffffff909116815260200161024b565b3480156105d657600080fd5b506102ce6105e53660046126b9565b6114c5565b3480156105f657600080fd5b506102ce610605366004612805565b611570565b34801561061657600080fd5b50610349600c5481565b34801561062c57600080fd5b5061026961063b3660046123e4565b6115a8565b34801561064c57600080fd5b50600a54600160401b90046001600160401b0316610349565b34801561067157600080fd5b506102ce6106803660046126b9565b6117a0565b34801561069157600080fd5b50610269611857565b3480156106a657600080fd5b5061023f6106b5366004612880565b6118e5565b3480156106c657600080fd5b506102ce6106d53660046126b9565b611913565b3480156106e657600080fd5b506106ef61194a565b60405161024b91906128b3565b60006001600160e01b031982166380ac58cd60e01b148061072d57506001600160e01b03198216635b5e139f60e01b145b8061074857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606007805461075d9061293e565b80601f01602080910402602001604051908101604052809291908181526020018280546107899061293e565b80156107d65780601f106107ab576101008083540402835291602001916107d6565b820191906000526020600020905b8154815290600101906020018083116107b957829003601f168201915b5050505050905090565b60006107eb82611ade565b506000908152600460205260409020546001600160a01b031690565b600061081282610ef7565b9050806001600160a01b0316836001600160a01b0316036108845760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108a057506108a081336118e5565b6109125760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161087b565b61091c8383611b3d565b505050565b6006546001600160a01b031633148061095957506006546001600160a01b0316321480156109595750600b546001600160a01b031633145b6109755760405162461bcd60e51b815260040161087b90612978565b80600c5414610a3757600a546001600160401b0316156109f35760405162461bcd60e51b815260206004820152603360248201527f50726f76656e616e6365486173682063616e6e6f7420626520736574206966206044820152721b5a5b9d1a5b99c81a185cc81cdd185c9d1959606a1b606482015260840161087b565b600c80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a1505b50565b6006546001600160a01b031632148015610a5e5750600b546001600160a01b031633145b610aaa5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206f776e65722066726f6d20656c656d656e7444726f700000000000604482015260640161087b565b63ffffffff811615610a375760405162461bcd60e51b815260206004820152601a60248201527f536f756c20626f756e642c206e6f6e2d726566756e6461626c65000000000000604482015260640161087b565b6006546001600160a01b0316331480610b3657506006546001600160a01b031632148015610b365750600b546001600160a01b031633145b610b525760405162461bcd60e51b815260040161087b90612978565b8051600f541115610bcb578051600f54600091610b6e916129d2565b905060005b81811015610bc857600f805480610b8c57610b8c6129e5565b60008281526020812060026000199093019283020181815590610bb26001830182612304565b5050905580610bc0816129fb565b915050610b73565b50505b600f5460005b8251811015610ce35781811015610c5f57828181518110610bf457610bf4612a14565b6020026020010151600f8281548110610c0f57610c0f612a14565b60009182526020918290208351928401516001600160801b03908116600160801b02931692909217600290910290910190815560408201516001820190610c569082612a78565b50905050610cd1565b600f838281518110610c7357610c73612a14565b6020908102919091018101518254600181810185556000948552938390208251938301516001600160801b03908116600160801b02941693909317600290910290920191825560408101519092820190610ccd9082612a78565b5050505b80610cdb816129fb565b915050610bd1565b507f19584d35e4c6095f3943641c96c284af1f2b8404568e142f501a0093bf5adc9582604051610d1391906128b3565b60405180910390a1600a546001600160401b031615610d6f57600a5460408051600181526001600160401b0390921660208301527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610a2d565b5050565b610d7d3382611bab565b610d995760405162461bcd60e51b815260040161087b90612b37565b61091c838383611c0a565b600b546001600160a01b03163314610dfe5760405162461bcd60e51b815260206004820152601960248201527f4f6e6c7920656c656d656e7444726f702063616e206d696e7400000000000000604482015260640161087b565b600a546001600160401b03600160401b82048116911610610e615760405162461bcd60e51b815260206004820152601d60248201527f4d6178696d756d206d696e74207175616e746974792072656163686564000000604482015260640161087b565b3415610eaf5760405162461bcd60e51b815260206004820152601a60248201527f536f756c20626f756e642c206e6f6e2d726566756e6461626c65000000000000604482015260640161087b565b600a80546001600160401b038082166001011667ffffffffffffffff19909116179055610d6f8282611db1565b61091c83838360405180602001604052806000815250611570565b6000818152600260205260408120546001600160a01b0316806107485760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161087b565b6006546001600160a01b031632148015610f7b5750600b546001600160a01b031633145b610fc75760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206f776e65722066726f6d20656c656d656e7444726f700000000000604482015260640161087b565b600a54600160401b90046001600160401b03168114610a37576001600160401b038111156110375760405162461bcd60e51b815260206004820152601e60248201527f4d6178537570706c792063616e6e6f74206578636565642075696e7436340000604482015260640161087b565b600a546001600160401b03161561113557600a546001600160401b03168110156110b55760405162461bcd60e51b815260206004820152602960248201527f4d6178537570706c792063616e6e6f74206265206c657373207468616e20746f60448201526874616c537570706c7960b81b606482015260840161087b565b600a54600160401b90046001600160401b031681106111355760405162461bcd60e51b815260206004820152603660248201527f4d6178537570706c792063616e206f6e6c7920626520646563726561736564206044820152751a59881b5a5b9d1a5b99c81a185cc81cdd185c9d195960521b606482015260840161087b565b600a80546fffffffffffffffff00000000000000001916600160401b6001600160401b038416021790556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c906020015b60405180910390a150565b60006001600160a01b0382166112005760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161087b565b506001600160a01b031660009081526003602052604090205490565b611224611eff565b61122e6000611f59565b565b600e54600160a01b900460ff16156112805760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161087b565b600e805460ff60a01b1916600160a01b17905560006112a76006546001600160a01b031690565b6001600160a01b0316146112da576112bd611eff565b6001600160a01b038216156112d5576112d582611f59565b611309565b6001600160a01b0382166113005760405162461bcd60e51b815260040161087b90612b85565b61130982611f59565b60076113158582612a78565b5060086113228482612a78565b50600b80546001600160a01b0319166001600160a01b0392909216919091179055505050565b6006546001600160a01b031633148061138057506006546001600160a01b0316321480156113805750600b546001600160a01b031633145b61139c5760405162461bcd60e51b815260040161087b90612978565b6000600980546113ab9061293e565b80601f01602080910402602001604051908101604052809291908181526020018280546113d79061293e565b80156114245780601f106113f957610100808354040283529160200191611424565b820191906000526020600020905b81548152906001019060200180831161140757829003601f168201915b505083519394505050508214158061145a57508282604051611447929190612bcb565b6040518091039020818051906020012014155b1561091c57600961146c838583612bdb565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac37378838360405161149e929190612c9b565b60405180910390a1505050565b60606008805461075d9061293e565b610d6f338383611fab565b6006546001600160a01b03163314806114fd57506006546001600160a01b0316321480156114fd5750600b546001600160a01b031633145b6115195760405162461bcd60e51b815260040161087b90612978565b6001600160a01b03811615610a375760405162461bcd60e51b815260206004820152601c60248201527f536f756c20626f756e642c206e6f6e2d7472616e7366657261626c6500000000604482015260640161087b565b61157a3383611bab565b6115965760405162461bcd60e51b815260040161087b90612b37565b6115a284848484612079565b50505050565b60606115b382611ade565b60005b600f5481101561178a57600f81815481106115d3576115d3612a14565b60009182526020909120600290910201546001600160801b0316831080159061162f5750600f818154811061160a5761160a612a14565b6000918252602090912060029091020154600160801b90046001600160801b03168311155b15611778576000600f828154811061164957611649612a14565b906000526020600020906002020160010180546116659061293e565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061293e565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505090506000815111156117615780600182516116fe91906129d2565b8151811061170e5761170e612a14565b01602001516001600160f81b031916602f60f81b0361175a5780611731856120ac565b604051602001611742929190612cca565b60405160208183030381529060405292505050919050565b9392505050565b505060408051602081019091526000815292915050565b80611782816129fb565b9150506115b6565b5050604080516020810190915260008152919050565b6006546001600160a01b03163314806117d857506006546001600160a01b0316321480156117d85750600b546001600160a01b031633145b6117f45760405162461bcd60e51b815260040161087b90612978565b600e546001600160a01b03828116911614610a3757600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc29060200161118b565b600980546118649061293e565b80601f01602080910402602001604051908101604052809291908181526020018280546118909061293e565b80156118dd5780601f106118b2576101008083540402835291602001916118dd565b820191906000526020600020905b8154815290600101906020018083116118c057829003601f168201915b505050505081565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61191b611eff565b6001600160a01b0381166119415760405162461bcd60e51b815260040161087b90612b85565b610a3781611f59565b600f546060906001600160401b0381111561196757611967612469565b6040519080825280602002602001820160405280156119b457816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816119855790505b50905060005b8151811015611ada57600f81815481106119d6576119d6612a14565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b909104169383019390935260018301805492939291840191611a289061293e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a549061293e565b8015611aa15780601f10611a7657610100808354040283529160200191611aa1565b820191906000526020600020905b815481529060010190602001808311611a8457829003601f168201915b505050505081525050828281518110611abc57611abc612a14565b60200260200101819052508080611ad2906129fb565b9150506119ba565b5090565b6000818152600260205260409020546001600160a01b0316610a375760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161087b565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b7282610ef7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611bb783610ef7565b9050806001600160a01b0316846001600160a01b03161480611bde5750611bde81856118e5565b80611c025750836001600160a01b0316611bf7846107e0565b6001600160a01b0316145b949350505050565b826001600160a01b0316611c1d82610ef7565b6001600160a01b031614611c815760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161087b565b6001600160a01b038216611ce35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161087b565b611cee8383836121ac565b611cf9600082611b3d565b6001600160a01b0383166000908152600360205260408120805460019290611d229084906129d2565b90915550506001600160a01b0382166000908152600360205260408120805460019290611d50908490612cf9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216611e075760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161087b565b6000818152600260205260409020546001600160a01b031615611e6c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161087b565b611e78600083836121ac565b6001600160a01b0382166000908152600360205260408120805460019290611ea1908490612cf9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6006546001600160a01b0316331461122e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087b565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361200c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161087b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612084848484611c0a565b61209084848484612203565b6115a25760405162461bcd60e51b815260040161087b90612d0c565b6060816000036120d35750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120fd57806120e7816129fb565b91506120f69050600a83612d74565b91506120d7565b6000816001600160401b0381111561211757612117612469565b6040519080825280601f01601f191660200182016040528015612141576020820181803683370190505b5090505b8415611c02576121566001836129d2565b9150612163600a86612d88565b61216e906030612cf9565b60f81b81838151811061218357612183612a14565b60200101906001600160f81b031916908160001a9053506121a5600a86612d74565b9450612145565b6001600160a01b0383161561091c5760405162461bcd60e51b815260206004820152601c60248201527f536f756c20626f756e642c206e6f6e2d7472616e7366657261626c6500000000604482015260640161087b565b60006001600160a01b0384163b156122f957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612247903390899088908890600401612d9c565b6020604051808303816000875af1925050508015612282575060408051601f3d908101601f1916820190925261227f91810190612dd9565b60015b6122df573d8080156122b0576040519150601f19603f3d011682016040523d82523d6000602084013e6122b5565b606091505b5080516000036122d75760405162461bcd60e51b815260040161087b90612d0c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c02565b506001949350505050565b5080546123109061293e565b6000825580601f10612320575050565b601f016020900490600052602060002090810190610a3791905b80821115611ada576000815560010161233a565b6001600160e01b031981168114610a3757600080fd5b60006020828403121561237657600080fd5b813561175a8161234e565b60005b8381101561239c578181015183820152602001612384565b50506000910152565b600081518084526123bd816020860160208601612381565b601f01601f19169290920160200192915050565b60208152600061175a60208301846123a5565b6000602082840312156123f657600080fd5b5035919050565b80356001600160a01b038116811461241457600080fd5b919050565b6000806040838503121561242c57600080fd5b612435836123fd565b946020939093013593505050565b60006020828403121561245557600080fd5b813563ffffffff8116811461175a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156124a1576124a1612469565b60405290565b604051601f8201601f191681016001600160401b03811182821017156124cf576124cf612469565b604052919050565b80356001600160801b038116811461241457600080fd5b60006001600160401b0383111561250757612507612469565b61251a601f8401601f19166020016124a7565b905082815283838301111561252e57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261255657600080fd5b61175a838335602085016124ee565b6000602080838503121561257857600080fd5b82356001600160401b038082111561258f57600080fd5b818501915085601f8301126125a357600080fd5b8135818111156125b5576125b5612469565b8060051b6125c48582016124a7565b91825283810185019185810190898411156125de57600080fd5b86860192505b83831015612670578235858111156125fc5760008081fd5b86016060818c03601f19018113156126145760008081fd5b61261c61247f565b6126278a84016124d7565b815260406126368185016124d7565b828c015291830135918883111561264d5760008081fd5b61265b8e8c85870101612545565b908201528452505091860191908601906125e4565b9998505050505050505050565b60008060006060848603121561269257600080fd5b61269b846123fd565b92506126a9602085016123fd565b9150604084013590509250925092565b6000602082840312156126cb57600080fd5b61175a826123fd565b600080600080608085870312156126ea57600080fd5b84356001600160401b038082111561270157600080fd5b61270d88838901612545565b9550602087013591508082111561272357600080fd5b5061273087828801612545565b93505061273f604086016123fd565b915061274d606086016123fd565b905092959194509250565b6000806020838503121561276b57600080fd5b82356001600160401b038082111561278257600080fd5b818501915085601f83011261279657600080fd5b8135818111156127a557600080fd5b8660208285010111156127b757600080fd5b60209290920196919550909350505050565b600080604083850312156127dc57600080fd5b6127e5836123fd565b9150602083013580151581146127fa57600080fd5b809150509250929050565b6000806000806080858703121561281b57600080fd5b612824856123fd565b9350612832602086016123fd565b92506040850135915060608501356001600160401b0381111561285457600080fd5b8501601f8101871361286557600080fd5b612874878235602084016124ee565b91505092959194509250565b6000806040838503121561289357600080fd5b61289c836123fd565b91506128aa602084016123fd565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561293057888303603f19018552815180516001600160801b039081168552888201511688850152860151606087850181905261291c818601836123a5565b9689019694505050908601906001016128da565b509098975050505050505050565b600181811c9082168061295257607f821691505b60208210810361297257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4f6e6c79206f776e6572206f72206f776e65722066726f6d20656c656d656e74604082015263044726f760e41b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610748576107486129bc565b634e487b7160e01b600052603160045260246000fd5b600060018201612a0d57612a0d6129bc565b5060010190565b634e487b7160e01b600052603260045260246000fd5b601f82111561091c57600081815260208120601f850160051c81016020861015612a515750805b601f850160051c820191505b81811015612a7057828155600101612a5d565b505050505050565b81516001600160401b03811115612a9157612a91612469565b612aa581612a9f845461293e565b84612a2a565b602080601f831160018114612ada5760008415612ac25750858301515b600019600386901b1c1916600185901b178555612a70565b600085815260208120601f198616915b82811015612b0957888601518255948401946001909101908401612aea565b5085821015612b275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b8183823760009101908152919050565b6001600160401b03831115612bf257612bf2612469565b612c0683612c00835461293e565b83612a2a565b6000601f841160018114612c3a5760008515612c225750838201355b600019600387901b1c1916600186901b178355612c94565b600083815260209020601f19861690835b82811015612c6b5786850135825560209485019460019092019101612c4b565b5086821015612c885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60008351612cdc818460208801612381565b835190830190612cf0818360208801612381565b01949350505050565b80820180821115610748576107486129bc565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612d8357612d83612d5e565b500490565b600082612d9757612d97612d5e565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612dcf908301846123a5565b9695505050505050565b600060208284031215612deb57600080fd5b815161175a8161234e56fea26469706673582212207f1996516e6b4ce2f17c4642e40673fcb708902cd48e016e930c586344af463e64736f6c63430008110033