[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TokenIdsNotStrictlyAscending", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collectionSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentStage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "devMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "maxMintPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintsLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "stageZeroMintLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawMoney", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526045600a556001600b556004600c556040518060a0016040528061010d61ffff1681526020016102b161ffff16815260200161056361ffff1681526020016106f361ffff1681526020016108ae61ffff16815250600d906005610068929190610397565b506040518060a001604052805f67ffffffffffffffff1681526020016705d423c655aa000067ffffffffffffffff1681526020016709935f581f05000067ffffffffffffffff168152602001670dbd2fc137a3000067ffffffffffffffff1681526020016711200c7644d5000067ffffffffffffffff16815250600e9060056100f29291906103e8565b5060405180602001604052805f815250600f90816101109190610694565b505f6010555f601155348015610124575f80fd5b506040516134b33803806134b3833981810160405281019061014691906107c1565b806040518060400160405280600981526020017f41706546656c6c617a00000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f414600000000000000000000000000000000000000000000000000000000000081525081600290816101c29190610694565b5080600390816101d29190610694565b506101e16102a760201b60201c565b5f819055506101f46102a760201b60201c565b6102026102af60201b60201c565b101561021f5761021e63fed8210f60e01b6102c360201b60201c565b5b50505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610291575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161028891906107fb565b60405180910390fd5b6102a0816102cb60201b60201c565b5050610814565b5f6001905090565b5f6102be61038e60201b60201c565b905090565b805f5260045ffd5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6108ae905090565b828054828255905f5260205f209081019282156103d7579160200282015b828111156103d6578251829061ffff169055916020019190600101906103b5565b5b5090506103e4919061043f565b5090565b828054828255905f5260205f2090810192821561042e579160200282015b8281111561042d578251829067ffffffffffffffff16905591602001919060010190610406565b5b50905061043b919061043f565b5090565b5b80821115610456575f815f905550600101610440565b5090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104d557607f821691505b6020821081036104e8576104e7610491565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261054a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261050f565b610554868361050f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61059861059361058e8461056c565b610575565b61056c565b9050919050565b5f819050919050565b6105b18361057e565b6105c56105bd8261059f565b84845461051b565b825550505050565b5f90565b6105d96105cd565b6105e48184846105a8565b505050565b5b81811015610607576105fc5f826105d1565b6001810190506105ea565b5050565b601f82111561064c5761061d816104ee565b61062684610500565b81016020851015610635578190505b61064961064185610500565b8301826105e9565b50505b505050565b5f82821c905092915050565b5f61066c5f1984600802610651565b1980831691505092915050565b5f610684838361065d565b9150826002028217905092915050565b61069d8261045a565b67ffffffffffffffff8111156106b6576106b5610464565b5b6106c082546104be565b6106cb82828561060b565b5f60209050601f8311600181146106fc575f84156106ea578287015190505b6106f48582610679565b86555061075b565b601f19841661070a866104ee565b5f5b828110156107315784890151825560018201915060208501945060208101905061070c565b8683101561074e578489015161074a601f89168261065d565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61079082610767565b9050919050565b6107a081610786565b81146107aa575f80fd5b50565b5f815190506107bb81610797565b92915050565b5f602082840312156107d6576107d5610763565b5b5f6107e3848285016107ad565b91505092915050565b6107f581610786565b82525050565b5f60208201905061080e5f8301846107ec565b92915050565b612c92806108215f395ff3fe60806040526004361061019b575f3560e01c8063715018a6116100eb578063b228d92511610089578063c87b56dd11610063578063c87b56dd1461054b578063e6a72acf14610587578063e985e9c5146105c3578063f2fde38b146105ff5761019b565b8063b228d925146104c9578063b88d4fde146104f3578063b9066c0a1461050f5761019b565b80639d5561e1116100c55780639d5561e114610445578063a0712d681461046f578063a22cb4651461048b578063ac446002146104b35761019b565b8063715018a6146103db5780638da5cb5b146103f157806395d89b411461041b5761019b565b8063375a069a1161015857806355f804b31161013257806355f804b3146103115780635bf5d54c146103395780636352211e1461036357806370a082311461039f5761019b565b8063375a069a146102a357806342842e0e146102cb57806345c0f533146102e75761019b565b806301ffc9a71461019f57806306fdde03146101db578063081812fc14610205578063095ea7b31461024157806318160ddd1461025d57806323b872dd14610287575b5f80fd5b3480156101aa575f80fd5b506101c560048036038101906101c09190611ed1565b610627565b6040516101d29190611f16565b60405180910390f35b3480156101e6575f80fd5b506101ef6106b8565b6040516101fc9190611f9f565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190611ff2565b610748565b604051610238919061205c565b60405180910390f35b61025b6004803603810190610256919061209f565b6107a1565b005b348015610268575f80fd5b506102716107b1565b60405161027e91906120ec565b60405180910390f35b6102a1600480360381019061029c9190612105565b6107fc565b005b3480156102ae575f80fd5b506102c960048036038101906102c49190611ff2565b610a7d565b005b6102e560048036038101906102e09190612105565b610afd565b005b3480156102f2575f80fd5b506102fb610b1c565b60405161030891906120ec565b60405180910390f35b34801561031c575f80fd5b50610337600480360381019061033291906121b6565b610b25565b005b348015610344575f80fd5b5061034d610b43565b60405161035a91906120ec565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190611ff2565b610b4c565b604051610396919061205c565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612201565b610b5d565b6040516103d291906120ec565b60405180910390f35b3480156103e6575f80fd5b506103ef610bf1565b005b3480156103fc575f80fd5b50610405610c04565b604051610412919061205c565b60405180910390f35b348015610426575f80fd5b5061042f610c2c565b60405161043c9190611f9f565b60405180910390f35b348015610450575f80fd5b50610459610cbc565b60405161046691906120ec565b60405180910390f35b61048960048036038101906104849190611ff2565b610d18565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612256565b610efd565b005b3480156104be575f80fd5b506104c7611003565b005b3480156104d4575f80fd5b506104dd6110f8565b6040516104ea91906120ec565b60405180910390f35b61050d600480360381019061050891906123bc565b611101565b005b34801561051a575f80fd5b5061053560048036038101906105309190612201565b611152565b60405161054291906120ec565b60405180910390f35b348015610556575f80fd5b50610571600480360381019061056c9190611ff2565b61118c565b60405161057e9190611f9f565b60405180910390f35b348015610592575f80fd5b506105ad60048036038101906105a89190611ff2565b611206565b6040516105ba91906120ec565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061243c565b6112a3565b6040516105f69190611f16565b60405180910390f35b34801561060a575f80fd5b5061062560048036038101906106209190612201565b611331565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061068157506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106b15750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546106c7906124a7565b80601f01602080910402602001604051908101604052809291908181526020018280546106f3906124a7565b801561073e5780601f106107155761010080835404028352916020019161073e565b820191905f5260205f20905b81548152906001019060200180831161072157829003601f168201915b5050505050905090565b5f610752826113b5565b6107675761076663cf4700e460e01b611458565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6107ad82826001611460565b5050565b5f6107ba61158a565b6001545f54030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107ec611592565b146107f957600854810190505b90565b5f610806826115a0565b90505f8473ffffffffffffffffffffffffffffffffffffffff169050808273ffffffffffffffffffffffffffffffffffffffff16146108505761084f63a114810060e01b611458565b5b5f8061085b856116af565b91509150610887818461086c6116d2565b73ffffffffffffffffffffffffffffffffffffffff166116d9565b6108b25761089c876108976116d2565b6112a3565b6108b1576108b06359c896be60e01b611458565b5b5b6108bf87878760016116ea565b80156108c9575f82555b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506109918661096d8989886116f0565b7c020000000000000000000000000000000000000000000000000000000017611717565b60045f8781526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000851603610a0d575f6001860190505f60045f8381526020019081526020015f205403610a0b575f548114610a0a578460045f8381526020019081526020015f20819055505b5b505b5f8673ffffffffffffffffffffffffffffffffffffffff1690508581857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f8103610a6657610a6563ea553b3460e01b611458565b5b610a738888886001611741565b5050505050505050565b610a85611747565b600a5481610a92336117ce565b610a9c9190612504565b10610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612581565b60405180910390fd5b610ae63382611822565b80601054610af49190612504565b60108190555050565b610b1783838360405180602001604052805f815250611101565b505050565b5f6108ae905090565b610b2d611747565b8181600f9182610b3e929190612746565b505050565b5f601154905090565b5f610b56826115a0565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba257610ba1638f4eb60460e01b611458565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b610bf9611747565b610c025f611980565b565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610c3b906124a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c67906124a7565b8015610cb25780601f10610c8957610100808354040283529160200191610cb2565b820191905f5260205f20905b815481529060010190602001808311610c9557829003601f168201915b5050505050905090565b5f8060115403610cf0575f610cd033611a43565b67ffffffffffffffff1603610ce85760019050610d15565b5f9050610d15565b610cf8611a8d565b600c54600b54610d089190612504565b610d129190612813565b90505b90565b5f8114158015610d2f5750610d2b610cbc565b8111155b610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590612890565b60405180910390fd5b6001811480610da75750600d60115481548110610d8e57610d8d6128ae565b5b905f5260205f20015481601054610da59190612504565b105b610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90612925565b60405180910390fd5b5f610df082611206565b905080341015610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c9061298d565b60405180910390fd5b610e3f3383611822565b610e4881611acb565b81601054610e569190612504565b6010819055505f60115403610e7157610e70336001611b26565b5b5f6011819055505f600190505b6005811015610ef857600d600182610e969190612813565b81548110610ea757610ea66128ae565b5b905f5260205f200154601054118015610ede5750600d8181548110610ecf57610ece6128ae565b5b905f5260205f20015460105411155b15610eeb57806011819055505b8080600101915050610e7e565b505050565b8060075f610f096116d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610fb26116d2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ff79190611f16565b60405180910390a35050565b61100b611747565b5f471161104d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611044906129f5565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161107290612a40565b5f6040518083038185875af1925050503d805f81146110ac576040519150601f19603f3d011682016040523d82523d5f602084013e6110b1565b606091505b50509050806110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612a9e565b60405180910390fd5b50565b5f600c54905090565b61110c8484846107fc565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461114c5761113684848484611bd6565b61114b5761114a63d1a57ed660e01b611458565b5b5b50505050565b5f8060115414801561117557505f61116983611a43565b67ffffffffffffffff16145b61117f575f611182565b60015b60ff169050919050565b6060611197826113b5565b6111ac576111ab63a14c4b5060e01b611458565b5b5f6111b5611d00565b90505f8151036111d35760405180602001604052805f8152506111fe565b806111dd84611d90565b6040516020016111ee929190612af6565b6040516020818303038152906040525b915050919050565b5f80820361121b5764019dc792ac905061129e565b5f6011540361125f5760018214801561124557505f61123933611a43565b67ffffffffffffffff16145b15611252575f905061129e565b64019dc792ac905061129e565b600e60115481548110611275576112746128ae565b5b905f5260205f200154611286611ddf565b836112919190612813565b61129b9190612b19565b90505b919050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611339611747565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113a9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113a0919061205c565b60405180910390fd5b6113b281611980565b50565b5f816113bf61158a565b11611452576113cc611592565b8211156113f4576113ed60045f8481526020019081526020015f2054611e0d565b9050611453565b5f54821015611451575f5b5f60045f8581526020019081526020015f20549150810361142b578261142490612b5a565b92506113ff565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b5f61146a83610b4c565b90508180156114ac57508073ffffffffffffffffffffffffffffffffffffffff166114936116d2565b73ffffffffffffffffffffffffffffffffffffffff1614155b156114d8576114c2816114bd6116d2565b6112a3565b6114d7576114d663cfb3b94260e01b611458565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f6001905090565b5f61159b610b1c565b905090565b5f816115aa61158a565b116116995760045f8381526020019081526020015f205490506115cb611592565b8211156115f0576115db81611e0d565b6116aa576115ef63df2d9b4260e01b611458565b5b5f8103611671575f5482106116105761160f63df2d9b4260e01b611458565b5b5b60045f836001900393508381526020019081526020015f205490505f81031561166c575f7c0100000000000000000000000000000000000000000000000000000000821603156116aa5761166b63df2d9b4260e01b611458565b5b611611565b5f7c0100000000000000000000000000000000000000000000000000000000821603156116aa575b6116a963df2d9b4260e01b611458565b5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f33905090565b5f8382148383141790509392505050565b50505050565b5f8060e883901c905060e8611706868684611e4d565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b61174f611e55565b73ffffffffffffffffffffffffffffffffffffffff1661176d610c04565b73ffffffffffffffffffffffffffffffffffffffff16146117cc57611790611e55565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016117c3919061205c565b60405180910390fd5b565b5f67ffffffffffffffff604060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c169050919050565b5f805490505f820361183f5761183e63b562e8dd60e01b611458565b5b61184b5f8483856116ea565b6118698361185a5f865f6116f0565b61186385611e5c565b17611717565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f8373ffffffffffffffffffffffffffffffffffffffff1690505f810361190457611903632e07630060e01b611458565b5b5f83830190505f839050611916611592565b600183031115611931576119306381647e3a60e01b611458565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a481816001019150810361193257815f8190555050505061197b5f848385611741565b505050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60c060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c9050919050565b5f80611a9833611a43565b67ffffffffffffffff1614611aae576001611ab0565b5f5b60ff16611abc336117ce565b611ac69190612813565b905090565b80341115611b23573373ffffffffffffffffffffffffffffffffffffffff166108fc8234611af99190612813565b90811502906040515f60405180830381858888f19350505050158015611b21573d5f803e3d5ffd5b505b50565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f82905060c081901b77ffffffffffffffffffffffffffffffffffffffffffffffff83161791508160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611bfb6116d2565b8786866040518563ffffffff1660e01b8152600401611c1d9493929190612bd3565b6020604051808303815f875af1925050508015611c5857506040513d601f19601f82011682018060405250810190611c559190612c31565b60015b611cad573d805f8114611c86576040519150601f19603f3d011682016040523d82523d5f602084013e611c8b565b606091505b505f815103611ca557611ca463d1a57ed660e01b611458565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600f8054611d0f906124a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3b906124a7565b8015611d865780601f10611d5d57610100808354040283529160200191611d86565b820191905f5260205f20905b815481529060010190602001808311611d6957829003601f168201915b5050505050905090565b606060a060405101806040526020810391505f825281835b600115611dca57600184039350600a81066030018453600a8104905080611da8575b50828103602084039350808452505050919050565b5f8060115414158015611df857505f611df6611a8d565b145b611e02575f611e05565b60015b60ff16905090565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f9392505050565b5f33905090565b5f6001821460e11b9050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611eb081611e7c565b8114611eba575f80fd5b50565b5f81359050611ecb81611ea7565b92915050565b5f60208284031215611ee657611ee5611e74565b5b5f611ef384828501611ebd565b91505092915050565b5f8115159050919050565b611f1081611efc565b82525050565b5f602082019050611f295f830184611f07565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f7182611f2f565b611f7b8185611f39565b9350611f8b818560208601611f49565b611f9481611f57565b840191505092915050565b5f6020820190508181035f830152611fb78184611f67565b905092915050565b5f819050919050565b611fd181611fbf565b8114611fdb575f80fd5b50565b5f81359050611fec81611fc8565b92915050565b5f6020828403121561200757612006611e74565b5b5f61201484828501611fde565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120468261201d565b9050919050565b6120568161203c565b82525050565b5f60208201905061206f5f83018461204d565b92915050565b61207e8161203c565b8114612088575f80fd5b50565b5f8135905061209981612075565b92915050565b5f80604083850312156120b5576120b4611e74565b5b5f6120c28582860161208b565b92505060206120d385828601611fde565b9150509250929050565b6120e681611fbf565b82525050565b5f6020820190506120ff5f8301846120dd565b92915050565b5f805f6060848603121561211c5761211b611e74565b5b5f6121298682870161208b565b935050602061213a8682870161208b565b925050604061214b86828701611fde565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261217657612175612155565b5b8235905067ffffffffffffffff81111561219357612192612159565b5b6020830191508360018202830111156121af576121ae61215d565b5b9250929050565b5f80602083850312156121cc576121cb611e74565b5b5f83013567ffffffffffffffff8111156121e9576121e8611e78565b5b6121f585828601612161565b92509250509250929050565b5f6020828403121561221657612215611e74565b5b5f6122238482850161208b565b91505092915050565b61223581611efc565b811461223f575f80fd5b50565b5f813590506122508161222c565b92915050565b5f806040838503121561226c5761226b611e74565b5b5f6122798582860161208b565b925050602061228a85828601612242565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122ce82611f57565b810181811067ffffffffffffffff821117156122ed576122ec612298565b5b80604052505050565b5f6122ff611e6b565b905061230b82826122c5565b919050565b5f67ffffffffffffffff82111561232a57612329612298565b5b61233382611f57565b9050602081019050919050565b828183375f83830152505050565b5f61236061235b84612310565b6122f6565b90508281526020810184848401111561237c5761237b612294565b5b612387848285612340565b509392505050565b5f82601f8301126123a3576123a2612155565b5b81356123b384826020860161234e565b91505092915050565b5f805f80608085870312156123d4576123d3611e74565b5b5f6123e18782880161208b565b94505060206123f28782880161208b565b935050604061240387828801611fde565b925050606085013567ffffffffffffffff81111561242457612423611e78565b5b6124308782880161238f565b91505092959194509250565b5f806040838503121561245257612451611e74565b5b5f61245f8582860161208b565b92505060206124708582860161208b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124be57607f821691505b6020821081036124d1576124d061247a565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61250e82611fbf565b915061251983611fbf565b9250828201905080821115612531576125306124d7565b5b92915050565b7f444d4600000000000000000000000000000000000000000000000000000000005f82015250565b5f61256b600383611f39565b915061257682612537565b602082019050919050565b5f6020820190508181035f8301526125988161255f565b9050919050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026126057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826125ca565b61260f86836125ca565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61264a61264561264084611fbf565b612627565b611fbf565b9050919050565b5f819050919050565b61266383612630565b61267761266f82612651565b8484546125d6565b825550505050565b5f90565b61268b61267f565b61269681848461265a565b505050565b5b818110156126b9576126ae5f82612683565b60018101905061269c565b5050565b601f8211156126fe576126cf816125a9565b6126d8846125bb565b810160208510156126e7578190505b6126fb6126f3856125bb565b83018261269b565b50505b505050565b5f82821c905092915050565b5f61271e5f1984600802612703565b1980831691505092915050565b5f612736838361270f565b9150826002028217905092915050565b612750838361259f565b67ffffffffffffffff81111561276957612768612298565b5b61277382546124a7565b61277e8282856126bd565b5f601f8311600181146127ab575f8415612799578287013590505b6127a3858261272b565b86555061280a565b601f1984166127b9866125a9565b5f5b828110156127e0578489013582556001820191506020850194506020810190506127bb565b868310156127fd57848901356127f9601f89168261270f565b8355505b6001600288020188555050505b50505050505050565b5f61281d82611fbf565b915061282883611fbf565b92508282039050818111156128405761283f6124d7565b5b92915050565b7f51000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61287a600183611f39565b915061288582612846565b602082019050919050565b5f6020820190508181035f8301526128a78161286e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f53510000000000000000000000000000000000000000000000000000000000005f82015250565b5f61290f600283611f39565b915061291a826128db565b602082019050919050565b5f6020820190508181035f83015261293c81612903565b9050919050565b7f50000000000000000000000000000000000000000000000000000000000000005f82015250565b5f612977600183611f39565b915061298282612943565b602082019050919050565b5f6020820190508181035f8301526129a48161296b565b9050919050565b7f57000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6129df600183611f39565b91506129ea826129ab565b602082019050919050565b5f6020820190508181035f830152612a0c816129d3565b9050919050565b5f81905092915050565b50565b5f612a2b5f83612a13565b9150612a3682612a1d565b5f82019050919050565b5f612a4a82612a20565b9150819050919050565b7f57460000000000000000000000000000000000000000000000000000000000005f82015250565b5f612a88600283611f39565b9150612a9382612a54565b602082019050919050565b5f6020820190508181035f830152612ab581612a7c565b9050919050565b5f81905092915050565b5f612ad082611f2f565b612ada8185612abc565b9350612aea818560208601611f49565b80840191505092915050565b5f612b018285612ac6565b9150612b0d8284612ac6565b91508190509392505050565b5f612b2382611fbf565b9150612b2e83611fbf565b9250828202612b3c81611fbf565b91508282048414831517612b5357612b526124d7565b5b5092915050565b5f612b6482611fbf565b91505f8203612b7657612b756124d7565b5b600182039050919050565b5f81519050919050565b5f82825260208201905092915050565b5f612ba582612b81565b612baf8185612b8b565b9350612bbf818560208601611f49565b612bc881611f57565b840191505092915050565b5f608082019050612be65f83018761204d565b612bf3602083018661204d565b612c0060408301856120dd565b8181036060830152612c128184612b9b565b905095945050505050565b5f81519050612c2b81611ea7565b92915050565b5f60208284031215612c4657612c45611e74565b5b5f612c5384828501612c1d565b9150509291505056fea26469706673582212202a7f18a87390dc5aca01527c44bb54107314a0f79da33def2b81ad6134d5462964736f6c634300081a0033000000000000000000000000701ca3dea4c1174a724f9fbcedca59104f41bc15