[ { "inputs": [ { "internalType": "uint256", "name": "_supply", "type": "uint256" }, { "internalType": "address", "name": "_royaltiesRecipient", "type": "address" }, { "internalType": "address", "name": "_governor", "type": "address" }, { "internalType": "address", "name": "_pointsOperator", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [], "name": "RagdollRonin__MaxRoninSupplyReached", "type": "error" }, { "inputs": [], "name": "RagdollRonin__OnlyAccessory", "type": "error" }, { "inputs": [], "name": "RagdollRonin__OnlyRonin", "type": "error" }, { "inputs": [], "name": "RagdollRonin__RoninNotFullyMintedYet", "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": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "CONTROLLER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RONIN_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } ], "name": "burnAccessory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burnAccessory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burnRonin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } ], "name": "burnRonin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collectionMetadataNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "emitBatchMetadataUpdated", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "emitMetadataUpdated", "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getType", "outputs": [ { "internalType": "enum RagdollRonin.Type", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "metadataNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintAccessory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintRonin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "bool", "name": "_appendMetadataNonce", "type": "bool" } ], "name": "setAppendMetadataNonce", "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": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltiesRecipient", "type": "address" }, { "internalType": "uint96", "name": "_royaltiesBPS", "type": "uint96" } ], "name": "setRoyalties", "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": "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": "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" } ]
60c060405234801561001057600080fd5b5060405161346838038061346883398101604081905261002f91610329565b6040518060400160405280600d81526020016c2930b3b237b636102937b734b760991b81525060405180604001604052806006815260200165292937b734b760d11b81525081600090816100839190610417565b5060016100908282610417565b50505046630a0c71fd146100b857732536fe9ab3f511540f2f9e2ec2a805005c3dd8006100ce565b732fc95838c71e76ec69ff817983bff17c710f34e05b6001600160a01b031660805260a08490526100ea600033610112565b506100f7836101d66101c2565b6101008261026a565b610109816102db565b505050506104d6565b6000828152600c602090815260408083206001600160a01b038516845290915281205460ff166101b8576000838152600c602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101703390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101bc565b5060005b92915050565b6127106001600160601b03821681101561020657604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044015b60405180910390fd5b6001600160a01b03831661023057604051635b6cc80560e11b8152600060048201526024016101fd565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b604051631d70c8d360e31b81526001600160a01b03821660048201527343000000000000000000000000000000000000029063eb864698906024015b600060405180830381600087803b1580156102c057600080fd5b505af11580156102d4573d6000803e3d6000fd5b5050505050565b6080516040516336b91f2b60e01b81526001600160a01b038381166004830152909116906336b91f2b906024016102a6565b80516001600160a01b038116811461032457600080fd5b919050565b6000806000806080858703121561033f57600080fd5b8451935061034f6020860161030d565b925061035d6040860161030d565b915061036b6060860161030d565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806103a057607f821691505b6020821081036103c057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610412576000816000526020600020601f850160051c810160208610156103ef5750805b601f850160051c820191505b8181101561040e578281556001016103fb565b5050505b505050565b81516001600160401b0381111561043057610430610376565b6104448161043e845461038c565b846103c6565b602080601f83116001811461047957600084156104615750858301515b600019600386901b1c1916600185901b17855561040e565b600085815260208120601f198616915b828110156104a857888601518255948401946001909101908401610489565b50858210156104c65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051612f5b61050d6000396000818161044101528181610b4e01528181611b5b0152611bdd015260005050612f5b6000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80634f6ccce71161017b578063a217fddf116100d8578063ca03f9071161008c578063e985e9c511610071578063e985e9c514610654578063ebb2912b1461069d578063ef77aa97146106b057600080fd5b8063ca03f9071461062e578063d547741f1461064157600080fd5b8063b88d4fde116100bd578063b88d4fde146105f5578063c21b471b14610608578063c87b56dd1461061b57600080fd5b8063a217fddf146105da578063a22cb465146105e257600080fd5b806370a082311161012f5780638f166299116101145780638f1662991461057957806391d148541461058c57806395d89b41146105d257600080fd5b806370a08231146105535780638cd5c3641461056657600080fd5b806355f804b31161016057806355f804b31461051a578063575dfede1461052d5780636352211e1461054057600080fd5b80634f6ccce7146104f457806355f6d4751461050757600080fd5b80632a55205a1161022957806336568abe116101dd5780634036ab78116101c25780634036ab78146104b857806342842e0e146104d85780634f02c420146104eb57600080fd5b806336568abe1461049c5780633f0495e4146104af57600080fd5b80632f2ff15d1161020e5780632f2ff15d146104635780632f745c59146104765780633573e2ed1461048957600080fd5b80632a55205a146103fd5780632cd325391461043c57600080fd5b8063095ea7b311610280578063206b01d111610265578063206b01d1146103b457806323b872dd146103c7578063248a9ca3146103da57600080fd5b8063095ea7b31461039757806318160ddd146103ac57600080fd5b806306fdde03116102b157806306fdde0314610323578063081812fc14610338578063092c5b3b1461037057600080fd5b806301ffc9a7146102cd578063023e2b71146102f5575b600080fd5b6102e06102db3660046125d6565b6106c3565b60405190151581526020015b60405180910390f35b6103156103033660046125f3565b60106020526000908152604090205481565b6040519081526020016102ec565b61032b6106f2565b6040516102ec919061267a565b61034b6103463660046125f3565b610784565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b6103157f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c57022335781565b6103aa6103a53660046126b1565b6107ba565b005b600854610315565b6103aa6103c23660046125f3565b6107c9565b6103aa6103d53660046126db565b610805565b6103156103e83660046125f3565b6000908152600c602052604090206001015490565b61041061040b366004612717565b6108fb565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016102ec565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6103aa610471366004612739565b6109f2565b6103156104843660046126b1565b610a17565b6103aa610497366004612775565b610aaf565b6103aa6104aa366004612739565b610aec565b61031560115481565b6104cb6104c63660046125f3565b610b4a565b6040516102ec91906127bf565b6103aa6104e63660046126db565b610b83565b610315600d5481565b6103156105023660046125f3565b610b9e565b6103aa610515366004612800565b610c10565b6103aa610528366004612938565b610c8f565b6103aa61053b366004612800565b610cf0565b61034b61054e3660046125f3565b610d63565b610315610561366004612981565b610d6e565b6103aa6105743660046125f3565b610de9565b6103aa6105873660046125f3565b610e7a565b6102e061059a366004612739565b6000918252600c6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61032b610ead565b610315600081565b6103aa6105f036600461299c565b610ebc565b6103aa6106033660046129c6565b610ec7565b6103aa610616366004612a42565b610ede565b61032b6106293660046125f3565b610ef3565b6103aa61063c3660046126b1565b610fba565b6103aa61064f366004612739565b611001565b6102e0610662366004612a8a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103aa6106ab366004612717565b611026565b6103aa6106be3660046126b1565b6110e0565b60006106ce82611127565b806106dd57506106dd8261117d565b806106ec57506106ec826111cf565b92915050565b60606000805461070190612ab4565b80601f016020809104026020016040519081016040528092919081815260200182805461072d90612ab4565b801561077a5780601f1061074f5761010080835404028352916020019161077a565b820191906000526020600020905b81548152906001019060200180831161075d57829003601f168201915b5050505050905090565b600061078f82611225565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166106ec565b6107c5828233611284565b5050565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c5702233576107f381611291565b6107fc8261129e565b6107c5826112f1565b73ffffffffffffffffffffffffffffffffffffffff821661085a576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610867838333611352565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610851565b50505050565b6000828152600b6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169282019290925282916109b6575060408051808201909152600a5473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b6020810151600090612710906109da906bffffffffffffffffffffffff1687612b36565b6109e49190612b4d565b915196919550909350505050565b6000828152600c6020526040902060010154610a0d81611291565b6108f58383611475565b6000610a2283610d6e565b8210610a79576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610851565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b6000610aba81611291565b50600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b73ffffffffffffffffffffffffffffffffffffffff81163314610b3b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b458282611575565b505050565b60007f0000000000000000000000000000000000000000000000000000000000000000821115610b7b5760016106ec565b600092915050565b610b4583838360405180602001604052806000815250610ec7565b6000610ba960085490565b8210610beb576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101839052604401610851565b60088281548110610bfe57610bfe612b88565b90600052602060002001549050919050565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357610c3a81611291565b60005b828110156108f557610c66848483818110610c5a57610c5a612b88565b9050602002013561129e565b610c87848483818110610c7b57610c7b612b88565b905060200201356112f1565b600101610c3d565b6000610c9a81611291565b600e610ca68382612c07565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c6001610cd360085490565b604080519283526020830191909152015b60405180910390a15050565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357610d1a81611291565b60005b828110156108f557610d46848483818110610d3a57610d3a612b88565b90506020020135611634565b610d5b848483818110610c7b57610c7b612b88565b600101610d1d565b60006106ec82611225565b600073ffffffffffffffffffffffffffffffffffffffff8216610dc0576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610851565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357610e1381611291565b601160008154610e2290612d21565b909155506000828152601060205260408120805460019290610e45908490612d59565b90915550506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001610ce4565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357610ea481611291565b6107fc82611634565b60606001805461070190612ab4565b6107c5338383611687565b610ed2848484610805565b6108f584848484611784565b6000610ee981611291565b610b45838361197b565b6060610efe82611225565b506000610f09611a8a565b600f5490915060ff1615610f81576000815111610f355760405180602001604052806000815250610f7a565b600e610f4084611a99565b600085815260106020526040902054610f5890611a99565b604051602001610f6a93929190612d6c565b6040516020818303038152906040525b9392505050565b6000815111610f9f5760405180602001604052806000815250610f7a565b80610fa984611a99565b604051602001610f6a929190612e4e565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c570223357610fe481611291565b60005b828110156108f557610ff884611b57565b50600101610fe7565b6000828152600c602052604090206001015461101c81611291565b6108f58383611575565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c57022335761105081611291565b60116000815461105f90612d21565b90915550825b8281116110a157600081815260106020526040812080546001929061108b908490612d59565b9091555061109a905081612d21565b9050611065565b5060408051848152602081018490527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a1505050565b7f7b765e0e932d348852a6f810bfa1ab891e259123f02db8cdcde614c57022335761110a81611291565b60005b828110156108f55761111e84611bd9565b5060010161110d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d630000000000000000000000000000000000000000000000000000000014806106ec57506106ec82611c37565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106ec57506106ec825b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806106ec57506106ec82611127565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806106ec576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610851565b610b458383836001611d1a565b61129b8133611ee5565b50565b60006112a982610b4a565b60018111156112ba576112ba612790565b1461129b576040517f07c7a0cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113006000836000611352565b905073ffffffffffffffffffffffffffffffffffffffff81166107c5576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610851565b600080611360858585611f6d565b905073ffffffffffffffffffffffffffffffffffffffff81166113ca576113c584600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611407565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114075761140781856120ea565b73ffffffffffffffffffffffffffffffffffffffff85166114305761142b84612195565b61146d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461146d5761146d8585612244565b949350505050565b6000828152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661156d576000838152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561150b3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016106ec565b5060006106ec565b6000828152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561156d576000838152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016106ec565b600161163f82610b4a565b600181111561165057611650612790565b1461129b576040517f51c368c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116ec576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610851565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b156108f5576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906117f9903390889087908790600401612e7d565b6020604051808303816000875af1925050508015611852575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261184f91810190612ec6565b60015b6118e1573d808015611880576040519150601f19603f3d011682016040523d82523d6000602084013e611885565b606091505b5080516000036118d9576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610851565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611974576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610851565b5050505050565b6127106bffffffffffffffffffffffff82168110156119dd576040517f6f483d090000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff8316600482015260248101829052604401610851565b73ffffffffffffffffffffffffffffffffffffffff8316611a2d576040517fb6d9900a00000000000000000000000000000000000000000000000000000000815260006004820152602401610851565b506040805180820190915273ffffffffffffffffffffffffffffffffffffffff9092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217600a55565b6060600e805461070190612ab4565b60606000611aa6836122a1565b600101905060008167ffffffffffffffff811115611ac657611ac6612875565b6040519080825280601f01601f191660200182016040528015611af0576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611afa57509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000600d5410611bb4576040517fd7f2e7a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d60008154611bc390612d21565b91829055509050611bd48282612383565b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000600d541015611bb4576040517ff34f105800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611cca57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106ec57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106ec565b8080611d3b575073ffffffffffffffffffffffffffffffffffffffff821615155b15611e90576000611d4b84611225565b905073ffffffffffffffffffffffffffffffffffffffff831615801590611d9e57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ddd575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15611e2c576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610851565b8115611e8e57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000828152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166107c5576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610851565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615611fa757611fa7818486612434565b73ffffffffffffffffffffffffffffffffffffffff81161561201d57611fd1600085600080611d1a565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8516156120665773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60006120f583610d6e565b6000838152600760205260409020549091508082146121555773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906121a790600190612ee3565b600083815260096020526040812054600880549394509092849081106121cf576121cf612b88565b9060005260206000200154905080600883815481106121f0576121f0612b88565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061222857612228612ef6565b6001900381819060005260206000200160009055905550505050565b6000600161225184610d6e565b61225b9190612ee3565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106122ea577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612316576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061233457662386f26fc10000830492506010015b6305f5e100831061234c576305f5e100830492506008015b612710831061236057612710830492506004015b60648310612372576064830492506002015b600a83106106ec5760010192915050565b73ffffffffffffffffffffffffffffffffffffffff82166123d3576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610851565b60006123e183836000611352565b905073ffffffffffffffffffffffffffffffffffffffff811615610b45576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610851565b61243f8383836124e4565b610b455773ffffffffffffffffffffffffffffffffffffffff8316612493576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610851565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610851565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061146d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612572575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b8061146d57505060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461129b57600080fd5b6000602082840312156125e857600080fd5b8135610f7a816125a8565b60006020828403121561260557600080fd5b5035919050565b60005b8381101561262757818101518382015260200161260f565b50506000910152565b6000815180845261264881602086016020860161260c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610f7a6020830184612630565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bd457600080fd5b600080604083850312156126c457600080fd5b6126cd8361268d565b946020939093013593505050565b6000806000606084860312156126f057600080fd5b6126f98461268d565b92506127076020850161268d565b9150604084013590509250925092565b6000806040838503121561272a57600080fd5b50508035926020909101359150565b6000806040838503121561274c57600080fd5b8235915061275c6020840161268d565b90509250929050565b80358015158114611bd457600080fd5b60006020828403121561278757600080fd5b610f7a82612765565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600283106127fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806020838503121561281357600080fd5b823567ffffffffffffffff8082111561282b57600080fd5b818501915085601f83011261283f57600080fd5b81358181111561284e57600080fd5b8660208260051b850101111561286357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156128bf576128bf612875565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561290557612905612875565b8160405280935085815286868601111561291e57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561294a57600080fd5b813567ffffffffffffffff81111561296157600080fd5b8201601f8101841361297257600080fd5b61146d848235602084016128a4565b60006020828403121561299357600080fd5b610f7a8261268d565b600080604083850312156129af57600080fd5b6129b88361268d565b915061275c60208401612765565b600080600080608085870312156129dc57600080fd5b6129e58561268d565b93506129f36020860161268d565b925060408501359150606085013567ffffffffffffffff811115612a1657600080fd5b8501601f81018713612a2757600080fd5b612a36878235602084016128a4565b91505092959194509250565b60008060408385031215612a5557600080fd5b612a5e8361268d565b915060208301356bffffffffffffffffffffffff81168114612a7f57600080fd5b809150509250929050565b60008060408385031215612a9d57600080fd5b612aa68361268d565b915061275c6020840161268d565b600181811c90821680612ac857607f821691505b602082108103612b01577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106ec576106ec612b07565b600082612b83577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f821115610b45576000816000526020600020601f850160051c81016020861015612be05750805b601f850160051c820191505b81811015612bff57828155600101612bec565b505050505050565b815167ffffffffffffffff811115612c2157612c21612875565b612c3581612c2f8454612ab4565b84612bb7565b602080601f831160018114612c885760008415612c525750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612bff565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612cd557888601518255948401946001909101908401612cb6565b5085821015612d1157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d5257612d52612b07565b5060010190565b808201808211156106ec576106ec612b07565b6000808554612d7a81612ab4565b60018281168015612d925760018114612dc557612df4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612df4565b8960005260208060002060005b85811015612deb5781548a820152908401908201612dd2565b50505082870194505b505050508451612e0881836020890161260c565b7f3f6e6f6e63653d0000000000000000000000000000000000000000000000000091019081528351612e4181600784016020880161260c565b0160070195945050505050565b60008351612e6081846020880161260c565b835190830190612e7481836020880161260c565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612ebc6080830184612630565b9695505050505050565b600060208284031215612ed857600080fd5b8151610f7a816125a8565b818103818111156106ec576106ec612b07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212203d3c8fb8ba0069f77fd234b93bfd48e09f33147be03357e6002b9bd4f3b66db264736f6c634300081900330000000000000000000000000000000000000000000000000000000000002710000000000000000000000000029eb39959bb3414f96a267bafc582ca9c0b7f07000000000000000000000000f83d5b1c7139539df15d4fa150abd1cfdd040b8b000000000000000000000000f83d5b1c7139539df15d4fa150abd1cfdd040b8b