[ { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "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": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InitializedYet", "type": "error" }, { "inputs": [], "name": "NullAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "OnlyAuthorized", "type": "error" }, { "inputs": [], "name": "OnlyBurnFullCharge", "type": "error" }, { "inputs": [], "name": "OnlyEpicCanBurn", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "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": "_ids", "type": "uint256[]" } ], "name": "BatchMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "NewOwnershipProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_lootBox", "type": "address" } ], "name": "addLootBox", "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": [ { "components": [ { "internalType": "uint8", "name": "category", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "step", "type": "uint8" }, { "internalType": "uint8", "name": "ctype", "type": "uint8" }, { "internalType": "uint8", "name": "visual", "type": "uint8" }, { "internalType": "uint8", "name": "shiny", "type": "uint8" } ], "internalType": "struct Metadata[]", "name": "_metadatas", "type": "tuple[]" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "batchMint", "outputs": [ { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "burnFromMerge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burnPercentageFee", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "game", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getNFTMetadata", "outputs": [ { "components": [ { "internalType": "uint24", "name": "currentCharge", "type": "uint24" }, { "internalType": "uint24", "name": "maxCharge", "type": "uint24" }, { "components": [ { "internalType": "uint8", "name": "category", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "step", "type": "uint8" }, { "internalType": "uint8", "name": "ctype", "type": "uint8" }, { "internalType": "uint8", "name": "visual", "type": "uint8" }, { "internalType": "uint8", "name": "shiny", "type": "uint8" } ], "internalType": "struct Metadata", "name": "metadata", "type": "tuple" } ], "internalType": "struct NFTMetadata", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } ], "name": "getNFTMetadatas", "outputs": [ { "components": [ { "internalType": "uint24", "name": "currentCharge", "type": "uint24" }, { "internalType": "uint24", "name": "maxCharge", "type": "uint24" }, { "components": [ { "internalType": "uint8", "name": "category", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "step", "type": "uint8" }, { "internalType": "uint8", "name": "ctype", "type": "uint8" }, { "internalType": "uint8", "name": "visual", "type": "uint8" }, { "internalType": "uint8", "name": "shiny", "type": "uint8" } ], "internalType": "struct Metadata", "name": "metadata", "type": "tuple" } ], "internalType": "struct NFTMetadata[]", "name": "data", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_forwarder", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "string", "name": "_contractUri", "type": "string" }, { "internalType": "uint96", "name": "_royaltyFeeInBips", "type": "uint96" }, { "internalType": "address", "name": "_royaltiesWallet", "type": "address" }, { "internalType": "address", "name": "_merger", "type": "address" }, { "internalType": "address", "name": "_kidenToken", "type": "address" }, { "internalType": "address", "name": "_game", "type": "address" }, { "internalType": "address", "name": "_wallet", "type": "address" }, { "internalType": "address", "name": "_owner", "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": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "kidenToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lootBoxes", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "merger", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint8", "name": "category", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "step", "type": "uint8" }, { "internalType": "uint8", "name": "ctype", "type": "uint8" }, { "internalType": "uint8", "name": "visual", "type": "uint8" }, { "internalType": "uint8", "name": "shiny", "type": "uint8" } ], "internalType": "struct Metadata", "name": "_metadata", "type": "tuple" }, { "internalType": "uint24", "name": "_currentCharge", "type": "uint24" }, { "internalType": "uint24", "name": "_maxCharge", "type": "uint24" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint8", "name": "category", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "step", "type": "uint8" }, { "internalType": "uint8", "name": "ctype", "type": "uint8" }, { "internalType": "uint8", "name": "visual", "type": "uint8" }, { "internalType": "uint8", "name": "shiny", "type": "uint8" } ], "internalType": "struct Metadata", "name": "_metadata", "type": "tuple" }, { "internalType": "uint24", "name": "_currentCharge", "type": "uint24" }, { "internalType": "uint24", "name": "_maxCharge", "type": "uint24" }, { "internalType": "uint256", "name": "_price", "type": "uint256" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ownerPendingClaim", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "proposeChangeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_lootBox", "type": "address" } ], "name": "removeLootBox", "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": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltiesWallet", "type": "address" }, { "internalType": "uint96", "name": "_royaltyFeeInBips", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newuri", "type": "string" } ], "name": "setURI", "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" }, { "inputs": [], "name": "trustedForwarder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "_burnPercentageFee", "type": "uint8" } ], "name": "updateBurningFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_merger", "type": "address" }, { "internalType": "address", "name": "_kidenToken", "type": "address" }, { "internalType": "address", "name": "_game", "type": "address" } ], "name": "updateContracts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint24", "name": "_addTokens", "type": "uint24" } ], "name": "updateCurrentCharge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "_index", "type": "uint8" }, { "internalType": "uint16[]", "name": "_values", "type": "uint16[]" } ], "name": "updateMaxCharges", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "walletPayments", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "walletRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523461002257610011610027565b60405161527a610106823961527a90f35b600080fd5b61002f610031565b565b61002f336100ae565b61004b905b6001600160a01b031690565b90565b61004b905461003a565b61004b9061003f906001600160a01b031682565b61004b90610058565b61004b9061006c565b9061008e61004b6100aa92610075565b82546001600160a01b0319166001600160a01b03919091161790565b9055565b6100d46100ce6100be601761004e565b6100c984601761007e565b610075565b91610075565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06100ff60405190565b600090a356fe610280604052600436101561001357600080fd5b60003560e01c806301ffc9a71461032357806302fe53051461031e57806304634d8d1461031957806306fdde0314610314578063081812fc1461030f578063095ea7b31461030a5780630bb3976c14610305578063179b711a1461030057806318160ddd146102fb5780631940b5e7146102f657806319ac3596146102f15780631a325a87146102ec57806323b872dd146102e75780632a55205a146102e25780632f745c59146102dd57806342842e0e146102d857806342966c68146102d35780634483c9e1146102ce5780634e71e0c8146102c95780634f6ccce7146102c4578063550bb59d146102bf578063572b6c05146102ba57806361bc221a146102b55780636352211e146102b05780636be9a6f1146102ab5780636dca4d44146102a657806370a08231146102a157806372d187481461029c5780637da0a8771461029757806386094258146102925780638da5cb5b1461028d57806395d89b41146102885780639e33bbcb14610283578063a1d870661461027e578063a22cb46514610279578063acdb9da014610274578063b88d4fde1461026f578063c0e24d5e1461026a578063c1c3aae014610265578063c3fe3e2814610260578063c87b56dd1461025b578063d2627fdf14610256578063d264c7bc14610251578063deec92671461024c578063e8bf0bfe14610247578063e985e9c514610242578063eac989f81461023d578063f1d50cc4146102385763f501a9360361033b576112d8565b611275565b61124e565b611226565b6111f1565b611192565b6110c4565b611095565b61106e565b611053565b61102c565b611005565b610ec2565b610e57565b610dcf565b610d6f565b610c88565b610c61565b610c46565b610c21565b610be3565b610bbf565b610ba4565b610b8b565b610b3b565b610aa3565b610a6f565b610a29565b610a11565b6109f6565b6109de565b6109c6565b61099a565b610981565b610965565b610936565b6108e0565b61089c565b610871565b6107f9565b6107a2565b61077d565b610688565b610645565b6105ed565b61059f565b610513565b61048a565b61036a565b6001600160e01b031981165b0361033b57565b600080fd5b9050359061034d82610328565b565b9060208282031261033b5761036391610340565b90565b9052565b3461033b5761039861038561038036600461034f565b6112f7565b6040515b91829182901515815260200190565b0390f35b634e487b7160e01b600052604160045260246000fd5b90601f01601f1916810190811067ffffffffffffffff8211176103d457604052565b61039c565b9061034d6103e660405190565b92836103b2565b67ffffffffffffffff81116103d457602090601f01601f19160190565b0190565b90826000939282370152565b9092919261042f61042a826103ed565b6103d9565b938185528183011161033b5761034d91602085019061040e565b9080601f8301121561033b578160206103639335910161041a565b9060208282031261033b57813567ffffffffffffffff811161033b576103639201610449565b3461033b576104a261049d366004610464565b611678565b604051005b6001600160a01b031690565b6001600160a01b038116610334565b9050359061034d826104b3565b6bffffffffffffffffffffffff8116610334565b9050359061034d826104cf565b919060408382031261033b5761036390602061050c82866104c2565b94016104e3565b3461033b576104a26105263660046104f0565b9061169d565b600091031261033b57565b60005b83811061054a5750506000910152565b818101518382015260200161053a565b61057b61058460209361040a9361056f815190565b80835293849260200190565b95869101610537565b601f01601f191690565b60208082526103639291019061055a565b3461033b576105af36600461052c565b6103986105ba6116b0565b6040519182918261058e565b80610334565b9050359061034d826105c6565b9060208282031261033b57610363916105cc565b3461033b576103986106086106033660046105d9565b6116ba565b604051918291826001600160a01b03909116815260200190565b919060408382031261033b5761036390602061063e82866104c2565b94016105cc565b3461033b576104a2610658366004610622565b906116cd565b60ff8116610334565b9050359061034d8261065e565b9060208282031261033b5761036391610667565b3461033b576104a261069b366004610674565b61174d565b91906101608382031261033b576106b781846104c2565b92602081013567ffffffffffffffff811161033b57826106d8918301610449565b92604082013567ffffffffffffffff811161033b57836106f9918401610449565b92606083013567ffffffffffffffff811161033b578161071a918501610449565b9261072882608083016104e3565b926107368360a084016104c2565b926107448160c085016104c2565b926107528260e083016104c2565b926103636107648461010085016104c2565b936101406107768261012087016104c2565b94016104c2565b3461033b576104a26107903660046106a0565b999890989791979692969593956117e2565b3461033b576107b236600461052c565b6103986107be60135490565b6040519182918290815260200190565b610363916008021c6001600160a01b031690565b9061036391546107ce565b610363600060186107e2565b3461033b5761080936600461052c565b6103986106086107ed565b908160c091031261033b5790565b62ffffff8116610334565b9050359061034d82610822565b6101208183031261033b5761084f8282610814565b926103636108608460c0850161082d565b936101006107768260e0870161082d565b3461033b576103986107be61088736600461083a565b92919091611b1d565b610363600060206107e2565b3461033b576108ac36600461052c565b610398610608610890565b909160608284031261033b576103636108d084846104c2565b93604061063e82602087016104c2565b3461033b576104a26108f33660046108b7565b91611b61565b919060408382031261033b5761036390602061063e82866105cc565b6001600160a01b03909116815260408101929161034d9160200152565b0152565b3461033b5761094f6109493660046108f9565b90611cf4565b9061039861095c60405190565b92839283610915565b3461033b576103986107be61097b366004610622565b90611dc1565b3461033b576104a26109943660046108b7565b91611e2d565b3461033b576104a26109ad3660046105d9565b611ef2565b9060208282031261033b57610363916104c2565b3461033b576104a26109d93660046109b2565b6120d2565b3461033b576109ee36600461052c565b6104a2612127565b3461033b576103986107be610a0c3660046105d9565b6121af565b3461033b576104a2610a243660046109b2565b612264565b3461033b57610398610385610a3f3660046109b2565b61226d565b610363916008021c5b65ffffffffffff1690565b906103639154610a44565b61036360146020610a58565b3461033b57610a7f36600461052c565b610398610a8a610a63565b6040519182918265ffffffffffff909116815260200190565b3461033b57610398610608610ab93660046105d9565b612281565b805162ffffff16825261034d9190604090819060208181015162ffffff16908501520151910190805160ff908116835260208083015182169084015260408083015182169084015260608083015182169084015260808083015182169084015260a09182015116910152565b6101008101929161034d9190610abe565b3461033b57610398610b56610b513660046105d9565b612304565b60405191829182610b2a565b909160608284031261033b57610363610b7b84846104c2565b93604061077682602087016104c2565b3461033b576104a2610b9e366004610b62565b9161233c565b3461033b576103986107be610bba3660046109b2565b612347565b3461033b576104a2610bd23660046109b2565b612484565b6103636000601b6107e2565b3461033b57610bf336600461052c565b610398610608610bd7565b919060408382031261033b57610363906020610c1a82866105cc565b940161082d565b3461033b576104a2610c34366004610bfe565b90612530565b610363600060176107e2565b3461033b57610c5636600461052c565b610398610608610c3a565b3461033b57610c7136600461052c565b6103986105ba61253a565b6103636000601c6107e2565b3461033b57610c9836600461052c565b610398610608610c7c565b909182601f8301121561033b5781359167ffffffffffffffff831161033b57602001926020830284011161033b57565b9060208282031261033b57813567ffffffffffffffff811161033b57610cf99201610ca3565b9091565b9061040a8161010093610abe565b90610d2b610d24610d1a845190565b8084529260200190565b9260200190565b9060005b818110610d3c5750505090565b909192610d56610d4f6001928651610cfd565b9460200190565b929101610d2f565b602080825261036392910190610d0b565b3461033b57610398610d8b610d85366004610cd3565b906125e4565b60405191829182610d5e565b801515610334565b9050359061034d82610d97565b919060408382031261033b57610363906020610dc882866104c2565b9401610d9f565b3461033b576104a2610de2366004610dac565b90612653565b6104a7610363610363926001600160a01b031690565b61036390610de8565b61036390610dfe565b90610e1a90610e07565b600052602052604060002090565b610363916008021c5b60ff1690565b906103639154610e28565b6000610e52610363926021610e10565b610e37565b3461033b57610398610385610e6d3660046109b2565b610e42565b9060808282031261033b57610e8781836104c2565b92610e9582602085016104c2565b92610ea383604083016105cc565b92606082013567ffffffffffffffff811161033b576103639201610449565b3461033b576104a2610ed5366004610e72565b92919091612665565b634e487b7160e01b600052600060045260246000fd5b634e487b7160e01b600052602260045260246000fd5b9060016002830492168015610f2a575b6020831014610f2557565b610ef4565b91607f1691610f1a565b80546000939291610f51610f4783610f0a565b8085529360200190565b9160018116908115610fa35750600114610f6a57505050565b610f7d9192939450600052602060002090565b916000925b818410610f8f5750500190565b805484840152602090930192600101610f82565b92949550505060ff1916825215156020020190565b9061036391610f34565b9061034d610fdc92610fd360405190565b93848092610fb8565b03836103b2565b90600010610ff45761036390610fc2565b610ede565b6103636000601a610fe3565b3461033b5761101536600461052c565b6103986105ba610ff9565b6103636000601d6107e2565b3461033b5761103c36600461052c565b610398610608611020565b6103636000601e6107e2565b3461033b5761106336600461052c565b610398610608611047565b3461033b576103986105ba6110843660046105d9565b61281f565b610363601a6020610e37565b3461033b576110a536600461052c565b6103986110b0611089565b6040519182918260ff909116815260200190565b3461033b576104a26110d73660046105d9565b612925565b909182601f8301121561033b5781359167ffffffffffffffff831161033b576020019260c0830284011161033b57565b9160408383031261033b57823567ffffffffffffffff811161033b578261113a6020946103639387016110dc565b949095016104c2565b90611152610d24610d1a845190565b9060005b8181106111635750505090565b909192611179610d4f6001928651815260200190565b929101611156565b602080825261036392910190611143565b3461033b576103986111ae6111a836600461110c565b91612b0f565b6040515b91829182611181565b91909160408184031261033b576111d28382610667565b92602082013567ffffffffffffffff811161033b57610cf99201610ca3565b3461033b576104a26112043660046111bb565b91612b3a565b919060408382031261033b5761036390602061077682866104c2565b3461033b5761039861038561123c36600461120a565b90612b45565b61036360006019610fe3565b3461033b5761125e36600461052c565b6103986105ba611242565b6103636000601f6107e2565b3461033b5761128536600461052c565b610398610608611269565b91906101408382031261033b576112a78184610814565b926112b58260c0830161082d565b926103636112c68460e0850161082d565b936101206107768261010087016105cc565b3461033b576103986107be6112ee366004611290565b93929092612be9565b63152a902d60e11b6001600160e01b0319821614908115611327575b811561131d575090565b6103639150612bf8565b6001600160e01b0319811663780e9d6360e01b149150611313565b610363906104a7565b6103639054611342565b1561135c57565b60405162461bcd60e51b815260206004820152600960248201527f4f6e6c794f776e657200000000000000000000000000000000000000000000006044820152606490fd5b0390fd5b61034d906113ce6113b6601761134b565b6113c8335b916001600160a01b031690565b14611355565b611619565b9160001960089290920291821b911b6113ec565b921b90565b9181191691161790565b6103636103636103639290565b919061141461036361141c936113f6565b9083546113d3565b9055565b61034d91600091611403565b818110611437575050565b806114456000600193611420565b0161142c565b9190601f811161145a57505050565b61146c61034d93600052602060002090565b906020601f84018190048301931061148e575b6020601f90910104019061142c565b909150819061147f565b906114a1815190565b9067ffffffffffffffff82116103d4576114c5826114bf8554610f0a565b8561144b565b602090601f83116001146115005761141c9291600091836114f5575b5050600019600883021c1916906002021790565b0151905038806114e1565b601f1983169161151585600052602060002090565b9260005b8181106115535750916002939185600196941061153a575b50505002019055565b01516000196008601f8516021c19169055388080611531565b91936020600181928787015181550195019201611519565b9061034d91611498565b6103639060a01c610a4d565b6103639054611575565b610a4d6103636103639290565b634e487b7160e01b600052601160045260246000fd5b65ffffffffffff9081169116019065ffffffffffff82116115cb57565b611598565b610366906113f6565b6103636103636103639265ffffffffffff1690565b610366906115d9565b91602061034d929493611612604082019660008301906115d0565b01906115ee565b61162490601961156b565b7f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c6116736116656116556020611581565b61165f600161158b565b906115ae565b6040519182916001836115f7565b0390a1565b61034d906113a5565b9061034d916116936113b6601761134b565b9061034d91612cea565b9061034d91611681565b61036390610fc2565b610363600b6116a7565b610363906116c781612dd6565b50612e17565b61034d916116d9612eab565b91612f03565b61034d906116f06113b6601761134b565b611742565b907aff00000000000000000000000000000000000000000000000000009060d01b6113ec565b610e316103636103639260ff1690565b9061173b61036361141c9261171b565b82546116f5565b61034d90602061172b565b61034d906116df565b6104a76103636103639290565b61036390611756565b611781600561177b8354610f0a565b8361144b565b7f4b4944454e00000000000000000000000000000000000000000000000000000a9055565b61034d9061176c565b906001600160a01b03906113ec565b906117ce61036361141c92610e07565b82546117af565b610e316103636103639290565b929190989694979593986117f6601761134b565b60009061180282611763565b906118156001600160a01b0383166113bb565b036118de576001600160a01b03166001600160a01b038d16146118cf57509461188961034d9b9a98956118826118979661187b6118ca9d9b976118746118909861186361189e9e600b61156b565b61186d600c6117a6565b601961156b565b601a61156b565b601b6117be565b601c6117be565b601d6117be565b601e6117be565b601f6117be565b6118a98160206117be565b6118bd6118b660056117d5565b602061172b565b6118c56131d2565b612cea565b613c5f565b63e99d5ac560e01b8152600490fd5b507fe9534487000000000000000000000000000000000000000000000000000000008152600490fd5b61036390610e31565b6103639054611907565b93929190611926612eab565b6119366113bb6104a7601761134b565b1415806119e1575b806119c1575b806119a1575b6119575761036394611a8a565b600061199c611964612eab565b7fa6fd770e0000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301526024820190565b036000fd5b506119aa612eab565b6119ba6113bb6104a7601e61134b565b141561194a565b506119ca612eab565b6119da6113bb6104a7601c61134b565b1415611944565b506119fc6119f76119f0612eab565b6021610e10565b611910565b611a0860005b91151590565b1461193e565b65ffffffffffff1665ffffffffffff81146115cb5760010190565b9079ffffffffffff00000000000000000000000000000000000000009060a01b6113ec565b610a4d6103636103639265ffffffffffff1690565b90611a7361036361141c92611a4e565b8254611a29565b60208101929161034d91906115ee565b90611ae393611ad0929695939650611abd611aad611aa86020611581565b611a0e565b611ab8816020611a63565b6115d9565b96611acb611ab86020611581565b613fcf565b611add611ab86020611581565b906140ab565b7f176b02bb2d12439ff7a20b59f402cca16c76f50508b13ef3166a600eb719354a611673611b116020611581565b60405191829182611a7a565b61036393929190600061191a565b6001600160a01b03909116815260608101939261034d929091604091611b52906020830152565b01906001600160a01b03169052565b9091600092611b6f84611763565b6001600160a01b0381166001600160a01b03831614611bef5750611b9c9082611b96612eab565b9161414b565b916001600160a01b0381166001600160a01b03841603611bbc5750505050565b916113a19184937f64283d7b00000000000000000000000000000000000000000000000000000000855260048501611b2b565b633250574960e11b85526001600160a01b03166004850152602484fd5b90610e1a906113f6565b6103639060a01c5b6bffffffffffffffffffffffff1690565b6103639054611c16565b61036360406103d9565b9061034d611c786000611c54611c39565b94611c72611c6383830161134b565b6001600160a01b031687840152565b01611c2f565b6bffffffffffffffffffffffff166020840152565b61036390611c43565b610363610363610363926bffffffffffffffffffffffff1690565b818102929181159184041417156115cb57565b634e487b7160e01b600052601260045260246000fd5b90611ce4565b9190565b908115611cef570490565b611cc4565b611d0e611d1391939293611d06600090565b506016611c0c565b611c8d565b91611d2583516001600160a01b031690565b611d356113bb6104a76000611763565b14611d8e575b6000611d7f611d6e611ce093611d68611d6360208901516bffffffffffffffffffffffff1690565b611c96565b90611cb1565b611d79611d636141f8565b90611cda565b9301516001600160a01b031690565b9150611ce06000611d7f611d6e611da56015611c8d565b959350505050611d3b565b6103639081565b6103639054611db0565b611dcd61036382612347565b821015611df05761036391611de6611deb926011610e10565b611c0c565b611db7565b63295f44f760e21b60009081529161199c916004610915565b90611e1661042a836103ed565b918252565b6103636000611e09565b610363611e1b565b909161034d92611e3b611e25565b92612665565b15611e4857565b60405162461bcd60e51b815260206004820152600b60248201527f4261644275726e557365720000000000000000000000000000000000000000006044820152606490fd5b6103639060d01c610e31565b6103639054611e8d565b611eb36103636103639260ff1690565b62ffffff1690565b611ece9062ffffff165b9162ffffff1690565b029062ffffff82165b9182036115cb57565b6103636103636103639262ffffff1690565b611efb81612281565b90611f1f611f07612eab565b611f196001600160a01b0385166113bb565b14611e41565b611f288161437c565b91611f36835162ffffff1690565b926020810193611f4f611ec5611eb3875162ffffff1690565b0361201657604001516020015160ff16611f73611f6c60026117d5565b9160ff1690565b03611feb5761034d92611fe691611f92611f8d601d61134b565b610e07565b91611fe0611fd0611fcb611fb3611fa9601f61134b565b945162ffffff1690565b611fc5611fc06020611e99565b611ea3565b90611ebb565b611ee0565b611d68662386f26fc100006113f6565b926143e2565b61442c565b7f5a2e4561000000000000000000000000000000000000000000000000000000006000908152600490fd5b7f10367d15000000000000000000000000000000000000000000000000000000006000908152600490fd5b61034d906120526113b6601761134b565b612090565b919060086113ec9102916113e760ff841b90565b919061207c61036361141c93151590565b908354612057565b61034d9160009161206b565b60009061209f6104a783611763565b6001600160a01b038216146120c257906120bd61034d926021610e10565b612084565b5063e99d5ac560e01b8152600490fd5b61034d90612041565b156120e257565b60405162461bcd60e51b815260206004820152601160248201527f4f6e6c7950726f706f7365644f776e65720000000000000000000000000000006044820152606490fd5b61213e6121376104a7601861134b565b33146120db565b61215261214b6000611763565b60186117be565b61034d33613c5f565b634e487b7160e01b600052603260045260246000fd5b80548210156121945761218b600191600052602060002090565b91020190600090565b61215b565b610363916008021c81565b906103639154612199565b6121bb61036360135490565b8110156121d6576121d0610363916013612171565b906121a4565b6113a19060009182916121e883611763565b63295f44f760e21b845260048401610915565b61034d9061220c6113b6601761134b565b612231565b9060ff906113ec565b9061222a61036361141c92151590565b8254612211565b600061223f6104a782611763565b6001600160a01b038316146118cf5750600161225f61034d926021610e10565b61221a565b61034d906121fb565b61227d6113bb6104a7601b61134b565b1490565b61036390612dd6565b61036360606103d9565b61036360c06103d9565b6122a6612294565b906000825260208080808080870160008152016000815201600081520160008152016000905250565b905250565b61036361229e565b6122e461228a565b906000825260208080840160008152016122cf6122d4565b6103636122dc565b610363906123106122fc565b5061437c565b9061034d92916123296113b6601761134b565b61034d929161188961189092601c6117be565b9061034d9291612316565b600061235281611763565b6001600160a01b0381166001600160a01b0384161461237b575050611deb61036391600e610e10565b7f89c62b640000000000000000000000000000000000000000000000000000000082526001600160a01b03166004820152602490fd5b61034d906123c26113b6601761134b565b612413565b156123ce57565b60405162461bcd60e51b815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152606490fd5b6124346124236104a76000611763565b6001600160a01b03831614156123c7565b61243f8160186117be565b61245161244b33610e07565b91610e07565b907fe0b4efa3d38d02619a80181fa85dcce7f14709089827c79ad0aa92b430449d1461247c60405190565b80805b0390a3565b61034d906123b1565b90612496612eab565b6124a66113bb6104a7601761134b565b141580612507575b806124e7575b806124c7575b6119575761034d91612526565b506124d0612eab565b6124e06113bb6104a7601e61134b565b14156124ba565b506124f0612eab565b6125006113bb6104a7601c61134b565b14156124b4565b506125166119f76119f0612eab565b6125206000611a02565b146124ae565b9061034d9161445f565b9061034d9161248d565b610363600c6116a7565b67ffffffffffffffff81116103d45760208091020190565b90611e1661042a83612544565b60005b82811061257857505050565b6020906125836122fc565b818401520161256c565b9061034d6125a361259d8461255c565b93612544565b601f190160208401612569565b9190811015612194576020020190565b35610363816105c6565b906125d3825190565b811015612194576020809102010190565b81906125ef8261258d565b9384906125fc60006113f6565b855b81101561264a576126438161262761262261261d6125fe958a8a6125b0565b6125c0565b61437c565b612631828b6125ca565b5261263c818a6125ca565b5060010190565b90506125fc565b50935093505050565b9061034d91612660612eab565b614486565b9061034d939291612677838383611b61565b61459f565b6103636103636103639260ff1690565b6126966007611e09565b7f5f6e2e6a736f6e00000000000000000000000000000000000000000000000000602082015290565b61036361268c565b6126d16007611e09565b7f5f732e6a736f6e00000000000000000000000000000000000000000000000000602082015290565b6103636126c7565b8054600093929161271961271583610f0a565b9390565b916001811690811561276a575060011461273257505050565b6127459192939450600052602060002090565b6000905b8382106127565750500190565b600181602092548486015201910190612749565b60ff191683525050811515909102019150565b61040a6127959260209261278f815190565b94859290565b93849101610537565b9360016127c6610363989795826127c681976127c06127c09b6127c699612702565b9061277d565b7f5f000000000000000000000000000000000000000000000000000000000000008152019061277d565b91959461034d94612813929461280560405190565b98899660208801968761279e565b908103825203836103b2565b604061283a61036392612830606090565b5061231081612dd6565b01805151612858906128539060ff1661267c565b61267c565b6146eb565b9061286e61285361284e60208451015160ff1690565b61288361285361284e60608551015160ff1690565b906128a860a061289e61285361284e60808851015160ff1690565b9451015160ff1690565b6128b5611f6c60016117d5565b036128cb576128c26126fa565b935b60196127f0565b6128d36126bf565b936128c4565b156128e057565b60405162461bcd60e51b815260206004820152600e60248201527f4f6e6c7946726f6d4d65726765720000000000000000000000000000000000006044820152606490fd5b61034d90611fe6612934612eab565b6129446113bb6104a7601c61134b565b146128d9565b929190612955612eab565b6129656113bb6104a7601761134b565b1415806129c6575b806129a6575b80612986575b6119575761036393612a24565b5061298f612eab565b61299f6113bb6104a7601e61134b565b1415612979565b506129af612eab565b6129bf6113bb6104a7601c61134b565b1415612973565b506129d56119f76119f0612eab565b6129df6000611a02565b1461296d565b369037565b9061034d6129fa61259d8461255c565b601f1901602084016129e5565b91908110156121945760c0020190565b611eb36103636103639290565b509192918192612a33846129ea565b9283600092612a4260006113f6565b875b811015612ada57612ad3612a4491612a69612a62611aa86020611581565b6020611a63565b612a9a612a766020611581565b612a8a612a84848a8d612a07565b916115d9565b612a938a612a17565b8091613fcf565b612ab7612aaa611ab86020611581565b612ab4838c6125ca565b52565b612acd612ac7611ab86020611581565b8c6140ab565b60010190565b9050612a42565b50955095505050506116737ed7dbdfe74994b1b54ec15ae7f0efa0134592b53302fae9a1549a1b8e4e5be4916111b260405190565b610363929190606061294a565b9061034d9291612b2f6113b6601761134b565b9061034d9291614864565b9061034d9291612b1c565b90612b536104a7601c61134b565b6001600160a01b03821614612b6b576103639161487a565b5050600190565b906103639594939291612b886113b6601761134b565b90611ae39493612bb5929796939750612ba7611aad611aa86020611581565b97611acb611ab86020611581565b612bcb612bc5611ab86020611581565b826140ab565b612bd8611f8d601d61134b565b90612be3602061134b565b916143e2565b61036394939291906000612b72565b63152a902d60e11b6001600160e01b0319821614908115612c17575090565b6103639150614884565b61036690611c96565b91602061034d92949361093260408201966000830190612c21565b907fffffffffffffffffffffffff00000000000000000000000000000000000000009060a01b6113ec565b611c1e610363610363926bffffffffffffffffffffffff1690565b90612c9b61036361141c92612c70565b8254612c45565b61034d91612cda90602090612cc7612cc182516001600160a01b031690565b856117be565b01516bffffffffffffffffffffffff1690565b90612c8b565b9061034d91612ca2565b90612cf6611d636141f8565b80612d0083611c96565b11612da35750600091612d1283611763565b6001600160a01b0381166001600160a01b03831614612d6d575061034d9291612d51612d6692612d40611c39565b948501906001600160a01b03169052565b6bffffffffffffffffffffffff166020830152565b6015612ce0565b7fb6d9900a0000000000000000000000000000000000000000000000000000000084526001600160a01b03166004840152602483fd5b61199c906000927f6f483d0900000000000000000000000000000000000000000000000000000000845260048401612c2a565b612ddf816148ad565b90600090612def6104a783611763565b6001600160a01b03841614612e0357505090565b637e27328960e01b82526004820152602490fd5b612e2e61036391612e26600090565b50600f611c0c565b61134b565b919082039182116115cb57565b9093929384831161033b57841161033b578101920390565b356bffffffffffffffffffffffff19169060148110612e75575090565b612e92906bffffffffffffffffffffffff19906014036008021b90565b1690565b6103639060601c610de8565b61036390612e96565b36612eb660146113f6565b90612ec03361226d565b80612ef9575b15612ef357612ee8612ede61036393612eee93612e33565b3690366000612e40565b90612e58565b612ea2565b50503390565b5081811015612ec6565b9160019161034d936148c4565b67ffffffffffffffff81116103d45760200290565b61042a61036391612f10565b612f3e6103636103639290565b61ffff1690565b600a8210156121945760019061218b565b818110612f61575050565b80612f6f6000600193611420565b01612f56565b90612f8890600019906020036008021c90565b8154169055565b919091828210612f9e57505050565b61034d92600a600990910104906003600a612fc56009860182900493600052602060002090565b92830194060260008111612fdc575b500190612f56565b612fe99060018503612f75565b38612fd4565b906801000000000000000081116103d4578161300c61034d935490565b90828155612f8f565b919060086113ec9102916113e762ffffff841b90565b90600f9061304061304c916103638486612fef565b92600052602060002090565b600a82049160005b8381106130bc5750600a8302900360008111613071575b50505050565b9260009360005b81811061308d5750505001553880808061306b565b90919460206130b26001926130a76103638a5161ffff1690565b908560030290613015565b9601929101613078565b6000805b600a81106130d5575083820155600101613054565b959060206130f96001926130ee610363865161ffff1690565b908a60030290613015565b920196016130c0565b9190610ff45761034d9161302b565b90600f90613040613126916103638486612fef565b600a82049160005b8381106131895750600a830290036000811161314a5750505050565b9260009360005b8181106131665750505001553880808061306b565b909194602061317f6001926130a76103638a5160ff1690565b9601929101613151565b6000805b600a81106131a257508382015560010161312e565b959060206131ba6001926130ee610363865160ff1690565b9201960161318d565b9190610ff45761034d91613111565b6133626131df600f612f25565b6131f46131ec6020612f31565b61ffff168252565b61320c6132016024612f31565b61ffff166020830152565b6132246132196028612f31565b61ffff166040830152565b61323c613231602c612f31565b61ffff166060830152565b6132546132496030612f31565b61ffff166080830152565b61326c6132616050612f31565b61ffff1660a0830152565b613284613279605a612f31565b61ffff1660c0830152565b61329c6132916064612f31565b61ffff1660e0830152565b6132b56132a9606e612f31565b61ffff16610100830152565b6132ce6132c26078612f31565b61ffff16610120830152565b6132e86132dc610280612f31565b61ffff16610140830152565b6133026132f66102d0612f31565b61ffff16610160830152565b61331c613310610320612f31565b61ffff16610180830152565b61333661332a610370612f31565b61ffff166101a0830152565b6133506133446103c0612f31565b61ffff166101c0830152565b61335c60006001612f45565b90613102565b6134e361336f600f612f25565b61337960106117d5565b61020081905260ff16815261338e60126117d5565b6101c081905260ff1660208201526133a660146117d5565b6101e081905260ff1660408201526133be60166117d5565b61024081905260ff1660608201526133d660186117d5565b61026081905260ff1660808201526133ee60306117d5565b61022081905260ff1660a082015261341361340960366117d5565b60ff1660c0830152565b61342a613420603c6117d5565b60ff1660e0830152565b61344261343760426117d5565b60ff16610100830152565b61345a61344f60486117d5565b60ff16610120830152565b61347261346760a06117d5565b60ff16610140830152565b61348a61347f60b46117d5565b60ff16610160830152565b6134a261349760c86117d5565b60ff16610180830152565b6134ba6134af60dc6117d5565b60ff166101a0830152565b6134d26134c760f06117d5565b60ff166101c0830152565b6134dd600180612f45565b906131c3565b6134ed600f612f25565b6101a08190526102005160ff1690526135126101c05160206101a051019060ff169052565b6135286101e05160406101a051019060ff169052565b61353e6102405160606101a051019060ff169052565b6135546102605160806101a051019060ff169052565b61355e60206117d5565b610180526135786101805160a06101a051019060ff169052565b61358260246117d5565b6101605261359c6101605160c06101a051019060ff169052565b6135a660286117d5565b610140526135c06101405160e06101a051019060ff169052565b6135ca602c6117d5565b610120526135e5610120516101006101a051019060ff169052565b6135fc610220516101206101a051019060ff169052565b61360660506117d5565b61010052613621610100516101406101a051019060ff169052565b61362b605a6117d5565b60e05261364460e0516101606101a051019060ff169052565b61364e60646117d5565b60c05261366760c0516101806101a051019060ff169052565b613671606e6117d5565b60a05261368860a0516101a08051019060ff169052565b61369260786117d5565b6080526136ab6080516101c06101a051019060ff169052565b6136c46136ba60026001612f45565b6101a051916131c3565b6137916136d1600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60036001612f45565b61385e61379e600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60046001612f45565b61392b61386b600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60056001612f45565b6139f8613938600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60066001612f45565b613ac5613a05600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60076001612f45565b613b92613ad2600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60086001612f45565b61034d613b9f600f612f25565b6102005160ff1681526101c05160ff1660208201526101e05160ff1660408201526102405160ff1660608201526102605160ff1660808201526101805160ff1660a08201526101605160ff1660c08201526101405160ff1660e08201526101205160ff166101008201526102205160ff166101208201526101005160ff1661014082015260e05160ff1661016082015260c05160ff1661018082015260a05160ff166101a082015260805160ff166101c08201526134dd60096001612f45565b613c7a61244b613c6f601761134b565b611f8d8460176117be565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061247c60405190565b356103638161065e565b613cbb9060ff16611f6c565b029060ff8216611ed7565b613cd29060ff16611f6c565b019060ff82116115cb57565b805491929183101561219457600a613cfd600392600052602060002090565b8185040193060290565b610363916008021c611eb3565b906103639154613d07565b613d2d9062ffffff16611ec5565b019062ffffff82116115cb57565b919060c08382031261033b57613db29060a0613d5760c06103d9565b94613d628382610667565b8652613d718360208301610667565b6020870152613d838360408301610667565b6040870152613d958360608301610667565b6060870152613da78360808301610667565b608087015201610667565b60a0830152565b610363903690613d3b565b9062ffffff906113ec565b611eb36103636103639262ffffff1690565b90613df161036361141c92613dcf565b8254613dc4565b9065ffffff0000009060181b6113ec565b90613e1961036361141c92613dcf565b8254613df8565b9061222a61036361141c9261171b565b9061ff009060081b6113ec565b90613e4d61036361141c9261171b565b8254613e30565b9062ff00009060101b6113ec565b90613e7261036361141c9261171b565b8254613e54565b9063ff0000009060181b6113ec565b90613e9861036361141c9261171b565b8254613e79565b9064ff000000009060201b6113ec565b90613ebf61036361141c9261171b565b8254613e9f565b9065ff00000000009060281b6113ec565b90613ee761036361141c9261171b565b8254613ec6565b61034d91613f719060a090613f0d613f07825160ff1690565b85613e20565b613f24613f1e602083015160ff1690565b85613e3d565b613f3b613f35604083015160ff1690565b85613e62565b613f52613f4c606083015160ff1690565b85613e88565b613f69613f63608083015160ff1690565b85613eaf565b015160ff1690565b90613ed7565b9061034d91613eee565b61034d91600190613fbe90604090613fb985613fa9613fa3845162ffffff1690565b82613de1565b602083015162ffffff1690613e09565b015190565b9101613f77565b9061034d91613f81565b61409f61409861034d956140936140716140a6969761404061403a61402161284e61400f613fff60208a01613ca5565b61400960056117d5565b90613caf565b61401b60408a01613ca5565b90613cc6565b61403461402d88613ca5565b6001612f45565b50613cde565b90613d14565b61404c60a08601613ca5565b614059611f6c60016117d5565b0361406c5761406c90611fc56002612a17565b613d1f565b61408761407c61228a565b62ffffff9099168952565b62ffffff166020880152565b613db9565b6040850152565b6000611c0c565b613fc5565b6000916140b783611763565b916001600160a01b0383166001600160a01b0382161461412d576140dc91839161414b565b6140ee6001600160a01b0383166113bb565b036140f7575050565b7f73c6ac6e0000000000000000000000000000000000000000000000000000000082526001600160a01b03166004820152602490fd5b633250574960e11b84526001600160a01b0383166004850152602484fd5b9091614158908383614a32565b916141886141666000611763565b6001600160a01b0381166001600160a01b038616036141c8576104a783614c2b565b6001600160a01b038316036141a1576103639150614cca565b6001600160a01b0382166001600160a01b038416036141bf57505090565b61036391614c4d565b6001600160a01b0384166001600160a01b038616146104a7576104a78386614b72565b611c1e6103636103639290565b6103636127106141eb565b61036390611eb3565b6103639054614203565b6103639060181c611eb3565b6103639054614216565b6103639060081c610e31565b610363905461422c565b6103639060101c610e31565b6103639054614242565b6103639060181c610e31565b6103639054614258565b6103639060201c610e31565b610363905461426e565b6103639060281c610e31565b6103639054614284565b9061034d61432960006142ab612294565b946142c36142ba838301611910565b60ff1687840152565b6142db6142d1838301614238565b60ff166020880152565b6142f36142e983830161424e565b60ff166040880152565b61430b614301838301614264565b60ff166060880152565b61432361431983830161427a565b60ff166080880152565b01614290565b60ff1660a0840152565b9061034d61436c600161434461228a565b9461435a6143518261420c565b62ffffff168752565b61436661408782614222565b0161429a565b6040840152565b61036390614333565b6143936103639161438b6122fc565b506000611c0c565b614373565b6143b16143ab6103639263ffffffff1690565b60e01b90565b6001600160e01b03191690565b6001600160a01b0391821681529116602082015260608101929161034d9160400152565b906144279061441861034d956004956143fe6323b872dd614398565b9361440860405190565b97889560208701908152016143be565b602082018103825203836103b2565b614d3e565b60009061443882611763565b6144566113bb61444983858161414b565b926001600160a01b031690565b14612e03575050565b90614480600061447561036361034d9583611c0c565b019161406c8361420c565b90613de1565b60006144946104a782611763565b6001600160a01b038416146144f7575061247f6144ed6144e783611f8d8761225f886144e27f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31996010610e10565b610e10565b93610e07565b9361038960405190565b7f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602490fd5b9050519061034d82610328565b9060208282031261033b576103639161452e565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526103639291019061055a565b3d1561459a5761458f3d611e09565b903d6000602084013e565b606090565b6000939192833b6145b2611ce0876113f6565b116145bf575b5050505050565b6020916145ce611f8d86610e07565b90866145d8612eab565b6145fe6145e460405190565b97889687958694630a85bd0160e11b86526004860161454f565b03925af1600091816146a4575b506146615750614620565b38808080806145b8565b614628614580565b8051614636611ce0856113f6565b036146595750633250574960e11b82526001600160a01b03166004820152602490fd5b805190602001fd5b61467b630a85bd0160e11b5b916001600160e01b03191690565b03614687575050614616565b633250574960e11b82526001600160a01b03166004820152602490fd5b6146c791925060203d6020116146ce575b6146bf81836103b2565b81019061453b565b903861460b565b503d6146b5565b9061034d6129fa6146e584611e09565b936103ed565b6146f481614dd6565b9061470560019261040a60016113f6565b9180614710846146d5565b936020018401905b614723575b50505090565b8115614780576147649060001901927f3031323334353637383961626364656600000000000000000000000000000000600a82061a8453611d79600a6113f6565b9081614773611ce060006113f6565b1461478057909181614718565b61471d565b61ffff8116610334565b3561036381614785565b919067ffffffffffffffff82116103d4576130406147bb916103638486612fef565b600a82049160005b83811061481c5750600a83029003600081116147df5750505050565b9260009360005b8181106147fb5750505001553880808061306b565b90919460206148126001926130a76103638a61478f565b96019291016147e6565b6000805b600a81106148355750838201556001016147c3565b9590602061484b6001926130ee6103638661478f565b92019601614820565b929190610ff45761034d92614799565b9061487461034d93926001612f45565b90614854565b6103639190614f78565b63780e9d6360e01b6001600160e01b03198216149081156148a3575090565b6103639150614f93565b612e2e610363916148bc600090565b50600d611c0c565b929190918081156149f2575b6148eb575b5050906148e661034d92600f611c0c565b6117be565b6148f483612dd6565b916000906149046104a783611763565b6001600160a01b0382161415806149d6575b806149bf575b614989575050916148e69161034d9493614939575b5091926148d5565b61494290610e07565b61494b84610e07565b614954836113f6565b917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561497f60405190565b600090a438614931565b7fa9fbf51f0000000000000000000000000000000000000000000000000000000082526001600160a01b03166004820152602490fd5b506149d16149cd8286612b45565b1590565b61491c565b506001600160a01b0381166001600160a01b0385161415614916565b50614a006104a76000611763565b6001600160a01b03831614156148d0565b90600019906113ec565b90614a2b61036361141c926113f6565b8254614a11565b90614a90614a3f826148ad565b936000614a4b81611763565b91846001600160a01b0384166001600160a01b03831603614b61575b50506001600160a01b0382166001600160a01b03871603614b26575b506001600160a01b031690565b6001600160a01b03831603614af6575b614aaf826148e683600d611c0c565b614ac4614abe6144e785610e07565b916113f6565b917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614aef60405190565b600090a490565b614b21614b0360016113f6565b614b1b614b1185600e610e10565b9161040a83611db7565b90614a1b565b614aa0565b614b32908285816148c4565b614b5b614b3f60016113f6565b614b1b614b4d88600e610e10565b91614b5783611db7565b0390565b38614a83565b614b6b9188614fd5565b3884614a67565b614bb161034d92611de6600093614bb685614bb1614b8f84612347565b95601285614ba0611deb8484611c0c565b89808203614bbd575b505050611c0c565b611420565b6011610e10565b611de6614bef84614bea85614be0611deb614bea97611de6614bf59b6011610e10565b9485936011610e10565b614a1b565b84611c0c565b853889614ba9565b90815491680100000000000000008310156103d45782614c2591600161034d95018155612171565b90611403565b61034d90614c46614c3b60135490565b614bea836014611c0c565b6013614bfd565b614bea82614c8561034d94614bea611de695614c7b614c6b82612347565b614c7560016113f6565b90612e33565b9687916011610e10565b6012611c0c565b634e487b7160e01b600052603160045260246000fd5b80548015614cc5576000190190614cc2614cbc8383612171565b90611420565b55565b614c8c565b614d1861034d916103636000614bb1601393614ce7614c6b865490565b611de6601491614bea614d0a6121d0614d03611deb8888611c0c565b938b612171565b614bef81614c25858d612171565b614ca2565b9050519061034d82610d97565b9060208282031261033b5761036391614d1d565b614d4a614d5191610e07565b918261504e565b90614d5a825190565b91600092614d6a611ce0856113f6565b14159081614db2575b50614d7c575050565b7f5274afe70000000000000000000000000000000000000000000000000000000082526001600160a01b03166004820152602490fd5b614dd09150806020614dc56149cd935190565b818301019101614d2a565b38614d73565b614de060006113f6565b907a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000614e06816113f6565b821015614f56575b506d04ee2d6d415b85acef8100000000614e27816113f6565b821015614f34575b50662386f26fc10000614e41816113f6565b821015614f12575b506305f5e100614e58816113f6565b821015614ef0575b50612710614e6d816113f6565b821015614ece575b50614e8060646113f6565b811015614eac575b614e95611ce0600a6113f6565b1015614e9e5790565b6103639061040a60016113f6565b614ebd614ec891611d7960646113f6565b9161040a60026113f6565b90614e88565b614ee991611d79614ede926113f6565b9161040a60046113f6565b9038614e75565b614f0b91611d79614f00926113f6565b9161040a60086113f6565b9038614e60565b614f2d91611d79614f22926113f6565b9161040a60106113f6565b9038614e49565b614f4f91611d79614f44926113f6565b9161040a60206113f6565b9038614e2f565b614f7191611d79614f66926113f6565b9161040a60406113f6565b9038614e0e565b610363916144e26119f792614f8b600090565b506010610e10565b7f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b0319821614908115614fcb575090565b6103639150615062565b90614fe46149cd84838561508b565b614fed57505050565b60009283926150016113bb6104a786611763565b0361501e57637e27328960e01b8352600483015250602481010390fd5b6113a1917f177e802f00000000000000000000000000000000000000000000000000000000845260048401610915565b6103639161505c60006113f6565b91615112565b61227d7f01ffc9a70000000000000000000000000000000000000000000000000000000061466d565b906150996104a76000611763565b6001600160a01b038216141592836150b15750505090565b919250906001600160a01b0382166001600160a01b038416149283156150fe575b5082156150e4575b505038808061471d565b6150f69192506144496113bb91612e17565b1438806150da565b61510b9193508290612b45565b91386150d2565b9192919061511f30610e07565b938085311061514c5761036393945081600092916020849351920190855af1615146614580565b91615184565b7fcd7860590000000000000000000000000000000000000000000000000000000060009081526001600160a01b038616600452602490fd5b9061518f57506151fc565b8151906000916151a1611ce0846113f6565b14806151e7575b6151b157505090565b7f9996b3150000000000000000000000000000000000000000000000000000000082526001600160a01b03166004820152602490fd5b50803b6151f6611ce0846113f6565b146151a8565b805160009061520d611ce0836113f6565b111561521c5750805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000008152600490fdfea26469706673582212206445ddcb8e70f88628c237a16dc819334553e1ca4f708e16ce89e5ed9ec5687b64736f6c634300081a0033