[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "MissingOverride", "type": "error" }, { "inputs": [], "name": "PluginConditionNotMet", "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": false, "internalType": "address", "name": "collection", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sharedOwnership", "type": "address" }, { "indexed": false, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" } ], "name": "Buy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newCreatorFeePercentage", "type": "uint256" } ], "name": "CreatorFeePercentageChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PaymentReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "collection", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sharedOwnership", "type": "address" }, { "indexed": false, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" } ], "name": "Sell", "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": [], "name": "MINT_PLUGIN_MODIFIER_INDEX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IPlugin", "name": "_plugin", "type": "address" }, { "internalType": "uint256", "name": "pluginStoreIndex", "type": "uint256" } ], "name": "addPlugin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": "baseUriOverride", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "blast", "outputs": [ { "internalType": "contract IBlast", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondingCurveFreeze", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondingCurveSpecs", "outputs": [ { "internalType": "uint256", "name": "factor", "type": "uint256" }, { "internalType": "uint256", "name": "exponent", "type": "uint256" }, { "internalType": "uint256", "name": "c", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondingCurveSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "address", "name": "recipientOfGas", "type": "address" } ], "name": "claimAllGas", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "address", "name": "recipientOfGas", "type": "address" }, { "internalType": "uint256", "name": "gasToClaim", "type": "uint256" }, { "internalType": "uint256", "name": "gasSecondsToConsume", "type": "uint256" } ], "name": "claimGas", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "address", "name": "recipientOfGas", "type": "address" }, { "internalType": "uint256", "name": "minClaimRateBips", "type": "uint256" } ], "name": "claimGasAtMinClaimRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "address", "name": "recipientOfGas", "type": "address" } ], "name": "claimMaxGas", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collectionType", "outputs": [ { "internalType": "enum Shared.CollectionType", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creatorFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeCreatorFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "freezeMetadata", "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": "uint256", "name": "amount_", "type": "uint256" } ], "name": "getBuyPriceExclusiveFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "getBuyPriceInclFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "factor", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "exponent", "type": "uint256" }, { "internalType": "uint256", "name": "c", "type": "uint256" } ], "name": "getIntegral", "outputs": [ { "internalType": "uint256", "name": "integral", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "getSellPriceExclusiveFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "getSellPriceInclFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseUriOverride_", "type": "string" }, { "internalType": "address", "name": "tokenUriContract_", "type": "address" }, { "internalType": "enum Shared.CollectionType", "name": "collectionType_", "type": "uint8" } ], "internalType": "struct Shared.CollectionSpecs", "name": "collectionSpecs_", "type": "tuple" }, { "internalType": "address", "name": "tokenUriFallbackContract_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "factor", "type": "uint256" }, { "internalType": "uint256", "name": "exponent", "type": "uint256" }, { "internalType": "uint256", "name": "c", "type": "uint256" } ], "internalType": "struct Shared.BondingCurveSpecs", "name": "bondingCurveSpecs_", "type": "tuple" }, { "internalType": "address", "name": "sharedOwnership_", "type": "address" }, { "internalType": "address", "name": "creator_", "type": "address" }, { "internalType": "address", "name": "minter_", "type": "address" }, { "internalType": "address", "name": "router_", "type": "address" }, { "internalType": "contract IBlast", "name": "blast_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "metadataFreeze", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "pluginModifierStore", "outputs": [ { "internalType": "contract IPlugin", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "uint256", "name": "pluginStoreIndex", "type": "uint256" } ], "name": "removePlugin", "outputs": [], "stateMutability": "nonpayable", "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": "uint256[]", "name": "tokenIds_", "type": "uint256[]" }, { "internalType": "uint256", "name": "minPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline_", "type": "uint256" } ], "name": "sell", "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": "baseUriOverride_", "type": "string" } ], "name": "setBaseUriOverride", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IBlast", "name": "blast_", "type": "address" } ], "name": "setBlast", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "claimer_", "type": "address" } ], "name": "setClaimer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "creatorFeePercentage_", "type": "uint256" } ], "name": "setCreatorFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenUriContract_", "type": "address" } ], "name": "setTokenUriContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedOwnership", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenUriContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenUriFallbackContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61410280620000f36000396000f3fe6080604052600436106103855760003560e01c806370a08231116101d1578063c3c5658411610102578063d379be23116100a0578063f210ace41161006f578063f210ace414610ac6578063f2fde38b14610ae6578063fafce39e14610b06578063fe889e0e14610b2657600080fd5b8063d379be2314610a29578063d570deff14610a4a578063d6febde814610a6a578063e985e9c514610a7d57600080fd5b8063cdfb5832116100dc578063cdfb5832146109b4578063cf85c2fb146109d4578063d111515d146109f4578063d1e8308b14610a0957600080fd5b8063c3c5658414610953578063c87b56dd14610973578063c8cc51751461099357600080fd5b806397db5b421161016f578063a3624abf11610149578063a3624abf146108dc578063a4cfbe4d146108fc578063b1f63c3814610913578063b88d4fde1461093357600080fd5b806397db5b42146108875780639a4b1aae1461089c578063a22cb465146108bc57600080fd5b8063877989f0116101ab578063877989f0146108145780638da5cb5b14610834578063954fa5ee1461085257806395d89b411461087257600080fd5b806370a08231146107be578063715018a6146107de57806384bfcb62146107f357600080fd5b80632b8a30d2116102b65780634ac5a1e6116102545780635cf4ee91116102235780635cf4ee91146107305780636352211e14610750578063662aa11d146107705780636ed929ae1461079057600080fd5b80634ac5a1e6146106a95780634babc79b146106be5780634f6ccce7146106de57806354fd4d50146106fe57600080fd5b80633d245571116102905780633d2455711461060c5780634077ec301461062c57806342842e0e1461066957806342966c681461068957600080fd5b80632b8a30d2146105c05780632f745c59146105d7578063346a3111146105f757600080fd5b80630af92b8e11610323578063175e1a7d116102fd578063175e1a7d1461054957806318160ddd1461056a578063212671331461057f57806323b872dd146105a057600080fd5b80630af92b8e146104e95780630dd16fd51461050957806312aaffa21461052957600080fd5b8063081812fc1161035f578063081812fc146104595780630951888f14610479578063095ea7b3146104a757806309bb31f1146104c957600080fd5b806301ffc9a7146103c957806306fdde03146103fe578063075461721461042057600080fd5b366103c457604080513381523460208201527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770910160405180910390a1005b600080fd5b3480156103d557600080fd5b506103e96103e4366004613388565b610b41565b60405190151581526020015b60405180910390f35b34801561040a57600080fd5b50610413610b52565b6040516103f591906133f5565b34801561042c57600080fd5b5061016654610441906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b34801561046557600080fd5b50610441610474366004613408565b610be4565b34801561048557600080fd5b50610499610494366004613441565b610c0b565b6040519081526020016103f5565b3480156104b357600080fd5b506104c76104c2366004613482565b610cca565b005b3480156104d557600080fd5b506104416104e43660046134ae565b610ddf565b3480156104f557600080fd5b506104c76105043660046134ae565b610e18565b34801561051557600080fd5b506104c7610524366004613408565b610ee4565b34801561053557600080fd5b506104c7610544366004613482565b61101a565b34801561055557600080fd5b5061015f54610441906001600160a01b031681565b34801561057657600080fd5b5060cb54610499565b34801561058b57600080fd5b5061016554610441906001600160a01b031681565b3480156105ac57600080fd5b506104c76105bb366004613441565b611061565b3480156105cc57600080fd5b5061049961016d5481565b3480156105e357600080fd5b506104996105f2366004613482565b611093565b34801561060357600080fd5b50610499600181565b34801561061857600080fd5b5061016e546103e990610100900460ff1681565b34801561063857600080fd5b5061016254610163546101645461064e92919083565b604080519384526020840192909252908201526060016103f5565b34801561067557600080fd5b506104c7610684366004613441565b611129565b34801561069557600080fd5b506104c76106a4366004613408565b611144565b3480156106b557600080fd5b506104c7611175565b3480156106ca57600080fd5b506104996106d9366004613408565b61118f565b3480156106ea57600080fd5b506104996106f9366004613408565b6111aa565b34801561070a57600080fd5b506104136040518060400160405280600681526020016576302e302e3160d01b81525081565b34801561073c57600080fd5b5061049961074b3660046134ae565b61123d565b34801561075c57600080fd5b5061044161076b366004613408565b61128c565b34801561077c57600080fd5b5061049961078b3660046134d0565b6112ec565b34801561079c57600080fd5b5061016e546107b19062010000900460ff1681565b6040516103f59190613541565b3480156107ca57600080fd5b506104996107d936600461354f565b61139b565b3480156107ea57600080fd5b506104c7611421565b3480156107ff57600080fd5b5061016a54610441906001600160a01b031681565b34801561082057600080fd5b5061049961082f36600461356c565b611435565b34801561084057600080fd5b5060fb546001600160a01b0316610441565b34801561085e57600080fd5b5061049961086d3660046134d0565b61147e565b34801561087e57600080fd5b506104136114e7565b34801561089357600080fd5b506104136114f6565b3480156108a857600080fd5b506104c76108b7366004613694565b611585565b3480156108c857600080fd5b506104c76108d73660046136d7565b6115f2565b3480156108e857600080fd5b506104c76108f7366004613770565b6115fd565b34801561090857600080fd5b5061049961016f5481565b34801561091f57600080fd5b5061049961092e366004613408565b61180b565b34801561093f57600080fd5b506104c761094e3660046138c0565b61181d565b34801561095f57600080fd5b5061049961096e366004613408565b611855565b34801561097f57600080fd5b5061041361098e366004613408565b6118d7565b34801561099f57600080fd5b5061016954610441906001600160a01b031681565b3480156109c057600080fd5b506104c76109cf36600461354f565b6119db565b3480156109e057600080fd5b506104c76109ef36600461354f565b611a29565b348015610a0057600080fd5b506104c7611a77565b348015610a1557600080fd5b506104c7610a24366004613940565b611a8f565b348015610a3557600080fd5b5061016054610441906001600160a01b031681565b348015610a5657600080fd5b50610499610a65366004613408565b611cb4565b6104c7610a783660046134ae565b611d2f565b348015610a8957600080fd5b506103e9610a983660046134d0565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610ad257600080fd5b506104c7610ae136600461354f565b611f5f565b348015610af257600080fd5b506104c7610b0136600461354f565b611fde565b348015610b1257600080fd5b50610499610b213660046139f6565b612054565b348015610b3257600080fd5b5061016e546103e99060ff1681565b6000610b4c82612109565b92915050565b606060658054610b6190613a3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90613a3c565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b5050505050905090565b6000610bef8261212e565b506000908152606960205260409020546001600160a01b031690565b610160546000906001600160a01b03163314610c425760405162461bcd60e51b8152600401610c3990613a76565b60405180910390fd5b61015f54604051630951888f60e01b81526001600160a01b03868116600483015285811660248301526044820185905290911690630951888f906064016020604051808303816000875af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc29190613ac5565b949350505050565b6000610cd58261128c565b9050806001600160a01b0316836001600160a01b031603610d425760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c39565b336001600160a01b0382161480610d5e5750610d5e8133610a98565b610dd05760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c39565b610dda838361218d565b505050565b6101616020528160005260406000208181548110610dfc57600080fd5b6000918252602090912001546001600160a01b03169150829050565b610e206121fb565b60008181526101616020526040902080548190610e3f90600190613af4565b81548110610e4f57610e4f613b07565b9060005260206000200160009054906101000a90046001600160a01b0316818481548110610e7f57610e7f613b07565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080805480610ebd57610ebd613b1d565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b610eec6121fb565b678ac7230489e80000811115610f625760405162461bcd60e51b815260206004820152603560248201527f436f6c6c656374696f6e496d706c3a2063726561746f72206665652070657263604482015274656e74616765206d757374206265203c3d2031302560581b6064820152608401610c39565b61016e54610100900460ff1615610fde5761016f54811115610fde5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6c656374696f6e496d706c3a2063726561746f72206665652063616e2060448201526e1bdb9b1e481899481b1bddd95c9959608a1b6064820152608401610c39565b61016f8190556040518181527fd6df3a3a25b6e5e3b73e2423ea8f25c123fa5a25323c0710b1cf5a53d49899999060200160405180910390a150565b6110226121fb565b6000908152610161602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0392909216919091179055565b61106c335b82612255565b6110885760405162461bcd60e51b8152600401610c3990613b33565b610dda8383836122d3565b600061109e8361139b565b82106111005760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c39565b506001600160a01b0391909116600090815260c960209081526040808320938352929052205490565b610dda8383836040518060200160405280600081525061181d565b61114d33611066565b6111695760405162461bcd60e51b8152600401610c3990613b33565b61117281612444565b50565b61117d6121fb565b61016e805461ff001916610100179055565b61016d5460009081610cc26111a48584613af4565b8561123d565b60006111b560cb5490565b82106112185760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c39565b60cb828154811061122b5761122b613b07565b90600052602060002001549050919050565b61016254610163546101645460009291908361125b84888585611435565b905060006112748561126d898b613b80565b8686611435565b90506112808282613af4565b98975050505050505050565b6000818152606760205260408120546001600160a01b031680610b4c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c39565b610160546000906001600160a01b0316331461131a5760405162461bcd60e51b8152600401610c3990613a76565b61015f5460405163662aa11d60e01b81526001600160a01b03858116600483015284811660248301529091169063662aa11d906044015b6020604051808303816000875af1158015611370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113949190613ac5565b9392505050565b60006001600160a01b0382166114055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c39565b506001600160a01b031660009081526068602052604090205490565b6114296121fb565b61143360006124e7565b565b600081611443846001613b80565b61144d8587613c77565b6114579088613c83565b6114619190613c9a565b61146b9190613b80565b6114759085613c83565b95945050505050565b610160546000906001600160a01b031633146114ac5760405162461bcd60e51b8152600401610c3990613a76565b61015f54604051634aa7d2f760e11b81526001600160a01b03858116600483015284811660248301529091169063954fa5ee90604401611351565b606060668054610b6190613a3c565b610168805461150490613a3c565b80601f016020809104026020016040519081016040528092919081815260200182805461153090613a3c565b801561157d5780601f106115525761010080835404028352916020019161157d565b820191906000526020600020905b81548152906001019060200180831161156057829003601f168201915b505050505081565b61158d6121fb565b61016e5460ff16156115e15760405162461bcd60e51b815260206004820152601f60248201527f436f6c6c656374696f6e496d706c3a206d6574616461746120667265657a65006044820152606401610c39565b6101686115ee8282613d0a565b5050565b6115ee338383612539565b600054610100900460ff161580801561161d5750600054600160ff909116105b806116375750303b158015611637575060005460ff166001145b61169a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c39565b6000805460ff1916600117905580156116bd576000805461ff0019166101001790555b6116cf89600001518a60200151612607565b6116d7612638565b6116df612638565b6116e761265f565b6116f1823361268e565b6040890151610168906117049082613d0a565b50606089015161016980546001600160a01b03199081166001600160a01b039384161790915561016a805482168b841617905588516101625560208901516101635560408901516101645561016580548216898416179055610166805482168784161790556101678054909116918516919091179055611783856124e7565b608089015161016e805462ff00001916620100008360038111156117a9576117a9613509565b021790555066b1a2bc2ec5000061016f558015611800576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61016d5460009081610cc2828561123d565b6118273383612255565b6118435760405162461bcd60e51b8152600401610c3990613b33565b61184f848484846126e5565b50505050565b61016d5460009081611867828561123d565b90506000670de0b6b3a764000061187c612718565b6118869084613c83565b6118909190613c9a565b90506000670de0b6b3a764000061016f54846118ac9190613c83565b6118b69190613c9a565b9050806118c38385613b80565b6118cd9190613b80565b9695505050505050565b610169546060906001600160a01b031615611973576101695461016e5460405163bfc9f60d60e01b81526001600160a01b039092169163bfc9f60d9161192e91869130916201000090910460ff1690600401613dca565b600060405180830381865afa15801561194b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4c9190810190613ded565b6000610168805461198390613a3c565b9050111561199457610b4c82612728565b61016a5461016e5460405163bfc9f60d60e01b81526001600160a01b039092169163bfc9f60d9161192e91869130916201000090910460ff1690600401613dca565b919050565b610160546001600160a01b03163314611a065760405162461bcd60e51b8152600401610c3990613a76565b61016080546001600160a01b0319166001600160a01b0392909216919091179055565b610160546001600160a01b03163314611a545760405162461bcd60e51b8152600401610c3990613a76565b61015f80546001600160a01b0319166001600160a01b0392909216919091179055565b611a7f6121fb565b61016e805460ff19166001179055565b611a9761278e565b6000835111611ae85760405162461bcd60e51b815260206004820152601f60248201527f426f6e64696e674375727665526f757465723a206e6f20746f6b656e496473006044820152606401610c39565b80421115611b085760405162461bcd60e51b8152600401610c3990613e5b565b825161016d54600090611b2690611b20908490613af4565b8361123d565b90506000611b326127e9565b90506000670de0b6b3a7640000826000015184611b4f9190613c83565b611b599190613c9a565b90506000670de0b6b3a764000061016f5485611b759190613c83565b611b7f9190613c9a565b90508461016d6000828254611b949190613af4565b90915550611ba390508861286e565b8681611baf8487613af4565b611bb99190613af4565b1015611c115760405162461bcd60e51b815260206004820152602160248201527f426f6e64696e674375727665526f757465723a20707269636520746f6f206c6f6044820152607760f81b6064820152608401610c39565b611c1f836020015183612906565b61016554611c36906001600160a01b031682612906565b611c543382611c458588613af4565b611c4f9190613af4565b612906565b610165546040517f2182e4add8250752f872eda9b48eab6b84aa81f99ee69c557acfbf103828083c91611c9c9130916001600160a01b03169033908a908a9089908990613e9e565b60405180910390a15050505050610dda600161012d55565b61016d5460009081611cc96111a48584613af4565b90506000670de0b6b3a7640000611cde612718565b611ce89084613c83565b611cf29190613c9a565b90506000670de0b6b3a764000061016f5484611d0e9190613c83565b611d189190613c9a565b905080611d258385613af4565b6118cd9190613af4565b611d3761278e565b60008211611d965760405162461bcd60e51b815260206004820152602660248201527f426f6e64696e674375727665526f757465723a20616d6f756e74206d7573742060448201526506265203e20360d41b6064820152608401610c39565b80421115611db65760405162461bcd60e51b8152600401610c3990613e5b565b6000611dc561016d548461123d565b90506000611dd16127e9565b90506000670de0b6b3a7640000826000015184611dee9190613c83565b611df89190613c9a565b90506000670de0b6b3a764000061016f5485611e149190613c83565b611e1e9190613c9a565b905080611e2b8386613b80565b611e359190613b80565b341015611e945760405162461bcd60e51b815260206004820152602760248201527f426f6e64696e674375727665526f757465723a206e6f7420656e6f75676820656044820152661d1a081cd95b9d60ca1b6064820152608401610c39565b8561016d6000828254611ea79190613b80565b90915550611eb790503387612a1f565b611ec5836020015183612906565b61016554611edc906001600160a01b031682612906565b611ee63085612906565b611f00338284611ef68834613af4565b611c459190613af4565b610165546040517f4c5de51a00fa52b3d883d5627b5d614583a2f5eec10c63c6efe8a6f1f68b11e391611f489130916001600160a01b03169033908b908a9089908990613e9e565b60405180910390a1505050506115ee600161012d55565b611f676121fb565b61016e5460ff1615611fbb5760405162461bcd60e51b815260206004820152601f60248201527f436f6c6c656374696f6e496d706c3a206d6574616461746120667265657a65006044820152606401610c39565b61016980546001600160a01b0319166001600160a01b0392909216919091179055565b611fe66121fb565b6001600160a01b03811661204b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c39565b611172816124e7565b610160546000906001600160a01b031633146120825760405162461bcd60e51b8152600401610c3990613a76565b61015f54604051637d7e71cf60e11b81526001600160a01b038781166004830152868116602483015260448201869052606482018590529091169063fafce39e906084016020604051808303816000875af11580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114759190613ac5565b60006001600160e01b0319821663780e9d6360e01b1480610b4c5750610b4c82612ad4565b6000818152606760205260409020546001600160a01b03166111725760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c39565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906121c28261128c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60fb546001600160a01b031633146114335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c39565b6000806122618361128c565b9050806001600160a01b0316846001600160a01b031614806122a857506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80610cc25750836001600160a01b03166122c184610be4565b6001600160a01b031614949350505050565b826001600160a01b03166122e68261128c565b6001600160a01b03161461230c5760405162461bcd60e51b8152600401610c3990613edf565b6001600160a01b03821661236e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c39565b61237b8383836001612b24565b826001600160a01b031661238e8261128c565b6001600160a01b0316146123b45760405162461bcd60e51b8152600401610c3990613edf565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061244f8261128c565b905061245f816000846001612b24565b6124688261128c565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361259a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c39565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff1661262e5760405162461bcd60e51b8152600401610c3990613f24565b6115ee8282612b30565b600054610100900460ff166114335760405162461bcd60e51b8152600401610c3990613f24565b600054610100900460ff166126865760405162461bcd60e51b8152600401610c3990613f24565b611433612b70565b600054610100900460ff166126b55760405162461bcd60e51b8152600401610c3990613f24565b61015f80546001600160a01b039384166001600160a01b0319918216179091556101608054929093169116179055565b6126f08484846122d3565b6126fc84848484612ba0565b61184f5760405162461bcd60e51b8152600401610c3990613f6f565b60006127226127e9565b51919050565b60606127338261212e565b600061273d612c9e565b9050600081511161275d5760405180602001604052806000815250611394565b8061276784612cae565b604051602001612778929190613fc1565b6040516020818303038152906040529392505050565b600261012d54036127e15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c39565b600261012d55565b60408051808201909152600080825260208201526101675460408051639b86528560e01b815281516001600160a01b0390931692639b865285926004808401939192918290030181865afa158015612845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128699190613ff0565b905090565b60005b81518110156115ee5761289d3383838151811061289057612890613b07565b6020026020010151612255565b506128c08282815181106128b3576128b3613b07565b6020026020010151612444565b61016c8282815181106128d5576128d5613b07565b60209081029190910181015182546001810184556000938452919092200155806128fe81614046565b915050612871565b804710156129565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610c39565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146129a3576040519150601f19603f3d011682016040523d82523d6000602084013e6129a8565b606091505b5050905080610dda5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610c39565b60005b81811015610dda5761016c5460009015612a9b5761016c8054612a4790600190613af4565b81548110612a5757612a57613b07565b9060005260206000200154905061016c805480612a7657612a76613b1d565b60019003818190600052602060002001600090559055612a968482612d41565b612ac1565b5061016b54612aaa8482612d41565b61016b8054906000612abb83614046565b91905055505b5080612acc81614046565b915050612a22565b60006001600160e01b031982166380ac58cd60e01b1480612b0557506001600160e01b03198216635b5e139f60e01b145b80610b4c57506301ffc9a760e01b6001600160e01b0319831614610b4c565b61184f84848484612e3d565b600054610100900460ff16612b575760405162461bcd60e51b8152600401610c3990613f24565b6065612b638382613d0a565b506066610dda8282613d0a565b600054610100900460ff16612b975760405162461bcd60e51b8152600401610c3990613f24565b611433336124e7565b60006001600160a01b0384163b15612c9657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612be490339089908890889060040161405f565b6020604051808303816000875af1925050508015612c1f575060408051601f3d908101601f19168201909252612c1c91810190614092565b60015b612c7c573d808015612c4d576040519150601f19603f3d011682016040523d82523d6000602084013e612c52565b606091505b508051600003612c745760405162461bcd60e51b8152600401610c3990613f6f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610cc2565b506001610cc2565b60606101688054610b6190613a3c565b60606000612cbb83612f71565b600101905060008167ffffffffffffffff811115612cdb57612cdb61359e565b6040519080825280601f01601f191660200182016040528015612d05576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612d0f57509392505050565b600160008181526101616020527f778e83024cc4581d383ef17cb923b3a0d99b1e644ea7c68eaa25c7108b2d91b3905b8154811015612e3257818181548110612d8c57612d8c613b07565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b031663919840ad6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0d91906140af565b612e2a57604051630ccdc07d60e21b815260040160405180910390fd5b600101612d71565b5061184f8484613049565b6001811115612eac5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c39565b816001600160a01b038516612f0857612f038160cb8054600083815260cc60205260408120829055600182018355919091527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb0155565b612f2b565b836001600160a01b0316856001600160a01b031614612f2b57612f2b85826131e2565b6001600160a01b038416612f4757612f428161327f565b612f6a565b846001600160a01b0316846001600160a01b031614612f6a57612f6a848261332e565b5050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612fb05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612fdc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612ffa57662386f26fc10000830492506010015b6305f5e1008310613012576305f5e100830492506008015b612710831061302657612710830492506004015b60648310613038576064830492506002015b600a8310610b4c5760010192915050565b6001600160a01b03821661309f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c39565b6000818152606760205260409020546001600160a01b0316156131045760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c39565b613112600083836001612b24565b6000818152606760205260409020546001600160a01b0316156131775760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c39565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016131ef8461139b565b6131f99190613af4565b600083815260ca602052604090205490915080821461324c576001600160a01b038416600090815260c960209081526040808320858452825280832054848452818420819055835260ca90915290208190555b50600091825260ca602090815260408084208490556001600160a01b03909416835260c981528383209183525290812055565b60cb5460009061329190600190613af4565b600083815260cc602052604081205460cb80549394509092849081106132b9576132b9613b07565b906000526020600020015490508060cb83815481106132da576132da613b07565b600091825260208083209091019290925582815260cc909152604080822084905585825281205560cb80548061331257613312613b1d565b6001900381819060005260206000200160009055905550505050565b60006133398361139b565b6001600160a01b03909316600090815260c960209081526040808320868452825280832085905593825260ca9052919091209190915550565b6001600160e01b03198116811461117257600080fd5b60006020828403121561339a57600080fd5b813561139481613372565b60005b838110156133c05781810151838201526020016133a8565b50506000910152565b600081518084526133e18160208601602086016133a5565b601f01601f19169290920160200192915050565b60208152600061139460208301846133c9565b60006020828403121561341a57600080fd5b5035919050565b6001600160a01b038116811461117257600080fd5b80356119d681613421565b60008060006060848603121561345657600080fd5b833561346181613421565b9250602084013561347181613421565b929592945050506040919091013590565b6000806040838503121561349557600080fd5b82356134a081613421565b946020939093013593505050565b600080604083850312156134c157600080fd5b50508035926020909101359150565b600080604083850312156134e357600080fd5b82356134ee81613421565b915060208301356134fe81613421565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6004811061353d57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610b4c828461351f565b60006020828403121561356157600080fd5b813561139481613421565b6000806000806080858703121561358257600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156135d7576135d761359e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136065761360661359e565b604052919050565b600067ffffffffffffffff8211156136285761362861359e565b50601f01601f191660200190565b60006136496136448461360e565b6135dd565b905082815283838301111561365d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261368557600080fd5b61139483833560208501613636565b6000602082840312156136a657600080fd5b813567ffffffffffffffff8111156136bd57600080fd5b610cc284828501613674565b801515811461117257600080fd5b600080604083850312156136ea57600080fd5b82356136f581613421565b915060208301356134fe816136c9565b8035600481106119d657600080fd5b60006060828403121561372657600080fd5b6040516060810181811067ffffffffffffffff821117156137495761374961359e565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600080600080600080600080610140898b03121561378d57600080fd5b883567ffffffffffffffff808211156137a557600080fd5b908a019060a0828d0312156137b957600080fd5b6137c16135b4565b8235828111156137d057600080fd5b6137dc8e828601613674565b8252506020830135828111156137f157600080fd5b6137fd8e828601613674565b60208301525060408301358281111561381557600080fd5b6138218e828601613674565b60408301525061383360608401613436565b606082015261384460808401613705565b6080820152995061385a91505060208a01613436565b96506138698a60408b01613714565b955061387760a08a01613436565b945061388560c08a01613436565b935061389360e08a01613436565b92506138a26101008a01613436565b91506138b16101208a01613436565b90509295985092959890939650565b600080600080608085870312156138d657600080fd5b84356138e181613421565b935060208501356138f181613421565b925060408501359150606085013567ffffffffffffffff81111561391457600080fd5b8501601f8101871361392557600080fd5b61393487823560208401613636565b91505092959194509250565b60008060006060848603121561395557600080fd5b833567ffffffffffffffff8082111561396d57600080fd5b818601915086601f83011261398157600080fd5b81356020828211156139955761399561359e565b8160051b92506139a68184016135dd565b828152928401810192818101908a8511156139c057600080fd5b948201945b848610156139de578535825294820194908201906139c5565b9a918901359950506040909701359695505050505050565b60008060008060808587031215613a0c57600080fd5b8435613a1781613421565b93506020850135613a2781613421565b93969395505050506040820135916060013590565b600181811c90821680613a5057607f821691505b602082108103613a7057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f426c617374426173655570677261646561626c653a2063616c6c65722069732060408201526e3737ba103a34329031b630b4b6b2b960891b606082015260800190565b600060208284031215613ad757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4c57610b4c613ade565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b80820180821115610b4c57610b4c613ade565b600181815b80851115613bce578160001904821115613bb457613bb4613ade565b80851615613bc157918102915b93841c9390800290613b98565b509250929050565b600082613be557506001610b4c565b81613bf257506000610b4c565b8160018114613c085760028114613c1257613c2e565b6001915050610b4c565b60ff841115613c2357613c23613ade565b50506001821b610b4c565b5060208310610133831016604e8410600b8410161715613c51575081810a610b4c565b613c5b8383613b93565b8060001904821115613c6f57613c6f613ade565b029392505050565b60006113948383613bd6565b8082028115828204841417610b4c57610b4c613ade565b600082613cb757634e487b7160e01b600052601260045260246000fd5b500490565b601f821115610dda57600081815260208120601f850160051c81016020861015613ce35750805b601f850160051c820191505b81811015613d0257828155600101613cef565b505050505050565b815167ffffffffffffffff811115613d2457613d2461359e565b613d3881613d328454613a3c565b84613cbc565b602080601f831160018114613d6d5760008415613d555750858301515b600019600386901b1c1916600185901b178555613d02565b600085815260208120601f198616915b82811015613d9c57888601518255948401946001909101908401613d7d565b5085821015613dba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8381526001600160a01b038316602082015260608101610cc2604083018461351f565b600060208284031215613dff57600080fd5b815167ffffffffffffffff811115613e1657600080fd5b8201601f81018413613e2757600080fd5b8051613e356136448261360e565b818152856020838501011115613e4a57600080fd5b6114758260208301602086016133a5565b60208082526023908201527f426f6e64696e674375727665526f757465723a20646561646c696e65207061736040820152621cd95960ea1b606082015260800190565b6001600160a01b03978816815295871660208701529390951660408501526060840191909152608083015260a082019290925260c081019190915260e00190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613fd38184602088016133a5565b835190830190613fe78183602088016133a5565b01949350505050565b60006040828403121561400257600080fd5b6040516040810181811067ffffffffffffffff821117156140255761402561359e565b60405282518152602083015161403a81613421565b60208201529392505050565b60006001820161405857614058613ade565b5060010190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906118cd908301846133c9565b6000602082840312156140a457600080fd5b815161139481613372565b6000602082840312156140c157600080fd5b8151611394816136c956fea264697066735822122046e907df7ae7a14ec60e91931762dd67433c4af48a9046003e345438c2c5838f64736f6c63430008130033