[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AddressNotAllowlisted", "type": "error" }, { "inputs": [], "name": "AllowlistMintClosed", "type": "error" }, { "inputs": [], "name": "CannotBeNullAddress", "type": "error" }, { "inputs": [], "name": "CapExceeded", "type": "error" }, { "inputs": [], "name": "ERC20CappedInvalidValue", "type": "error" }, { "inputs": [], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [], "name": "ERC20TokenNotApproved", "type": "error" }, { "inputs": [], "name": "ERC20TransferFailed", "type": "error" }, { "inputs": [], "name": "ExcessiveOwnedMints", "type": "error" }, { "inputs": [], "name": "InvalidInputValue", "type": "error" }, { "inputs": [], "name": "InvalidPayment", "type": "error" }, { "inputs": [], "name": "InvalidTeamChange", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NoStateChange", "type": "error" }, { "inputs": [], "name": "NotMaintainer", "type": "error" }, { "inputs": [], "name": "PublicMintingClosed", "type": "error" }, { "inputs": [], "name": "TransactionCapExceeded", "type": "error" }, { "inputs": [], "name": "ValueCannotBeZero", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "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": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "PRICE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PROVIDER_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_capEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_erc20TokenContract", "type": "address" }, { "internalType": "bool", "name": "_isActive", "type": "bool" }, { "internalType": "uint256", "name": "_chargeAmountInTokens", "type": "uint256" } ], "name": "addOrUpdateERC20ContractAsPayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "addToTeam", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "adminMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_tos", "type": "address[]" }, { "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "adminMintBulk", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "canAccountMintAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "canMintAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "canMintBatch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "chargeAmountForERC20", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "closeMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_newPayables", "type": "address[]" }, { "internalType": "uint256[]", "name": "_newFees", "type": "uint256[]" } ], "name": "definePayables", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableAllowlistOnlyMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "disableERC20ContractAsPayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableERC20OnlyMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableAllowlistOnlyMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "enableERC20ContractAsPayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableERC20OnlyMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "erc20Payable", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_count", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inAllowlistMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inPublicMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "inTeam", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "isAllowlisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "isApprovedForERC20Payments", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMintsPerTxn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWalletMints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "merkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintBatchSizeEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintCapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintMany", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "mintManyAL", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "mintManyERC20", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" }, { "internalType": "address", "name": "_erc20TokenContract", "type": "address" } ], "name": "mintManyERC20AL", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "mintedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "onlyAllowlistMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "onlyERC20MintingMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openAllowlistMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "openPublicMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "payableAddressCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "payableAddresses", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "payableFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "removeFromTeam", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_capStatus", "type": "bool" } ], "name": "setCapStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newErc20Payable", "type": "address" } ], "name": "setERC20PayableAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxBatchSize", "type": "uint256" } ], "name": "setMaxBatchSize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_newStatus", "type": "bool" } ], "name": "setMaxBatchSizeStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newMintCap", "type": "uint256" } ], "name": "setMintCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_newStatus", "type": "bool" } ], "name": "setMintCapStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeInWei", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setProviderFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newCap", "type": "uint256" } ], "name": "setSupplyCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_newMerkleRoot", "type": "bytes32" } ], "name": "updateMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenContract", "type": "address" }, { "internalType": "uint256", "name": "_amountToWithdraw", "type": "uint256" } ], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040525f600d556602c2ad68fd9000600e555f60105f6101000a81548160ff0219169083151502179055505f601660016101000a81548160ff0219169083151502179055505f601660026101000a81548160ff021916908315150217905550600160ff1660809060ff16815250348015610079575f80fd5b506040516152bc3803806152bc833981810160405281019061009b91906102f9565b818181600390816100ac919061057c565b5080600490816100bc919061057c565b5050506100db6100d06100e260201b60201c565b6100e960201b60201c565b505061064b565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61020b826101c5565b810181811067ffffffffffffffff8211171561022a576102296101d5565b5b80604052505050565b5f61023c6101ac565b90506102488282610202565b919050565b5f67ffffffffffffffff821115610267576102666101d5565b5b610270826101c5565b9050602081019050919050565b8281835e5f83830152505050565b5f61029d6102988461024d565b610233565b9050828152602081018484840111156102b9576102b86101c1565b5b6102c484828561027d565b509392505050565b5f82601f8301126102e0576102df6101bd565b5b81516102f084826020860161028b565b91505092915050565b5f806040838503121561030f5761030e6101b5565b5b5f83015167ffffffffffffffff81111561032c5761032b6101b9565b5b610338858286016102cc565b925050602083015167ffffffffffffffff811115610359576103586101b9565b5b610365858286016102cc565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103bd57607f821691505b6020821081036103d0576103cf610379565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103f7565b61043c86836103f7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61048061047b61047684610454565b61045d565b610454565b9050919050565b5f819050919050565b61049983610466565b6104ad6104a582610487565b848454610403565b825550505050565b5f90565b6104c16104b5565b6104cc818484610490565b505050565b5b818110156104ef576104e45f826104b9565b6001810190506104d2565b5050565b601f82111561053457610505816103d6565b61050e846103e8565b8101602085101561051d578190505b610531610529856103e8565b8301826104d1565b50505b505050565b5f82821c905092915050565b5f6105545f1984600802610539565b1980831691505092915050565b5f61056c8383610545565b9150826002028217905092915050565b6105858261036f565b67ffffffffffffffff81111561059e5761059d6101d5565b5b6105a882546103a6565b6105b38282856104f3565b5f60209050601f8311600181146105e4575f84156105d2578287015190505b6105dc8582610561565b865550610643565b601f1984166105f2866103d6565b5f5b82811015610619578489015182556001820191506020850194506020810190506105f4565b868310156106365784890151610632601f891682610545565b8355505b6001600288020188555050505b505050505050565b608051614c5c6106605f395f5050614c5c5ff3fe608060405260043610610425575f3560e01c806388993c8111610228578063b0cfbf161161012d578063dd62ed3e116100b5578063f2fde38b11610079578063f2fde38b14610f81578063f623bb8b14610fa9578063f82fa75614610fd3578063f8c0fd2014610ffd578063fbbf8cc31461101357610425565b8063dd62ed3e14610e8f578063dfdedf6914610ecb578063e58306f914610ef3578063e6c6990a14610f1b578063e757223014610f4557610425565b8063c3cb97c6116100fc578063c3cb97c614610dbf578063c6ee6e3514610de7578063cacf084214610e03578063d266f3a914610e2b578063d83ae33214610e6757610425565b8063b0cfbf1614610d1d578063b6a3f59a14610d59578063b94b237614610d81578063c326876814610d9757610425565b8063a1af10ca116101b0578063a9059cbb1161017f578063a9059cbb14610c4b578063a91bd1a914610c87578063ad1203dc14610caf578063af54001e14610ccb578063afb16d1814610cf557610425565b8063a1af10ca14610b83578063a1db978214610bbf578063a457c2d714610be7578063a7593fb714610c2357610425565b80638da5cb5b116101f75780638da5cb5b14610ab55780638f770ad014610adf57806391b7f5ed14610b0957806395d89b4114610b3157806398ad441714610b5b57610425565b806388993c8114610a0f578063891bbe7314610a3957806389f26d5814610a755780638d859f3e14610a8b57610425565b80634070a0c91161032e578063627255df116102b657806379ab3c891161028557806379ab3c891461097b57806379cc6790146109915780637fb8c6d3146109b9578063853828b6146109e357806387491c60146109f957610425565b8063627255df146108d75780636d3de8061461091357806370a0823114610929578063715018a61461096557610425565b8063464c3428116102fd578063464c34281461081757806346f41ed51461083f5780634783f0ef146108695780634c23ce91146108915780635e830656146108bb57610425565b80634070a0c91461078957806342966c68146107b157806343696f18146107d957806345f7e06e1461080157610425565b806328ff1b51116103b15780633300678611610380578063330067861461068157806334d00766146106bd57806339509351146106e75780633d3f9c57146107235780633e07311c1461075f57610425565b806328ff1b51146105dd5780632b26a6bf146106055780632eb4a7ab1461062d578063313ce5671461065757610425565b80631963d0cc116103f85780631963d0cc146104f557806320fab1421461051f5780632181384e1461054957806323b872dd14610565578063286c8137146105a157610425565b806306fdde03146104295780630825850a14610453578063095ea7b31461048f57806318160ddd146104cb575b5f80fd5b348015610434575f80fd5b5061043d61104f565b60405161044a9190613edf565b60405180910390f35b34801561045e575f80fd5b5061047960048036038101906104749190613f9d565b6110df565b6040516104869190613ff5565b60405180910390f35b34801561049a575f80fd5b506104b560048036038101906104b09190613f9d565b61111e565b6040516104c29190613ff5565b60405180910390f35b3480156104d6575f80fd5b506104df611140565b6040516104ec919061401d565b60405180910390f35b348015610500575f80fd5b50610509611149565b6040516105169190613ff5565b60405180910390f35b34801561052a575f80fd5b5061053361115e565b6040516105409190613ff5565b60405180910390f35b610563600480360381019061055e9190614097565b611170565b005b348015610570575f80fd5b5061058b6004803603810190610586919061411b565b6115c5565b6040516105989190613ff5565b60405180910390f35b3480156105ac575f80fd5b506105c760048036038101906105c2919061416b565b6115f3565b6040516105d4919061401d565b60405180910390f35b3480156105e8575f80fd5b5061060360048036038101906105fe919061438e565b611613565b005b348015610610575f80fd5b5061062b6004803603810190610626919061416b565b61166f565b005b348015610638575f80fd5b50610641611681565b60405161064e919061441c565b60405180910390f35b348015610662575f80fd5b5061066b611687565b6040516106789190614450565b60405180910390f35b34801561068c575f80fd5b506106a760048036038101906106a29190614469565b61168f565b6040516106b49190613ff5565b60405180910390f35b3480156106c8575f80fd5b506106d161174e565b6040516106de919061401d565b60405180910390f35b3480156106f2575f80fd5b5061070d60048036038101906107089190613f9d565b611757565b60405161071a9190613ff5565b60405180910390f35b34801561072e575f80fd5b50610749600480360381019061074491906144c6565b61178d565b6040516107569190613ff5565b60405180910390f35b34801561076a575f80fd5b506107736117e8565b604051610780919061401d565b60405180910390f35b348015610794575f80fd5b506107af60048036038101906107aa919061416b565b6117ee565b005b3480156107bc575f80fd5b506107d760048036038101906107d2919061416b565b611800565b005b3480156107e4575f80fd5b506107ff60048036038101906107fa91906144c6565b611814565b005b34801561080c575f80fd5b50610815611919565b005b348015610822575f80fd5b5061083d600480360381019061083891906144c6565b611958565b005b34801561084a575f80fd5b506108536119ba565b6040516108609190613ff5565b60405180910390f35b348015610874575f80fd5b5061088f600480360381019061088a919061451b565b6119cc565b005b34801561089c575f80fd5b506108a5611a19565b6040516108b29190613ff5565b60405180910390f35b6108d560048036038101906108d09190613f9d565b611a48565b005b3480156108e2575f80fd5b506108fd60048036038101906108f8919061416b565b611c2d565b60405161090a9190613ff5565b60405180910390f35b34801561091e575f80fd5b50610927611c59565b005b348015610934575f80fd5b5061094f600480360381019061094a91906144c6565b611c7c565b60405161095c919061401d565b60405180910390f35b348015610970575f80fd5b50610979611cc1565b005b348015610986575f80fd5b5061098f611cd4565b005b34801561099c575f80fd5b506109b760048036038101906109b29190613f9d565b611cf8565b005b3480156109c4575f80fd5b506109cd611d18565b6040516109da9190614555565b60405180910390f35b3480156109ee575f80fd5b506109f7611d3d565b005b348015610a04575f80fd5b50610a0d611d89565b005b348015610a1a575f80fd5b50610a23611dc7565b604051610a309190613ff5565b60405180910390f35b348015610a44575f80fd5b50610a5f6004803603810190610a5a919061416b565b611df6565b604051610a6c9190614555565b60405180910390f35b348015610a80575f80fd5b50610a89611e31565b005b348015610a96575f80fd5b50610a9f611e55565b604051610aac919061401d565b60405180910390f35b348015610ac0575f80fd5b50610ac9611e5b565b604051610ad69190614555565b60405180910390f35b348015610aea575f80fd5b50610af3611e83565b604051610b00919061401d565b60405180910390f35b348015610b14575f80fd5b50610b2f6004803603810190610b2a919061416b565b611eaf565b005b348015610b3c575f80fd5b50610b45611ec1565b604051610b529190613edf565b60405180910390f35b348015610b66575f80fd5b50610b816004803603810190610b7c9190614598565b611f51565b005b348015610b8e575f80fd5b50610ba96004803603810190610ba491906144c6565b611f76565b604051610bb69190613ff5565b60405180910390f35b348015610bca575f80fd5b50610be56004803603810190610be09190613f9d565b612034565b005b348015610bf2575f80fd5b50610c0d6004803603810190610c089190613f9d565b6121cc565b604051610c1a9190613ff5565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c44919061416b565b612238565b005b348015610c56575f80fd5b50610c716004803603810190610c6c9190613f9d565b6122c2565b604051610c7e9190613ff5565b60405180910390f35b348015610c92575f80fd5b50610cad6004803603810190610ca891906144c6565b6122e4565b005b610cc96004803603810190610cc491906145c3565b61241a565b005b348015610cd6575f80fd5b50610cdf612642565b604051610cec919061401d565b60405180910390f35b348015610d00575f80fd5b50610d1b6004803603810190610d169190614634565b61264b565b005b348015610d28575f80fd5b50610d436004803603810190610d3e919061416b565b6126d6565b604051610d509190613ff5565b60405180910390f35b348015610d64575f80fd5b50610d7f6004803603810190610d7a919061416b565b612718565b005b348015610d8c575f80fd5b50610d9561276b565b005b348015610da2575f80fd5b50610dbd6004803603810190610db89190614598565b61278e565b005b348015610dca575f80fd5b50610de56004803603810190610de09190614598565b6127b2565b005b610e016004803603810190610dfc919061468e565b6127d6565b005b348015610e0e575f80fd5b50610e296004803603810190610e2491906144c6565b612be8565b005b348015610e36575f80fd5b50610e516004803603810190610e4c91906144c6565b612c49565b604051610e5e919061401d565b60405180910390f35b348015610e72575f80fd5b50610e8d6004803603810190610e8891906146de565b612cd1565b005b348015610e9a575f80fd5b50610eb56004803603810190610eb0919061472e565b612d79565b604051610ec2919061401d565b60405180910390f35b348015610ed6575f80fd5b50610ef16004803603810190610eec91906144c6565b612dfb565b005b348015610efe575f80fd5b50610f196004803603810190610f149190613f9d565b612efe565b005b348015610f26575f80fd5b50610f2f612f95565b604051610f3c9190613ff5565b60405180910390f35b348015610f50575f80fd5b50610f6b6004803603810190610f66919061416b565b612fa7565b604051610f78919061401d565b60405180910390f35b348015610f8c575f80fd5b50610fa76004803603810190610fa291906144c6565b613024565b005b348015610fb4575f80fd5b50610fbd61309d565b604051610fca919061401d565b60405180910390f35b348015610fde575f80fd5b50610fe76130a3565b604051610ff49190613ff5565b60405180910390f35b348015611008575f80fd5b506110116130b9565b005b34801561101e575f80fd5b50611039600480360381019061103491906144c6565b6130f8565b604051611046919061401d565b60405180910390f35b60606003805461105e90614799565b80601f016020809104026020016040519081016040528092919081815260200182805461108a90614799565b80156110d55780601f106110ac576101008083540402835291602001916110d5565b820191905f5260205f20905b8154815290600101906020018083116110b857829003601f168201915b5050505050905090565b5f600a5f9054906101000a900460ff166110fc5760019050611118565b600b5482611109856130f8565b61111391906147f6565b111590505b92915050565b5f8061112861313e565b9050611135818585613145565b600191505092915050565b5f600254905090565b5f600a5f9054906101000a900460ff16905090565b60075f9054906101000a900460ff1681565b611178611a19565b6111ae576040517f4e39100800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400008410156111f0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fb85848461168f565b611231576040517f97b24df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123a84611c2d565b611270576040517f93eeb41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61127a85856110df565b6112b0576040517fcd7cece200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b9846126d6565b6112ef576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54341461132a576040517f3c6b4b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113338161178d565b611369576040517fd8a0393200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8461137483612c49565b61137e9190614829565b90505f829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b81526004016113be9190614555565b602060405180830381865afa1580156113d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fd919061487e565b1015611435576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e89306040518363ffffffff1660e01b81526004016114719291906148a9565b602060405180830381865afa15801561148c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b0919061487e565b10156114e8576040517f2fc50d6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166323b872dd8930866040518463ffffffff1660e01b8152600401611526939291906148d0565b6020604051808303815f875af1158015611542573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115669190614919565b90508061159f576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a76132f6565b6115b18888613352565b6115bb88886133a0565b5050505050505050565b5f806115cf61313e565b90506115dc8582856134ee565b6115e7858585613570565b60019150509392505050565b60148181548110611602575f80fd5b905f5260205f20015f915090505481565b61161b6137ca565b60125f6116289190613d46565b60145f6116359190613d64565b816012908051906020019061164b929190613d82565b508060149080519060200190611662929190613e09565b5081516015819055505050565b6116776137ca565b80600c8190555050565b600f5481565b5f6012905090565b5f805f1b600f54036116cd576040517fc70d18aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f846040516020016116df9190614989565b6040516020818303038152906040528051906020012090506117448484808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f82011690508083019250505050505050600f5483613869565b9150509392505050565b5f600b54905090565b5f8061176161313e565b90506117828185856117738589612d79565b61177d91906147f6565b613145565b600191505092915050565b5f6001151560115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff161515149050919050565b60155481565b6117f66137ca565b80600b8190555050565b61181161180b61313e565b8261387f565b50565b61181c613a39565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611881576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61188a81611f76565b156118c1576040517f8afaeb9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6119216137ca565b6001601660016101000a81548160ff0219169083151502179055505f601660026101000a81548160ff021916908315150217905550565b6119606137ca565b600160115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b60165f9054906101000a900460ff1681565b6119d46137ca565b600f548103611a0f576040517fa28a88c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f8190555050565b5f601660029054906101000a900460ff168015611a435750601660019054906101000a900460ff16155b905090565b60165f9054906101000a900460ff1615611a8e576040517fce2f476000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000811015611ad0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ad8611dc7565b611b0e576040517fce2f476000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1781611c2d565b611b4d576040517f93eeb41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b56816126d6565b611b8c576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b9682826110df565b611bcc576040517fcd7cece200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bd581612fa7565b3414611c0d576040517f3c6b4b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c156132f6565b611c1f8282613352565b611c2982826133a0565b5050565b5f600a60019054906101000a900460ff16611c4b5760019050611c54565b600c5482111590505b919050565b611c616137ca565b5f60105f6101000a81548160ff021916908315150217905550565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611cc9613a39565b611cd25f613ab7565b565b611cdc6137ca565b600160105f6101000a81548160ff021916908315150217905550565b611d0a82611d0461313e565b836134ee565b611d14828261387f565b5050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d456137ca565b5f4703611d7e576040517fc70d18aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d8747613b7a565b565b611d916137ca565b5f601660026101000a81548160ff0219169083151502179055505f601660016101000a81548160ff021916908315150217905550565b5f601660019054906101000a900460ff168015611df15750601660029054906101000a900460ff16155b905090565b60128181548110611e05575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e396137ca565b600160165f6101000a81548160ff021916908315150217905550565b600d5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60075f9054906101000a900460ff16611ea657611e9f611140565b9050611eac565b60085490505b90565b611eb76137ca565b80600d8190555050565b606060048054611ed090614799565b80601f0160208091040260200160405190810160405280929190818152602001828054611efc90614799565b8015611f475780601f10611f1e57610100808354040283529160200191611f47565b820191905f5260205f20905b815481529060010190602001808311611f2a57829003601f168201915b5050505050905090565b611f596137ca565b80600a60016101000a81548160ff02191690831515021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fdc576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515149050919050565b61203c6137ca565b5f8103612075576040517fc70d18aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120b39190614555565b602060405180830381865afa1580156120ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f2919061487e565b101561212a576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016121869291906149a3565b6020604051808303815f875af11580156121a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c69190614919565b50505050565b5f806121d661313e565b90505f6121e38286612d79565b90508381101561221f576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61222c8286868403613145565b60019250505092915050565b73a9dac8f3aedc55d0fe707b86b8a45d246858d2e173ffffffffffffffffffffffffffffffffffffffff1661226b61313e565b73ffffffffffffffffffffffffffffffffffffffff16146122b8576040517f9b96b05100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e8190555050565b5f806122cc61313e565b90506122d9818585613570565b600191505092915050565b6122ec6137ca565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612351576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123d7576040517fa28a88c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165f9054906101000a900460ff1615612460576040517f4e39100800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400008310156124a2576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124aa611a19565b6124e0576040517f4e39100800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124eb84838361168f565b612521576040517f97b24df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61252a83611c2d565b612560576040517f93eeb41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61256a84846110df565b6125a0576040517fcd7cece200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125a9836126d6565b6125df576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125e883612fa7565b3414612620576040517f3c6b4b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126286132f6565b6126328484613352565b61263c84846133a0565b50505050565b5f600c54905090565b6126536137ca565b670de0b6b3a7640000811015612695576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b82518110156126d1576126c48382815181106126b6576126b56149ca565b5b6020026020010151836133a0565b8080600101915050612697565b505050565b5f60075f9054906101000a900460ff166126f35760019050612713565b6126fb611e83565b82612704611140565b61270e91906147f6565b111590505b919050565b6127206137ca565b612728611140565b811015612761576040517fcc67044500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060088190555050565b6127736137ca565b5f60165f6101000a81548160ff021916908315150217905550565b6127966137ca565b8060075f6101000a81548160ff02191690831515021790555050565b6127ba6137ca565b80600a5f6101000a81548160ff02191690831515021790555050565b670de0b6b3a7640000821015612818576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612821826126d6565b612857576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61285f611dc7565b612895576040517fce2f476000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61289e82611c2d565b6128d4576040517f93eeb41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128de83836110df565b612914576040517fcd7cece200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54341461294f576040517f3c6b4b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129588161178d565b61298e576040517fd8a0393200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8261299983612c49565b6129a39190614829565b90505f829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016129e39190614555565b602060405180830381865afa1580156129fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a22919061487e565b1015612a5a576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e87306040518363ffffffff1660e01b8152600401612a969291906148a9565b602060405180830381865afa158015612ab1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ad5919061487e565b1015612b0d576040517f2fc50d6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166323b872dd8730866040518463ffffffff1660e01b8152600401612b4b939291906148d0565b6020604051808303815f875af1158015612b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8b9190614919565b905080612bc4576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bcc6132f6565b612bd68686613352565b612be086866133a0565b505050505050565b612bf06137ca565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b5f612c538261178d565b612c89576040517fd8a0393200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050919050565b612cd96137ca565b8160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010181905550505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612e03613a39565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e68576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e7181611f76565b612ea7576040517f8afaeb9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b612f066137ca565b670de0b6b3a7640000811015612f48576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f51816126d6565b612f87576040517fa4875a4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f9182826133a0565b5050565b60105f9054906101000a900460ff1681565b5f670de0b6b3a7640000821015612fea576040517fe6d50f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f670de0b6b3a764000083612fff9190614a24565b9050600e5481600d546130129190614829565b61301c91906147f6565b915050919050565b61302c613a39565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613091576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61309a81613ab7565b50565b600e5481565b5f600a60019054906101000a900460ff16905090565b6130c16137ca565b6001601660026101000a81548160ff0219169083151502179055505f601660016101000a81548160ff021916908315150217905550565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131aa576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361320f576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516132e9919061401d565b60405180910390a3505050565b73a9dac8f3aedc55d0fe707b86b8a45d246858d2e173ffffffffffffffffffffffffffffffffffffffff166108fc600e5490811502906040515f60405180830381858888f1935050505015801561334f573d5f803e3d5ffd5b50565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613405576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6134105f8383613c0f565b8060025f82825461342191906147f6565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461347391906147f6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134d7919061401d565b60405180910390a36134ea5f8383613c14565b5050565b5f6134f98484612d79565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461356a578181101561355c576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135698484848403613145565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135d5576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361363a576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613645838383613c0f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156136bf576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461374d91906147f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137b1919061401d565b60405180910390a36137c4848484613c14565b50505050565b5f6137d361313e565b73ffffffffffffffffffffffffffffffffffffffff166137f1611e5b565b73ffffffffffffffffffffffffffffffffffffffff161490505f61381b61381661313e565b611f76565b905081806138265750805b613865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385c90614ac4565b60405180910390fd5b5050565b5f826138758584613c19565b1490509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138e4576040517f8991aa5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6138ef825f83613c0f565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613969576040517f590b7c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f8282546139bd9190614ae2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a21919061401d565b60405180910390a3613a34835f84613c14565b505050565b613a4161313e565b73ffffffffffffffffffffffffffffffffffffffff16613a5f611e5b565b73ffffffffffffffffffffffffffffffffffffffff1614613ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aac90614b5f565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5b601554811015613c0b57613bfe60128281548110613b9d57613b9c6149ca565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606460148481548110613bdb57613bda6149ca565b5b905f5260205f20015485613bef9190614829565b613bf99190614a24565b613c85565b8080600101915050613b7c565b5050565b505050565b505050565b5f808290505f5b8451811015613c7a575f858281518110613c3d57613c3c6149ca565b5b60200260200101519050808311613c5f57613c588382613d32565b9250613c6c565b613c698184613d32565b92505b508080600101915050613c20565b508091505092915050565b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051613caa90614baa565b5f6040518083038185875af1925050503d805f8114613ce4576040519150601f19603f3d011682016040523d82523d5f602084013e613ce9565b606091505b5050905080613d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d2490614c08565b60405180910390fd5b505050565b5f825f528160205260405f20905092915050565b5080545f8255905f5260205f2090810190613d619190613e54565b50565b5080545f8255905f5260205f2090810190613d7f9190613e54565b50565b828054828255905f5260205f20908101928215613df8579160200282015b82811115613df7578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613da0565b5b509050613e059190613e54565b5090565b828054828255905f5260205f20908101928215613e43579160200282015b82811115613e42578251825591602001919060010190613e27565b5b509050613e509190613e54565b5090565b5b80821115613e6b575f815f905550600101613e55565b5090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613eb182613e6f565b613ebb8185613e79565b9350613ecb818560208601613e89565b613ed481613e97565b840191505092915050565b5f6020820190508181035f830152613ef78184613ea7565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f3982613f10565b9050919050565b613f4981613f2f565b8114613f53575f80fd5b50565b5f81359050613f6481613f40565b92915050565b5f819050919050565b613f7c81613f6a565b8114613f86575f80fd5b50565b5f81359050613f9781613f73565b92915050565b5f8060408385031215613fb357613fb2613f08565b5b5f613fc085828601613f56565b9250506020613fd185828601613f89565b9150509250929050565b5f8115159050919050565b613fef81613fdb565b82525050565b5f6020820190506140085f830184613fe6565b92915050565b61401781613f6a565b82525050565b5f6020820190506140305f83018461400e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261405757614056614036565b5b8235905067ffffffffffffffff8111156140745761407361403a565b5b6020830191508360208202830111156140905761408f61403e565b5b9250929050565b5f805f805f608086880312156140b0576140af613f08565b5b5f6140bd88828901613f56565b95505060206140ce88828901613f89565b945050604086013567ffffffffffffffff8111156140ef576140ee613f0c565b5b6140fb88828901614042565b9350935050606061410e88828901613f56565b9150509295509295909350565b5f805f6060848603121561413257614131613f08565b5b5f61413f86828701613f56565b935050602061415086828701613f56565b925050604061416186828701613f89565b9150509250925092565b5f602082840312156141805761417f613f08565b5b5f61418d84828501613f89565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6141cc82613e97565b810181811067ffffffffffffffff821117156141eb576141ea614196565b5b80604052505050565b5f6141fd613eff565b905061420982826141c3565b919050565b5f67ffffffffffffffff82111561422857614227614196565b5b602082029050602081019050919050565b5f61424b6142468461420e565b6141f4565b9050808382526020820190506020840283018581111561426e5761426d61403e565b5b835b8181101561429757806142838882613f56565b845260208401935050602081019050614270565b5050509392505050565b5f82601f8301126142b5576142b4614036565b5b81356142c5848260208601614239565b91505092915050565b5f67ffffffffffffffff8211156142e8576142e7614196565b5b602082029050602081019050919050565b5f61430b614306846142ce565b6141f4565b9050808382526020820190506020840283018581111561432e5761432d61403e565b5b835b8181101561435757806143438882613f89565b845260208401935050602081019050614330565b5050509392505050565b5f82601f83011261437557614374614036565b5b81356143858482602086016142f9565b91505092915050565b5f80604083850312156143a4576143a3613f08565b5b5f83013567ffffffffffffffff8111156143c1576143c0613f0c565b5b6143cd858286016142a1565b925050602083013567ffffffffffffffff8111156143ee576143ed613f0c565b5b6143fa85828601614361565b9150509250929050565b5f819050919050565b61441681614404565b82525050565b5f60208201905061442f5f83018461440d565b92915050565b5f60ff82169050919050565b61444a81614435565b82525050565b5f6020820190506144635f830184614441565b92915050565b5f805f604084860312156144805761447f613f08565b5b5f61448d86828701613f56565b935050602084013567ffffffffffffffff8111156144ae576144ad613f0c565b5b6144ba86828701614042565b92509250509250925092565b5f602082840312156144db576144da613f08565b5b5f6144e884828501613f56565b91505092915050565b6144fa81614404565b8114614504575f80fd5b50565b5f81359050614515816144f1565b92915050565b5f602082840312156145305761452f613f08565b5b5f61453d84828501614507565b91505092915050565b61454f81613f2f565b82525050565b5f6020820190506145685f830184614546565b92915050565b61457781613fdb565b8114614581575f80fd5b50565b5f813590506145928161456e565b92915050565b5f602082840312156145ad576145ac613f08565b5b5f6145ba84828501614584565b91505092915050565b5f805f80606085870312156145db576145da613f08565b5b5f6145e887828801613f56565b94505060206145f987828801613f89565b935050604085013567ffffffffffffffff81111561461a57614619613f0c565b5b61462687828801614042565b925092505092959194509250565b5f806040838503121561464a57614649613f08565b5b5f83013567ffffffffffffffff81111561466757614666613f0c565b5b614673858286016142a1565b925050602061468485828601613f89565b9150509250929050565b5f805f606084860312156146a5576146a4613f08565b5b5f6146b286828701613f56565b93505060206146c386828701613f89565b92505060406146d486828701613f56565b9150509250925092565b5f805f606084860312156146f5576146f4613f08565b5b5f61470286828701613f56565b935050602061471386828701614584565b925050604061472486828701613f89565b9150509250925092565b5f806040838503121561474457614743613f08565b5b5f61475185828601613f56565b925050602061476285828601613f56565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806147b057607f821691505b6020821081036147c3576147c261476c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61480082613f6a565b915061480b83613f6a565b9250828201905080821115614823576148226147c9565b5b92915050565b5f61483382613f6a565b915061483e83613f6a565b925082820261484c81613f6a565b91508282048414831517614863576148626147c9565b5b5092915050565b5f8151905061487881613f73565b92915050565b5f6020828403121561489357614892613f08565b5b5f6148a08482850161486a565b91505092915050565b5f6040820190506148bc5f830185614546565b6148c96020830184614546565b9392505050565b5f6060820190506148e35f830186614546565b6148f06020830185614546565b6148fd604083018461400e565b949350505050565b5f815190506149138161456e565b92915050565b5f6020828403121561492e5761492d613f08565b5b5f61493b84828501614905565b91505092915050565b5f8160601b9050919050565b5f61495a82614944565b9050919050565b5f61496b82614950565b9050919050565b61498361497e82613f2f565b614961565b82525050565b5f6149948284614972565b60148201915081905092915050565b5f6040820190506149b65f830185614546565b6149c3602083018461400e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a2e82613f6a565b9150614a3983613f6a565b925082614a4957614a486149f7565b5b828204905092915050565b7f5465616d3a2063616c6c6572206973206e6f7420746865206f776e6572206f725f8201527f20696e205465616d2e0000000000000000000000000000000000000000000000602082015250565b5f614aae602983613e79565b9150614ab982614a54565b604082019050919050565b5f6020820190508181035f830152614adb81614aa2565b9050919050565b5f614aec82613f6a565b9150614af783613f6a565b9250828203905081811115614b0f57614b0e6147c9565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614b49602083613e79565b9150614b5482614b15565b602082019050919050565b5f6020820190508181035f830152614b7681614b3d565b9050919050565b5f81905092915050565b50565b5f614b955f83614b7d565b9150614ba082614b87565b5f82019050919050565b5f614bb482614b8a565b9150819050919050565b7f5472616e73666572206661696c65642e000000000000000000000000000000005f82015250565b5f614bf2601083613e79565b9150614bfd82614bbe565b602082019050919050565b5f6020820190508181035f830152614c1f81614be6565b905091905056fea2646970667358221220e6b6c7576c5972e13026d71c6ef34c4d0a37773e514f7b14d3adf0851ea3edc564736f6c634300081900330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044b49524f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b49524f00000000000000000000000000000000000000000000000000000000
0xa2646970667358221220e6b6c7576c5972e13026d71c6ef34c4d0a37773e514f7b14d3adf0851ea3edc564736f6c634300081900330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044b49524f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b49524f00000000000000000000000000000000000000000000000000000000