[ { "inputs": [ { "internalType": "address", "name": "libraryAddress", "type": "address" }, { "internalType": "address payable", "name": "factoryAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "filtered", "type": "address" } ], "name": "AddressFiltered", "type": "error" }, { "inputs": [], "name": "CantLowerCurrentPercentages", "type": "error" }, { "inputs": [], "name": "CantRevealYetWaitABitToBeAbleToRedeem", "type": "error" }, { "inputs": [], "name": "CantSetBaseURIAndPlaceholderAtTheSameTime", "type": "error" }, { "inputs": [], "name": "CollectionSoldOut", "type": "error" }, { "inputs": [], "name": "ContractMetadataURIAlreadyFixed", "type": "error" }, { "inputs": [], "name": "InputSizeMismatch", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidDropDate", "type": "error" }, { "inputs": [], "name": "InvalidInputSizesDontMatch", "type": "error" }, { "inputs": [], "name": "InvalidMintFee", "type": "error" }, { "inputs": [], "name": "InvalidMintFeeForFreeMinting", "type": "error" }, { "inputs": [], "name": "InvalidMintingType", "type": "error" }, { "inputs": [], "name": "InvalidPercentageOrDiscountValues", "type": "error" }, { "inputs": [], "name": "InvalidPhaseWithoutDate", "type": "error" }, { "inputs": [], "name": "InvalidRevenuePercentage", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "MaxPerAddressExceeded", "type": "error" }, { "inputs": [], "name": "MetadataAlreadyFixed", "type": "error" }, { "inputs": [], "name": "NewBaseURICantBeEmpty", "type": "error" }, { "inputs": [], "name": "NewPlaceholderCantBeEmpty", "type": "error" }, { "inputs": [], "name": "NoBaseURINorPlaceholderSet", "type": "error" }, { "inputs": [], "name": "NonTransferrableSoulboundNFT", "type": "error" }, { "inputs": [], "name": "NotEnoughAmountToMint", "type": "error" }, { "inputs": [], "name": "NothingToRedeem", "type": "error" }, { "inputs": [], "name": "OnlyAffiliateOrN2M", "type": "error" }, { "inputs": [], "name": "OnlyOwnerOrN2M", "type": "error" }, { "inputs": [], "name": "PresaleInvalidMintingType", "type": "error" }, { "inputs": [], "name": "PresaleNotOpen", "type": "error" }, { "inputs": [], "name": "PublicSaleNotOpen", "type": "error" }, { "inputs": [], "name": "ReentrancyGuard", "type": "error" }, { "inputs": [], "name": "RoyaltyFeeTooHigh", "type": "error" }, { "inputs": [], "name": "SaleFinished", "type": "error" }, { "inputs": [], "name": "SignatureExpired", "type": "error" }, { "inputs": [], "name": "SignatureMismatch", "type": "error" }, { "inputs": [], "name": "TokenAlreadyMinted", "type": "error" }, { "inputs": [], "name": "TotalSupplyMustBeGreaterThanZero", "type": "error" }, { "inputs": [], "name": "WaitUntilDropDate", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "affiliate", "type": "address" } ], "name": "AffiliateSell", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "bool", "name": "soulbound", "type": "bool" } ], "name": "airdropRandom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "bool", "name": "soulbound", "type": "bool" } ], "name": "airdropSequential", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "bool", "name": "soulbound", "type": "bool" } ], "name": "airdropSpecify", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "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": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "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": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenName", "type": "string" }, { "internalType": "string", "name": "tokenSymbol", "type": "string" }, { "internalType": "uint256", "name": "iMintPrice", "type": "uint256" }, { "internalType": "bytes32", "name": "baseURICIDHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "placeholderImageCIDHash", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint16", "name": "percentage", "type": "uint16" } ], "internalType": "struct IN2M_ERCStorage.RevenueAddress[]", "name": "revenueAddresses", "type": "tuple[]" }, { "internalType": "address", "name": "iErc20PaymentAddress", "type": "address" }, { "internalType": "uint32", "name": "iTotalSupply", "type": "uint32" }, { "internalType": "uint16", "name": "iRoyaltyFee", "type": "uint16" }, { "internalType": "bool", "name": "soulboundCollection", "type": "bool" }, { "internalType": "enum IN2M_ERCStorage.MintingType", "name": "iMintingType", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMetadataFixed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerAddress", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "affiliate", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "customURICIDHash", "type": "bytes32" }, { "internalType": "bool", "name": "soulbound", "type": "bool" } ], "name": "mintCustomURITo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "bool", "name": "freeMinting", "type": "bool" }, { "internalType": "uint256", "name": "customFee", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "soulbound", "type": "bool" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mintPresale", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintRandomTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "affiliate", "type": "address" } ], "name": "mintRandomTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "mintSpecifyTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "address", "name": "affiliate", "type": "address" } ], "name": "mintSpecifyTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "affiliate", "type": "address" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "n2mVersion", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "collectionOwner", "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": "redeemRandom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c0346200014157601f62005e9938819003918201601f19168301916001600160401b038311848410176200014657808492604094855283398101031262000141578051906001600160a01b039081831683036200014157602001519081168103620001415760805260005460ff8160081c16620000ec5760ff80821610620000b0575b5060a052604051615d3c90816200015d82396080518181816133c00152614f48015260a05181615cd40152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000083565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001e575b361561001c5761001c615cc7565b005b60003560e01c806301ffc9a71461038e57806306fdde0314610385578063081812fc1461037c578063095ea7b3146103735780630de77eb81461036a5780631249c58b1461036157806318160ddd146103585780631d7df1911461034f5780631ff4cc7d1461034657806323b872dd1461033d5780632a55205a146103345780633644e5151461032b5780633a46b1a81461032257806342842e0e14610319578063438b1b4b146103105780634402d25414610307578063449a52f8146102fe5780634a50aa85146102f55780635066e5c2146102ec578063587cde1e146102e35780635c19a95c146102da5780636352211e146102d1578063639814e0146102c85780636817c76c146102bf57806368fdda33146102b65780636ad54240146102ad57806370a08231146102a457806371e6775f1461029b5780637ecebe00146102925780638da5cb5b146102895780638e539e8c1461028057806394bf804d1461027757806395d89b411461026e5780639ab24eb0146102655780639d13a5ba1461025c578063a0712d6814610253578063a22cb4651461024a578063b88d4fde14610241578063be172edf14610238578063c3cda5201461022f578063c87b56dd14610226578063cb93c48f1461021d578063e985e9c5146102145763fefa5d720361000e5761020f612136565b61000e565b5061020f6120f7565b5061020f6120d9565b5061020f611fb4565b5061020f611e5e565b5061020f611d8b565b5061020f611d1e565b5061020f611c05565b5061020f611be6565b5061020f611b4a565b5061020f611ae6565b5061020f611a3e565b5061020f611a10565b5061020f611893565b5061020f611877565b5061020f611838565b5061020f611634565b5061020f61160c565b5061020f611532565b5061020f6113ff565b5061020f611340565b5061020f61131a565b5061020f6112fb565b5061020f6112d4565b5061020f611293565b5061020f6111f3565b5061020f61107e565b5061020f611052565b5061020f611001565b5061020f610e6c565b5061020f610d5b565b5061020f610bec565b5061020f610bc8565b5061020f610b8e565b5061020f610b5b565b5061020f61094f565b5061020f61091e565b5061020f6108f9565b5061020f610835565b5061020f6107eb565b5061020f6106a5565b5061020f610655565b5061020f610551565b5061020f6103c6565b7fffffffff000000000000000000000000000000000000000000000000000000008116036103c157565b600080fd5b50346103c15760206003193601126103c15760207fffffffff0000000000000000000000000000000000000000000000000000000060043561040781610397565b167f2a55205a00000000000000000000000000000000000000000000000000000000811490811561043e575b506040519015158152f35b7f80ac58cd000000000000000000000000000000000000000000000000000000008114915081156104a2575b8115610478575b5038610433565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610471565b7f5b5e139f000000000000000000000000000000000000000000000000000000008114915061046a565b60009103126103c157565b60005b8381106104ea5750506000910152565b81810151838201526020016104da565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610536815180928187528780880191016104d7565b0116010190565b90602061054e9281815201906104fa565b90565b50346103c15760008060031936011261065257604051908060785461057581613ca2565b8085529160019180831690811561060a57506001146105af575b6105ab8561059f81870382610f2e565b6040519182918261053d565b0390f35b9250607883527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac45b8284106105f257505050810160200161059f826105ab61058f565b805460208587018101919091529093019281016105d7565b8695506105ab9693506020925061059f9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101929361058f565b80fd5b50346103c15760206003193601126103c157602061067460043561269b565b6001600160a01b0360405191168152f35b6001600160a01b038116036103c157565b60c435906106a382610685565b565b50346103c15760406003193601126103c1576004356106c381610685565b6024356106cf82615ad6565b6106d881612679565b6001600160a01b03808216809185161461078157331490811561076f575b50156107055761001c91613fbb565b608460405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b61077b9150339061403d565b386106f6565b608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b50346103c15760006003193601126103c15760335415801590610816575b6020906040519015158152f35b506020600360ff60455460301c1661082d81613427565b149050610809565b5060006003193601126103c15761084d603a54615838565b610855615721565b60455460ff8160301c1661086881613427565b6108cf576045805463ffffffff191663ffffffff92831660010183169081179091559060455491818360581c16106108a55761001c9116336147a5565b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b50346103c15760006003193601126103c157602063ffffffff60455416604051908152f35b5060406003193601126103c15761001c60043561093a81610685565b6024359061094a82603a546158cd565b614a44565b5060008060031936011261065257600161097c336001600160a01b03166000526041602052604060002090565b0154336000908152604160205260409020548015610b055760016109b3336001600160a01b03166000526041602052604060002090565b0154431115610adb57610a4d82610a8a9340908115610a8d575b508460016109ee336001600160a01b03166000526041602052604060002090565b015584610a0e336001600160a01b03166000526041602052604060002090565b5560455460481c61ffff1692610a477fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b33614b19565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b610abd915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0043166125d8565b43811015610acd575b40386109cd565b610ad6906125e5565b610ac6565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b60031960609101126103c157600435610b4781610685565b90602435610b5481610685565b9060443590565b50346103c15761001c610b6d36610b2f565b91610b7733615ad6565b610b89610b848433614132565b6140c1565b6141ff565b50346103c15760406003193601126103c1576040612710610bba61ffff60455460381c16602435613637565b048151903082526020820152f35b50346103c15760006003193601126103c1576020610be4613041565b604051908152f35b50346103c15760406003193601126103c157600435610c0a81610685565b6001600160a01b03602435911660005260df60205260406000209043811015610d1757610c39610c50916132f1565b8254906000908260058111610cae575b5084612d8d565b9081610c83575050602060005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b610ca2610ca991610c95602094612612565b9060005260206000200190565b5460201c90565b610c5d565b80610cbe610cc49295939561319f565b90612621565b90610cef610ce6610cdc848960005260206000200190565b5463ffffffff1690565b63ffffffff1690565b63ffffffff85161015610d055750915b38610c49565b929150610d11906125c2565b90610cff565b606460405162461bcd60e51b815260206004820152602060248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152fd5b50346103c157610dc0610d6d36610b2f565b90610d7733615ad6565b604051926020840184811067ffffffffffffffff821117610e36575b60405260008452610da333615ad6565b610db0610b848433614132565b610dbb8383836141ff565b61461d565b15610dc757005b60405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b0390fd5b610e3e610e89565b610d93565b60031960609101126103c157600435610e5b81610685565b906024359060443561054e81610685565b5061001c610e84610e7c36610e43565b819391615593565b6148b1565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610ecd57604052565b610ed5610e89565b604052565b6040810190811067ffffffffffffffff821117610ecd57604052565b6060810190811067ffffffffffffffff821117610ecd57604052565b60a0810190811067ffffffffffffffff821117610ecd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610ecd57604052565b604051906106a382610eda565b60209067ffffffffffffffff8111610f96575b60051b0190565b610f9e610e89565b610f8f565b81601f820112156103c157803591610fba83610f7c565b92610fc86040519485610f2e565b808452602092838086019260051b8201019283116103c1578301905b828210610ff2575050505090565b81358152908301908301610fe4565b5060406003193601126103c15760043561101a81610685565b6024359067ffffffffffffffff82116103c15761103e61001c923690600401610fa3565b9061104d603a548351906158cd565b614dac565b5060406003193601126103c15761001c60043561106e81610685565b60243590610e8482603a546158cd565b5060606003193601126103c15760043561109781610685565b6024359067ffffffffffffffff82116103c1576110bb61001c923690600401610fa3565b9061104d6044356110cb81610685565b8351615593565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff811161110e575b01160190565b611116610e89565b611108565b929192611127826110d2565b916111356040519384610f2e565b8294818452818301116103c1578281602093846000960137010152565b9080601f830112156103c15781602061054e9335910161111b565b9181601f840112156103c15782359167ffffffffffffffff83116103c1576020808501948460061b0101116103c157565b60e4359063ffffffff821682036103c157565b61ffff8116036103c157565b61010435906106a3826111b1565b801515036103c157565b61012435906106a3826111cb565b610144359060048210156103c157565b506101606003193601126103c15767ffffffffffffffff6004358181116103c157611222903690600401611152565b6024358281116103c15761123a903690600401611152565b9060a4359283116103c15761125661001c93369060040161116d565b61125e610696565b61126661119e565b9161126f6111bd565b936112786111d5565b956112816111e3565b97608435916064359160443591613431565b50346103c15760206003193601126103c15760206004356112b381610685565b6001600160a01b0380911660005260de825260406000205416604051908152f35b50346103c15760206003193601126103c15761001c6004356112f581610685565b33612191565b50346103c15760206003193601126103c1576020610674600435612679565b50346103c15760006003193601126103c157602061ffff60455460481c16604051908152f35b50346103c15760006003193601126103c1576020603a54604051908152f35b81601f820112156103c15780359161137683610f7c565b926113846040519485610f2e565b808452602092838086019260051b8201019283116103c1578301905b8282106113ae575050505090565b83809183356113bc81610685565b8152019101906113a0565b60406003198201126103c1576004359067ffffffffffffffff82116103c1576113f29160040161135f565b9060243561054e816111cb565b50611409366113c7565b90611425611415614f09565b6001600160a01b03163314614ebe565b604580549260ff8460301c1661143a81613427565b6108cf5761145493835163ffffffff9586918284166125d8565b9160581c16106108a55782519260005b84811061146d57005b80836114cd61148e61148160019587614e03565b516001600160a01b031690565b896114ac6114a08a5463ffffffff1690565b60010163ffffffff1690565b6114c68163ffffffff1663ffffffff196045541617604555565b16906147a5565b6114d8575b01611464565b61152d6115026114ec875463ffffffff1690565b63ffffffff166000526043602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6114d2565b5060606003193601126103c15760043561154b81610685565b60443590611558826111cb565b611563603a54615838565b61156b615721565b60455490600360ff8360301c1661158181613427565b036108cf576045805463ffffffff191663ffffffff93841660010184169081179091559160455492818460581c16106108a5576115bf9216906147a5565b6115f2575b6024356115ef6115d960455463ffffffff1690565b63ffffffff166000526044602052604060002090565b55005b6116076115026114ec60455463ffffffff1690565b6115c4565b50346103c15760206003193601126103c1576020610be460043561162f81610685565b613eec565b5060606003193601126103c15767ffffffffffffffff600480358281116103c157611662903690830161135f565b916024359081116103c15761167a9036908301610fa3565b60443592611687846111cb565b61168f614f7a565b80519260458054600260ff8260301c166116a881613427565b0361180f5763ffffffff9081811690826116c38851846125d8565b9160581c16106117e657855187036117bd57906116f591818816011663ffffffff1663ffffffff196045541617604555565b60005b85811061170157005b61170b8186614e03565b51158015611797575b61176e57808761173d61172c61148160019589614e03565b611736848a614e03565b51906147a5565b611748575b016116f8565b6117696115026117588389614e03565b516000526043602052604060002090565b611742565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506117a28186614e03565b5182546117b79060581c63ffffffff16610ce6565b10611714565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b50346103c15760206003193601126103c1576001600160a01b0360043561185e81610685565b1660005260e16020526020604060002054604051908152f35b50346103c15760006003193601126103c1576020610674613381565b50346103c15760206003193601126103c157600435438110156119cc576118bc6118d3916132f1565b60e054906000908260058111611960575b50612cf5565b8061190557507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b60405191168152602090f35b61195b610ca26119317bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93612612565b60e06000527f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f0190565b6118f9565b80610cbe6119709295939561319f565b60e0600052906119a4610ce67f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f8401610cdc565b63ffffffff851610156119ba5750915b386118cd565b9291506119c6906125c2565b906119b4565b606460405162461bcd60e51b815260206004820152601a60248201527f566f7465733a20626c6f636b206e6f7420796574206d696e65640000000000006044820152fd5b5060406003193601126103c15761001c600435611a38602435611a3281610685565b82615593565b336148b1565b50346103c157600080600319360112610652576040519080607954611a6281613ca2565b8085529160019180831690811561060a5750600114611a8b576105ab8561059f81870382610f2e565b9250607983527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d7915b828410611ace57505050810160200161059f826105ab61058f565b80546020858701810191909152909301928101611ab3565b50346103c15760206003193601126103c1576001600160a01b03600435611b0c81610685565b1660005260df60205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b416040600020612873565b16604051908152f35b506101006003193601126103c157600435611b6481610685565b67ffffffffffffffff6024358181116103c157611b85903690600401610fa3565b91604435611b92816111cb565b60c43590611b9f826111cb565b60e435948486116103c157366023870112156103c15785600401359485116103c15736602486880101116103c157602461001c96019360a435926084359260643592614fc4565b5060206003193601126103c15761001c600435611a3881603a546158cd565b50346103c15760406003193601126103c157600435611c2381610685565b602435611c2f816111cb565b611c3882615ad6565b6001600160a01b03821691823314611cda5781611c78611ca89233600052607d6020526040600020906001600160a01b0316600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b50346103c15760806003193601126103c157600435611d3c81610685565b60243590611d4982610685565b6044356064359267ffffffffffffffff84116103c157366023850112156103c157611d81610dc094369060248160040135910161111b565b92610da333615ad6565b50611d95366113c7565b90611d9e614f7a565b8051906045549260ff8460301c1693611db685613427565b60018095036108cf5763ffffffff8082169181611dd387856125d8565b9160581c16106108a557611dfc91818616011663ffffffff1663ffffffff196045541617604555565b611e0543612612565b4060005b848110611e1257005b80611e1e879284614d15565b84611e3582611e30611481868b614e03565b6147a5565b611e41575b5001611e09565b611502611e58916000526043602052604060002090565b38611e3a565b50346103c15760c06003193601126103c157600435611e7c81610685565b6064359060243560443560ff841684036103c157804211611f7057611f3e611f6b9161001c9560405190611f2682611efa6020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610f2e565b611f3960a43593608435935190206130f6565b612e10565b91611f65836001600160a01b031660005260e1602052604060002090815491600183019055565b14612146565b612191565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b50346103c15760206003193601126103c157600435611ff1611fec82600052607a6020526001600160a01b0360406000205416151590565b61262e565b604051907f01284a4600000000000000000000000000000000000000000000000000000000825260048201526000908181602481305afa9081156120cc575b8291612045575b604051806105ab848261053d565b90503d8083833e6120568183610f2e565b8101906020818303126120c45780519067ffffffffffffffff82116120c8570181601f820112156120c45780519261208d846110d2565b9261209b6040519485610f2e565b8484526020858401011161065257506105ab926120be91602080850191016104d7565b38612037565b8280fd5b8380fd5b6120d4612fa4565b612030565b50346103c15760006003193601126103c15760206040516103e88152f35b50346103c15760406003193601126103c157602061212c60043561211a81610685565b6024359061212782610685565b61403d565b6040519015158152f35b5061001c61094a610e7c36610e43565b1561214d57565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b906001600160a01b038083169260009184835260de6020526122206040928284862054169687936121f288878920906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b87169788917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f8880a4613eec565b9285821415806123d7575b612238575b505050505050565b8290826122bd575b50505083612250575b8080612230565b61229a6122b1926122957fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724956001600160a01b031660005260df602052604060002090565b612741565b915190815260208101919091529081906040820190565b0390a238808080612249565b82815260df602052207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90816122ee82612873565b168581039081116123ca575b612303436132f1565b90838111612361578392612356927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249561233e931691612bf2565b86519184168252909216602083015281906040820190565b0390a2388181612240565b6084865162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b6123d2612592565b6122fa565b5083151561222b565b906001600160a01b038082169216828114158061258a575b61240157505050565b8061246b575b5081612412575b5050565b6124586124537fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724926001600160a01b031660005260df602052604060002090565b6126d8565b60408051928352602083019190915290a2565b8060005260df60205260406000207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff806124a083612873565b16600019810190811161257d575b6124b7436132f1565b90828111612513577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361250a92846124f1931691612bf2565b6040805192851683529316602082015291829190820190565b0390a238612407565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b612585612592565b6124ae565b5060016123f8565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600182018092116125d057565b6106a3612592565b919082018092116125d057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082019182116125d057565b9060001982019182116125d057565b919082039182116125d057565b1561263557565b606460405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052607a6020526001600160a01b036040600020541661054e81151561262e565b6126be611fec82600052607a6020526001600160a01b0360406000205416151590565b600052607c6020526001600160a01b036040600020541690565b907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918261270182612873565b1660018101809111612734575b612717436132f1565b918482116125135784928361272d931691612bf2565b9316921690565b61273c612592565b61270e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92918361276a83612873565b1690810180911161273457612717436132f1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90816127a561281b565b16600181018091116127d1575b6127bb436132f1565b908381116125135783918261272d921690612ab3565b6127d9612592565b6127b2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908161280561281b565b1660001981019081116127d1576127bb436132f1565b60e0546000908061282d575050600090565b60e07f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4e9282600019810111612866575b52015460201c90565b61286e612592565b61285d565b805460008161288457505050600090565b6020906000199383858101116128a1575b81522001015460201c90565b6128a9612592565b612895565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6106a3907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff602060e0546801000000000000000081101561297f575b600181018060e055811015612972575b60e0600052835191909301519190911660201b63ffffffff191663ffffffff91909116177f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f9190910155565b61297a6128ae565b612926565b612987610e89565b612916565b907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206106a39380549068010000000000000000821015612a1a575b60018201808255821015612a0d575b60005281600020019263ffffffff81511663ffffffff1985541617845501511663ffffffff63ffffffff1983549260201b169116179055565b612a156128ae565b6129d4565b612a22610e89565b6129c5565b906040516040810181811067ffffffffffffffff821117612a5b575b604052602081935463ffffffff81168352811c910152565b612a63610e89565b612a43565b15612a6f57565b606460405162461bcd60e51b815260206004820152601760248201527f436865636b706f696e743a20696e76616c6964206b65790000000000000000006044820152fd5b60e0549192918015612bb357612b64918185612adb612ad6611931602096612612565b612a27565b92612aea845163ffffffff1690565b612b0163ffffffff91828416928391161115612a68565b612b12610ce6865163ffffffff1690565b03612b685750612b27611931612b4193612612565b9063ffffffff63ffffffff1983549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b9050612bae9150612b86612b7a610f6f565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526128de565b612b41565b50612bec90612bc3612b7a610f6f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526128de565b60009190565b90929192838254801515600014612cbb57926020929184612c28612ad6612c1b612b6498612612565b8560005260206000200190565b93612c37855163ffffffff1690565b612c4e63ffffffff91828416928391161115612a68565b612c5f610ce6875163ffffffff1690565b03612c755750612b4192610c95612b2792612612565b915050612bae91612c93612c87610f6f565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff88168286015261298c565b5050612bec91612ccc612c87610f6f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516602083015261298c565b905b828110612d0357505090565b9091808216906001818418811c8301809311612d80575b60e060005263ffffffff80847f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f01541690861610600014612d5f575050915b90612cf7565b909392508101809111612d73575b90612d59565b612d7b612592565b612d6d565b612d88612592565b612d1a565b91905b838210612d9d5750505090565b909192808316906001818518811c8301809311612dfe575b60008681526020902083015463ffffffff9081169085161015612ddd575050925b9190612d90565b909493508101809111612df1575b91612dd6565b612df9612592565b612deb565b612e06612592565b612db5565b603a55565b9161054e9391612e1f93612fb1565b919091612e69565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60051115612e6157565b6106a3612e27565b612e7281612e57565b80612e7a5750565b612e8381612e57565b60018103612ed05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b612ed981612e57565b60028103612f265760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80612f32600392612e57565b14612f3957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506040513d6000823e3d90fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116130355791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613028575b81516001600160a01b03811615613022579190565b50600190565b613030612fa4565b61300d565b50505050600090600390565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527ff63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce6160408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176130e9575b60405251902090565b6130f1610e89565b6130e0565b6130fe613041565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526080810181811067ffffffffffffffff8211176130e95760405251902090565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8115613193570490565b61319b613159565b0490565b80156132d9578061327261326b61326161325761324d61324361323961322f600161054e9a6000908b60801c806132cd575b508060401c806132c0575b508060201c806132b3575b508060101c806132a6575b508060081c80613299575b508060041c8061328c575b508060021c8061327f575b50821c613278575b811c1b613228818b613189565b0160011c90565b613228818a613189565b6132288189613189565b6132288188613189565b6132288187613189565b6132288186613189565b6132288185613189565b8092613189565b906132df565b810161321b565b6002915091019038613213565b6004915091019038613208565b60089150910190386131fd565b60109150910190386131f2565b60209150910190386131e7565b60409150910190386131dc565b915050608090386131d1565b50600090565b90808210156132ec575090565b905090565b63ffffffff90818111613302571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b908160209103126103c1575161054e81610685565b6000906040517f6352211e0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816133f7575b506133f35750565b9150565b61341991925060203d8111613420575b6134118183610f2e565b81019061336c565b90386133eb565b503d613407565b60041115612e6157565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e6135bf575b811561359f575b50156135355761349d9b8d61349460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b6134ff576137a9565b6134a357565b6134d07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6135306101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b6137a9565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816135b1575b5038613459565b6001915060ff1614386135aa565b600160ff8216109150613452565b6135d681613427565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b9190811015613620575b60061b0190565b6136286128ae565b613619565b3561054e816111b1565b818102929181159184041417156125d057565b90602090613690813561365c81610685565b84906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b013561369b816111b1565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b68010000000000000000821161379c575b60385482603855808310613755575b5060386000527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561996000915b8383106137395750505050565b600160408261374983948661364a565b0192019201919061372c565b600060388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b828110613791575050613701565b818155600101613783565b6137a4610e89565b6136f2565b906137bd919c9b979892969c999599613b62565b63ffffffff811615613ac757811590811580613abe575b613a94576103e861ffff861611613a6a5761382a907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b15613a59575080613a49575061383f83613427565b60038303613a1f5761385361388e92603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b61389781613427565b80613a10575b506001600160a01b038116613993575b506001809215151461394e575b836138c6575b50509050565b60009182905b85821061391a57505061251c92936138e3916136e1565b116138f0578038806138c0565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b6139468294613940613939602061393386978c8a61360f565b0161362d565b61ffff1690565b906125d8565b9301906138cc565b61398e7001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b6138ba565b613a0a906139d66f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b6001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b386138ad565b613a19906135cd565b3861389d565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b61388e92612e0b61385392603455565b6033555061388e9161385390603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b508315156137d4565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b15613af857565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b90613b7d60ff60005460081c16613b7881613af1565b613af1565b815167ffffffffffffffff8111613c95575b613ba381613b9e607854613ca2565b613cf5565b602080601f8311600114613be4575081906106a394600092613bd9575b50506000198260011b9260031b1c191617607855613dd7565b015190503880613bc0565b9192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416613c3660786000527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac490565b936000905b828210613c7d5750509160019391856106a397969410613c64575b505050811b01607855613dd7565b015160001960f88460031b161c19169055388080613c56565b80600186978294978701518155019601940190613c3b565b613c9d610e89565b613b8f565b90600182811c92168015613ceb575b6020831014613cbc57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691613cb1565b601f8111613d01575050565b600090607882527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac4906020601f850160051c83019410613d5c575b601f0160051c01915b828110613d5157505050565b818155600101613d45565b9092508290613d3c565b601f8111613d72575050565b600090607982527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d791906020601f850160051c83019410613dcd575b601f0160051c01915b828110613dc257505050565b818155600101613db6565b9092508290613dad565b90815167ffffffffffffffff8111613edf575b613dfe81613df9607954613ca2565b613d66565b602080601f8311600114613e395750819293600092613e2e575b50506000198260011b9260031b1c191617607955565b015190503880613e18565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831694613e8a60796000527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d79190565b926000905b878210613ec7575050836001959610613eae575b505050811b01607955565b015160001960f88460031b161c19169055388080613ea3565b80600185968294968601518155019501930190613e8f565b613ee7610e89565b613dea565b906001600160a01b0382168015613f5157600052607b60205260406000205491600160ff60455460301c16613f2081613427565b14613f285750565b91613f4a61054e92936001600160a01b03166000526041602052604060002090565b54906125d8565b608460405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b81600052607c602052614000816040600020906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6001600160a01b038061401284612679565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b6001600160a01b03918281167388899dc0b84c6e726840e00dfb94abc6248825ec81146140b857731e0049783f008a0085193e00003d00cd54003c71146140b05760ff926140ab9216600052607d6020526040600020906001600160a01b0316600052602052604060002090565b541690565b505050600190565b50505050600190565b156140c857565b608460405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b61413b82612679565b916001600160a01b039081831692828516841494851561417b575b50508315614165575b50505090565b6141719192935061269b565b161438808061415f565b61418692955061403d565b923880614156565b1561419557565b608460405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b6142239261420c81612679565b6001600160a01b038381169590918216861461418e565b83168015614358576106a39461423983856143c1565b61425b8161425561424986612679565b6001600160a01b031690565b1461418e565b61429a61427284600052607c602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b6142b7846001600160a01b0316600052607b602052604060002090565b60001981540190556142dc856001600160a01b0316600052607b602052604060002090565b6001815401905561432e856142fb85600052607a602052604060002090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4614433565b608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b031615159081614404575b506143da57565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b9050600052604360205260ff604060002054168015614424575b386143d3565b5060ff60455460801c1661441e565b614476906001600160a01b038091169081156144d3575b8084169182156144c4575b60005260de60205280604060002054169160005260406000205416906123e0565b61ffff60455460481c16908161448a575050565b61449390613eec565b1161449a57565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b6144cc6127de565b5050614455565b6144db61277e565b505061444a565b6144ea61277e565b50506144766001600160a01b0380831690811561453d575b60de6020527f7feac6ef4894db443b6046f934d8dffe8af4812f9f4b307224f533cf30c9fb62546000928352604090922054811691166123e0565b6145456127de565b5050614502565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8061457261281b565b16906001820180921161459c575b614589436132f1565b90808311612513576144ea921690612ab3565b6145a4612592565b614580565b908160209103126103c1575161054e81610397565b909261054e94936080936001600160a01b038092168452166020830152604082015281606082015201906104fa565b3d15614618573d906145fe826110d2565b9161460c6040519384610f2e565b82523d6000602084013e565b606090565b92909190823b156140b8576146719260209260006001600160a01b036040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c855233600486016145be565b0393165af16000918161472a575b506147045761468c6145ed565b805190816146ff5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b61474c91925060203d8111614753575b6147448183610f2e565b8101906145a9565b903861467f565b503d61473a565b1561476157565b606460405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b6001600160a01b03811691821561486d576106a3926147e36147dd83600052607a6020526001600160a01b0360406000205416151590565b1561475a565b6148066147dd83600052607a6020526001600160a01b0360406000205416151590565b614823836001600160a01b0316600052607b602052604060002090565b60018154019055614842836142fb84600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46144e2565b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b906148ba615721565b604580549260ff8460301c166148cf81613427565b6108cf5763ffffffff938480821691858301809311614a37575b60581c16106108a557600091825b84811061490657505050505050565b81549063ffffffff1960019288848183160116918291161784556001600160a01b03851680156149f45761495f61495a61495684600052607a6020526001600160a01b0360406000205416151590565b1590565b61475a565b61498561495a61495684600052607a6020526001600160a01b0360406000205416151590565b6149a2866001600160a01b0316600052607b602052604060002090565b8481540190556149c0866142fb84600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46149ee8461454c565b016148f7565b606460405162461bcd60e51b8152602080600483015260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b614a3f612592565b6148e9565b90614a4d615721565b60455490600160ff8360301c16614a6381613427565b036108cf5763ffffffff9182614a7b838284166125d8565b9160581c16106108a557614b0591614aef91600243016001614ab0876001600160a01b03166000526041602052604060002090565b0155614acf856001600160a01b03166000526041602052604060002090565b81815401905516614ae560455463ffffffff1690565b0163ffffffff1690565b63ffffffff1663ffffffff196045541617604555565b60455460481c61ffff16908161448a575050565b9190805b614b2657505050565b614b308183614d15565b906001600160a01b0384169182156149f45760001992614b6c61495a61495684600052607a6020526001600160a01b0360406000205416151590565b614b9261495a61495684600052607a6020526001600160a01b0360406000205416151590565b614baf866001600160a01b0316600052607b602052604060002090565b60018154019055614bce866142fb84600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4614bfd846144e2565b0180614b1d565b9290805b614c125750505050565b614c1c8184614d15565b906001600160a01b0385169182156149f4578060001993614c5961495a61495684600052607a6020526001600160a01b0360406000205416151590565b614c7f61495a61495684600052607a6020526001600160a01b0360406000205416151590565b614c9c886001600160a01b0316600052607b602052604060002090565b60018154019055614cbb886142fb84600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a483614ceb876144e2565b614cf8575b500180614c08565b611502614d0f916000526043602052604060002090565b38614cf0565b906040519060208201928352604082015260408152614d3381610ef6565b51902063ffffffff60455460581c1690614d568280159283614d9f575b066125c2565b614d7681600052607a6020526001600160a01b0360406000205416151590565b15614d99578260019183614d8c575b0601614d56565b614d94613159565b614d85565b92915050565b614da7613159565b614d50565b90614db5615721565b604554600260ff8260301c16614dca81613427565b036108cf5763ffffffff8082169183518301809311614df6575b60581c16106108a5576106a391614e25565b614dfe612592565b614de4565b6020918151811015614e18575b60051b010190565b614e206128ae565b614e10565b81516045805463ffffffff19811663ffffffff9182168285160182161782559391929160005b848110614e5a57505050505050565b614e648183614e03565b519081158015614eaf575b614e8557614e7f600192866147a5565b01614e4b565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b5086845460581c168211614e6f565b15614ec557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000906040517f713562fe0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816133f757506133f35750565b6106a3611415613381565b908092918237016000815290565b6020908260405193849283378101604281520301902090565b91909163ffffffff808094169116019182116125d057565b949390959698979198841561534457614fdd8382614f93565b614fe88682546125d8565b905581614ff58483614f93565b541161531a576045549363ffffffff94615011878783166125d8565b868260581c16106108a55760201c60ff1661502b81612e57565b156152f05760409a8b519384898c60208301938686469430956150d1968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09586810182526151049082610f2e565b519020615110906153ab565b61511b36878661111b565b6151249161536e565b6001600160a01b031673c0ffee06ce3d6689305035601a055a96acd619c681141590816152db575b506152b25715615292575034615269575b60455460301c60ff1661516f81613427565b600281036151b757505050505082510361518e576106a3939450615510565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b9091929396506151c981969596613427565b600181036152215750916151f6615202614aef9361521c956106a39b9c5193849160208301968791614f85565b03908101835282610f2e565b51902094841661521760455463ffffffff1690565b614fac565b614c04565b9394955050505061523181613427565b615240576106a39394506153ee565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b8581156152a8575b6152a3916158cd565b61515d565b603a54915061529a565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b90506152e8614249613381565b14153861514c565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b815161054e92612e1f92916041036153a15761539d916020820151906060604084015193015160001a90612fb1565b9091565b5050600090600290565b60405160208101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c81526153e881610ef6565b51902090565b91600090815b838110615402575050505050565b60459081549163ffffffff1963ffffffff93600194858183160116918291161782556001600160a01b03881680156149f45761545a61495a61495684600052607a6020526001600160a01b0360406000205416151590565b61548061495a61495684600052607a6020526001600160a01b0360406000205416151590565b61549d896001600160a01b0316600052607b602052604060002090565b8581540190556154bb896142fb84600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4836154ea8861454c565b6154f6575b50016153f4565b6115026114ec61550a925463ffffffff1690565b386154ef565b8161551a91614e25565b805191615525575050565b600090815b8381106155375750505050565b6155418183614e03565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790550161552a565b9061ffff809216612710039182116125d057565b9060ff6155b3826001600160a01b03166000526039602052604060002090565b5416156156df576155e56155da826001600160a01b03166000526039602052604060002090565b5460181c61ffff1690565b9161561a615614615609846001600160a01b03166000526039602052604060002090565b5460081c61ffff1690565b9361557f565b9261563761562f603a5461ffff809716613637565b612710900490565b61564183826158cd565b6001600160a01b038416948561565957505050505050565b6156ad936156726156779361562f936156a59616613637565b613637565b9261568c615687856037546125d8565b603755565b6001600160a01b03166000526036602052604060002090565b9182546125d8565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674600080a2388080808080612230565b6000805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff16929061561a9061561490615609565b60455460201c60ff1661573381612e57565b6002810361573e5750565b61574781612e57565b600381036157c15750603d5442106157975761578d6402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6106a36000603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b806157cd600492612e57565b0361580e57603d54421061579757603e5442106106a35760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff166158935780800460011481151715615886575b340361585c57565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b61588e612592565b615854565b80156158ca5780806106a392046001036158bd575b6001600160a01b0360405416309033906158f7565b6158c5612592565b6158a8565b50565b60455460781c60ff166158e4579061585491613637565b801561240e576106a3916158a891613637565b906000806159a29460405194602097888701957f23b872dd0000000000000000000000000000000000000000000000000000000087526001600160a01b03938480921660248a015216604488015260648701526064865261595786610f12565b16926040519461596686610eda565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161599c6145ed565b91615a46565b805190816159af57505050565b82806159bf938301019101615a31565b156159c75750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b908160209103126103c1575161054e816111cb565b91929015615aa75750815115615a5a575090565b3b15615a635790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015615aba5750805190602001fd5b610e329060405191829162461bcd60e51b83526004830161053d565b60455460281c60ff16615ae881613427565b60018103615b8757506040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa8015615b7a575b615b535750565b6158ca9060203d8111615b73575b615b6b8183610f2e565b810190615a31565b503d615b61565b615b82612fa4565b615b4c565b615b9081613427565b15615b985750565b6daaeb6d7670e522a718067333cd4e803b615bb1575050565b803b156103c1576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb6602482015260008160448183865af19081615cae575b501561240e57615c9d91602091615c51650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390921660248301529092839190829081906044820190565b03915afa8015615b7a57615b535750565b80615cbb615cc192610eb9565b806104cc565b38615c0f565b50600036818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e15615d02573d90f35b3d90fdfea264697066735822122073fd115ab1d0334518b04cb893290eef2bf9c1f72a28fcac1d27cd63b9e6093464736f6c63430008110033000000000000000000000000ce8ede9c1aac0b9629b3bd9aaf52099d3ed80b4d0000000000000000000000002269bceb3f4e0aa53d2fc43b1b7c5c5d13b119a5