[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "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": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "marketingWalletUpdated", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deadAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deadBlocks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "uint256", "name": "_deadBlocks", "type": "uint256" } ], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransaction", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manualsend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "manualswap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_team", "type": "address" }, { "internalType": "bool", "name": "_enabled", "type": "bool" } ], "name": "setTeamMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "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": "tokensForMarketing", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "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": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" } ], "name": "updateBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMarketingWallet", "type": "address" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxTxnAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" } ], "name": "updateSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "updateSwapEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_whitelist", "type": "address" }, { "internalType": "bool", "name": "isWL", "type": "bool" } ], "name": "whitelistFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff0219169083151502179055505f600a60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600881526020017f617979206c6d616f0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c4d414f000000000000000000000000000000000000000000000000000000008152508160039081620000dc919062000ce3565b508060049081620000ee919062000ce3565b50505062000111620001056200055760201b60201c565b6200055e60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013c8160016200062160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000e2c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000e2c565b6040518363ffffffff1660e01b81526004016200028b92919062000e6d565b6020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000e2c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031660a05160016200062160201b60201c565b6200032b60a05160016200070860201b60201c565b5f6c0a1b9166c6c938f3741d80000090506c0a1b9166c6c938f3741d8000006007819055506c0a1b9166c6c938f3741d80000060098190555060c860075462000375919062000ef2565b600881905550739960c190e07230da888c97899dbfe866a3b5c19f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160135f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f6200045a620007a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004cb620004bd620007a660201b60201c565b6001620007ce60201b60201c565b620004de306001620007ce60201b60201c565b620004f361dead6001620007ce60201b60201c565b6200051562000507620007a660201b60201c565b60016200062160201b60201c565b620005283060016200062160201b60201c565b6200053d61dead60016200062160201b60201c565b6200054f33826200090560201b60201c565b5050620010b2565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006316200055760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000657620007a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a79062000f87565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007de6200055760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000804620007a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008549062000f87565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008f9919062000fc3565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000976576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096d906200102c565b60405180910390fd5b620009895f838362000a7560201b60201c565b8060025f8282546200099c91906200104c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620009f091906200104c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a56919062001097565b60405180910390a362000a715f838362000a7a60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000afb57607f821691505b60208210810362000b115762000b1062000ab6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b38565b62000b81868362000b38565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bcb62000bc562000bbf8462000b99565b62000ba2565b62000b99565b9050919050565b5f819050919050565b62000be68362000bab565b62000bfe62000bf58262000bd2565b84845462000b44565b825550505050565b5f90565b62000c1462000c06565b62000c2181848462000bdb565b505050565b5b8181101562000c485762000c3c5f8262000c0a565b60018101905062000c27565b5050565b601f82111562000c975762000c618162000b17565b62000c6c8462000b29565b8101602085101562000c7c578190505b62000c9462000c8b8562000b29565b83018262000c26565b50505b505050565b5f82821c905092915050565b5f62000cb95f198460080262000c9c565b1980831691505092915050565b5f62000cd3838362000ca8565b9150826002028217905092915050565b62000cee8262000a7f565b67ffffffffffffffff81111562000d0a5762000d0962000a89565b5b62000d16825462000ae3565b62000d2382828562000c4c565b5f60209050601f83116001811462000d59575f841562000d44578287015190505b62000d50858262000cc6565b86555062000dbf565b601f19841662000d698662000b17565b5f5b8281101562000d925784890151825560018201915060208501945060208101905062000d6b565b8683101562000db2578489015162000dae601f89168262000ca8565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000df68262000dcb565b9050919050565b62000e088162000dea565b811462000e13575f80fd5b50565b5f8151905062000e268162000dfd565b92915050565b5f6020828403121562000e445762000e4362000dc7565b5b5f62000e538482850162000e16565b91505092915050565b62000e678162000dea565b82525050565b5f60408201905062000e825f83018562000e5c565b62000e91602083018462000e5c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000efe8262000b99565b915062000f0b8362000b99565b92508262000f1e5762000f1d62000e98565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f6f60208362000f29565b915062000f7c8262000f39565b602082019050919050565b5f6020820190508181035f83015262000fa08162000f61565b9050919050565b5f8115159050919050565b62000fbd8162000fa7565b82525050565b5f60208201905062000fd85f83018462000fb2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001014601f8362000f29565b9150620010218262000fde565b602082019050919050565b5f6020820190508181035f830152620010458162001006565b9050919050565b5f620010588262000b99565b9150620010658362000b99565b925082820190508082111562001080576200107f62000ec5565b5b92915050565b620010918162000b99565b82525050565b5f602082019050620010ac5f83018462001086565b92915050565b60805160a051614829620010f05f395f8181610e7101526116cf01525f8181610b8801528181612f8f0152818161306e015261309501526148295ff3fe60806040526004361061028b575f3560e01c806382aa7c6811610159578063c0246668116100c0578063dd62ed3e11610079578063dd62ed3e146109b2578063e2f45605146109ee578063eba4c33314610a18578063f2fde38b14610a40578063f8b45b0514610a68578063fabb0b4f14610a9257610292565b8063c0246668146108aa578063c18bc195146108d2578063c8c8ebe4146108fa578063d257b34f14610924578063d85ba06314610960578063d9920d8f1461098a57610292565b80639a7a23d6116101125780639a7a23d61461077c578063a457c2d7146107a4578063a9059cbb146107e0578063aacebbe31461081c578063b62496f514610844578063bbc0c7421461088057610292565b806382aa7c6814610686578063881dce60146106ae5780638da5cb5b146106d65780639213691314610700578063924de9b71461072a57806395d89b411461075257610292565b806349bd5a5e116101fd57806370a08231116101b657806370a0823114610590578063715018a6146105cc57806371fc4688146105e2578063751039fc1461060a5780637571336a1461063457806375f0a8741461065c57610292565b806349bd5a5e146104aa5780634a62bb65146104d457806360bba03d146104fe5780636a486a8e146105265780636ddd1713146105505780636fc3eaec1461057a57610292565b80631f3fed8f1161024f5780631f3fed8f1461038c578063203e727e146103b657806323b872dd146103de57806327c8f8351461041a578063313ce56714610444578063395093511461046e57610292565b806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc5780631694505e1461033857806318160ddd1461036257610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610abc565b6040516102b791906135f0565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e191906136a1565b610b4c565b6040516102f391906136f9565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d9190613712565b610b69565b60405161032f91906136f9565b60405180910390f35b348015610343575f80fd5b5061034c610b86565b6040516103599190613798565b60405180910390f35b34801561036d575f80fd5b50610376610baa565b60405161038391906137c0565b60405180910390f35b348015610397575f80fd5b506103a0610bb3565b6040516103ad91906137c0565b60405180910390f35b3480156103c1575f80fd5b506103dc60048036038101906103d791906137d9565b610bb9565b005b3480156103e9575f80fd5b5061040460048036038101906103ff9190613804565b610cc8565b60405161041191906136f9565b60405180910390f35b348015610425575f80fd5b5061042e610dba565b60405161043b9190613863565b60405180910390f35b34801561044f575f80fd5b50610458610dc0565b6040516104659190613897565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f91906136a1565b610dc8565b6040516104a191906136f9565b60405180910390f35b3480156104b5575f80fd5b506104be610e6f565b6040516104cb9190613863565b60405180910390f35b3480156104df575f80fd5b506104e8610e93565b6040516104f591906136f9565b60405180910390f35b348015610509575f80fd5b50610524600480360381019061051f91906138da565b610ea5565b005b348015610531575f80fd5b5061053a610f79565b60405161054791906137c0565b60405180910390f35b34801561055b575f80fd5b50610564610f7f565b60405161057191906136f9565b60405180910390f35b348015610585575f80fd5b5061058e610f92565b005b34801561059b575f80fd5b506105b660048036038101906105b19190613712565b611020565b6040516105c391906137c0565b60405180910390f35b3480156105d7575f80fd5b506105e0611065565b005b3480156105ed575f80fd5b50610608600480360381019061060391906137d9565b6110ec565b005b348015610615575f80fd5b5061061e611212565b60405161062b91906136f9565b60405180910390f35b34801561063f575f80fd5b5061065a600480360381019061065591906138da565b6112af565b005b348015610667575f80fd5b50610670611383565b60405161067d9190613863565b60405180910390f35b348015610691575f80fd5b506106ac60048036038101906106a791906137d9565b6113a8565b005b3480156106b9575f80fd5b506106d460048036038101906106cf91906137d9565b611498565b005b3480156106e1575f80fd5b506106ea6114fa565b6040516106f79190613863565b60405180910390f35b34801561070b575f80fd5b50610714611522565b60405161072191906137c0565b60405180910390f35b348015610735575f80fd5b50610750600480360381019061074b9190613918565b611528565b005b34801561075d575f80fd5b506107666115c1565b60405161077391906135f0565b60405180910390f35b348015610787575f80fd5b506107a2600480360381019061079d91906138da565b611651565b005b3480156107af575f80fd5b506107ca60048036038101906107c591906136a1565b611769565b6040516107d791906136f9565b60405180910390f35b3480156107eb575f80fd5b50610806600480360381019061080191906136a1565b61184f565b60405161081391906136f9565b60405180910390f35b348015610827575f80fd5b50610842600480360381019061083d9190613712565b61186c565b005b34801561084f575f80fd5b5061086a60048036038101906108659190613712565b6119f7565b60405161087791906136f9565b60405180910390f35b34801561088b575f80fd5b50610894611a14565b6040516108a191906136f9565b60405180910390f35b3480156108b5575f80fd5b506108d060048036038101906108cb91906138da565b611a27565b005b3480156108dd575f80fd5b506108f860048036038101906108f391906137d9565b611b49565b005b348015610905575f80fd5b5061090e611c58565b60405161091b91906137c0565b60405180910390f35b34801561092f575f80fd5b5061094a600480360381019061094591906137d9565b611c5e565b60405161095791906136f9565b60405180910390f35b34801561096b575f80fd5b50610974611e03565b60405161098191906137c0565b60405180910390f35b348015610995575f80fd5b506109b060048036038101906109ab91906138da565b611e09565b005b3480156109bd575f80fd5b506109d860048036038101906109d39190613943565b611f2e565b6040516109e591906137c0565b60405180910390f35b3480156109f9575f80fd5b50610a02611fb0565b604051610a0f91906137c0565b60405180910390f35b348015610a23575f80fd5b50610a3e6004803603810190610a3991906137d9565b611fb6565b005b348015610a4b575f80fd5b50610a666004803603810190610a619190613712565b6120dc565b005b348015610a73575f80fd5b50610a7c6121d2565b604051610a8991906137c0565b60405180910390f35b348015610a9d575f80fd5b50610aa66121d8565b604051610ab391906137c0565b60405180910390f35b606060038054610acb906139ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610af7906139ae565b8015610b425780601f10610b1957610100808354040283529160200191610b42565b820191905f5260205f20905b815481529060010190602001808311610b2557829003601f168201915b5050505050905090565b5f610b5f610b586121de565b84846121e5565b6001905092915050565b6015602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60125481565b610bc16121de565b73ffffffffffffffffffffffffffffffffffffffff16610bdf6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c90613a28565b60405180910390fd5b670de0b6b3a76400006103e86001610c4b610baa565b610c559190613a73565b610c5f9190613ae1565b610c699190613ae1565b811015610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290613b81565b60405180910390fd5b670de0b6b3a764000081610cbf9190613a73565b60078190555050565b5f610cd48484846123a8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d1b6121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190613c0f565b60405180910390fd5b610dae85610da66121de565b8584036121e5565b60019150509392505050565b61dead81565b5f6012905090565b5f610e65610dd46121de565b848460015f610de16121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e609190613c2d565b6121e5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b610ead6121de565b73ffffffffffffffffffffffffffffffffffffffff16610ecb6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890613a28565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b600a60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610fd890613c8d565b5f6040518083038185875af1925050503d805f8114611012576040519150601f19603f3d011682016040523d82523d5f602084013e611017565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61106d6121de565b73ffffffffffffffffffffffffffffffffffffffff1661108b6114fa565b73ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890613a28565b60405180910390fd5b6110ea5f612e2f565b565b60135f6110f76121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061117a575061114b6114fa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613ceb565b60405180910390fd5b80600f81905550600f54600e819055506064600e54111561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613d53565b60405180910390fd5b50565b5f61121b6121de565b73ffffffffffffffffffffffffffffffffffffffff166112396114fa565b73ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690613a28565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b6112b76121de565b73ffffffffffffffffffffffffffffffffffffffff166112d56114fa565b73ffffffffffffffffffffffffffffffffffffffff161461132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132290613a28565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113b06121de565b73ffffffffffffffffffffffffffffffffffffffff166113ce6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b90613a28565b60405180910390fd5b80600d819055506b4da085a4aeff26060b2000006007819055506b4da085a4aeff26060b2000006009819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b6114a130611020565b81111580156114af57505f81115b6114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590613dbb565b60405180910390fd5b6114f781612ef2565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6115306121de565b73ffffffffffffffffffffffffffffffffffffffff1661154e6114fa565b73ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613a28565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b6060600480546115d0906139ae565b80601f01602080910402602001604051908101604052809291908181526020018280546115fc906139ae565b80156116475780601f1061161e57610100808354040283529160200191611647565b820191905f5260205f20905b81548152906001019060200180831161162a57829003601f168201915b5050505050905090565b6116596121de565b73ffffffffffffffffffffffffffffffffffffffff166116776114fa565b73ffffffffffffffffffffffffffffffffffffffff16146116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490613a28565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613e49565b60405180910390fd5b6117658282613125565b5050565b5f8060015f6117766121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182790613ed7565b60405180910390fd5b61184461183b6121de565b858584036121e5565b600191505092915050565b5f61186261185b6121de565b84846123a8565b6001905092915050565b60135f6118776121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118fa57506118cb6114fa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613ceb565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6016602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611a2f6121de565b73ffffffffffffffffffffffffffffffffffffffff16611a4d6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90613a28565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b3d91906136f9565b60405180910390a25050565b611b516121de565b73ffffffffffffffffffffffffffffffffffffffff16611b6f6114fa565b73ffffffffffffffffffffffffffffffffffffffff1614611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90613a28565b60405180910390fd5b670de0b6b3a76400006103e86005611bdb610baa565b611be59190613a73565b611bef9190613ae1565b611bf99190613ae1565b811015611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290613f65565b60405180910390fd5b670de0b6b3a764000081611c4f9190613a73565b60098190555050565b60075481565b5f60135f611c6a6121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ced5750611cbe6114fa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2390613ceb565b60405180910390fd5b620186a06001611d3a610baa565b611d449190613a73565b611d4e9190613ae1565b821015611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790613ff3565b60405180910390fd5b6103e86005611d9d610baa565b611da79190613a73565b611db19190613ae1565b821115611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614081565b60405180910390fd5b8160088190555060019050919050565b600e5481565b60135f611e146121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e975750611e686114fa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90613ceb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b60135f611fc16121de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061204457506120156114fa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a90613ceb565b60405180910390fd5b80601181905550601154601081905550606460105411156120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d090613d53565b60405180910390fd5b50565b6120e46121de565b73ffffffffffffffffffffffffffffffffffffffff166121026114fa565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613a28565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd9061410f565b60405180910390fd5b6121cf81612e2f565b50565b60095481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a9061419d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b89061422b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239b91906137c0565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240d906142b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90614347565b60405180910390fd5b5f810361249b5761249683835f6131c3565b612e2a565b600a5f9054906101000a900460ff1615612a3c576124b76114fa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252557506124f56114fa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561255d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612597575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b05750600560149054906101000a900460ff16155b15612a3b5743600d54600b546125c69190613c2d565b106125f4576103e7600f81905550600f54600e819055506103e7601181905550601154601081905550612672565b600d54600b546126049190613c2d565b431180156126205750600f600b5461261c9190613c2d565b4311155b1561264e576101f3600f81905550600f54600e819055506101f3601181905550601154601081905550612671565b601e600f81905550600f54600e81905550601e6011819055506011546010819055505b5b600a60019054906101000a900460ff166127615760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612721575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612757906143af565b60405180910390fd5b5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127fe575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128a557600754811115612848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283f9061443d565b60405180910390fd5b60095461285483611020565b8261285f9190613c2d565b11156128a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612897906144a5565b60405180910390fd5b612a3a565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612942575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129915760075481111561298c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298390614533565b60405180910390fd5b612a39565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612a38576009546129eb83611020565b826129f69190613c2d565b1115612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e906144a5565b60405180910390fd5b5b5b5b5b5b5f612a4630611020565b90505f6008548210159050808015612a6a5750600a60029054906101000a900460ff165b8015612a835750600560149054906101000a900460ff16155b8015612ad6575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b29575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b7c575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612bbf576001600560146101000a81548160ff021916908315150217905550612ba4613438565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c6e575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c77575f90505b5f8115612e1a5760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cd557505f601054115b15612d3c57612d036103e8612cf56010548861353290919063ffffffff16565b61354790919063ffffffff16565b905060105460115482612d169190613a73565b612d209190613ae1565b60125f828254612d309190613c2d565b92505081905550612df7565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d9357505f600e54115b15612df657612dc16103e8612db3600e548861353290919063ffffffff16565b61354790919063ffffffff16565b9050600e54600f5482612dd49190613a73565b612dde9190613ae1565b60125f828254612dee9190613c2d565b925050819055505b5b5f811115612e0b57612e0a8730836131c3565b5b8085612e179190614551565b94505b612e258787876131c3565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612f0e57612f0d614584565b5b604051908082528060200260200182016040528015612f3c5781602001602082028036833780820191505090505b50905030815f81518110612f5357612f526145b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301a91906145f2565b8160018151811061302e5761302d6145b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613093307f0000000000000000000000000000000000000000000000000000000000000000846121e5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016130f495949392919061470d565b5f604051808303815f87803b15801561310b575f80fd5b505af115801561311d573d5f803e3d5ffd5b505050505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613228906142b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361329f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329690614347565b60405180910390fd5b6132aa83838361355c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561332d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613324906147d5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546133bb9190613c2d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341f91906137c0565b60405180910390a3613432848484613561565b50505050565b5f61344230611020565b90505f60125490505f8083148061345857505f82145b1561346557505050613530565b60146008546134749190613a73565b83111561348d57601460085461348a9190613a73565b92505b5f83905061349a81612ef2565b5f60128190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134e690613c8d565b5f6040518083038185875af1925050503d805f8114613520576040519150601f19603f3d011682016040523d82523d5f602084013e613525565b606091505b505080925050505050505b565b5f818361353f9190613a73565b905092915050565b5f81836135549190613ae1565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561359d578082015181840152602081019050613582565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135c282613566565b6135cc8185613570565b93506135dc818560208601613580565b6135e5816135a8565b840191505092915050565b5f6020820190508181035f83015261360881846135b8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61363d82613614565b9050919050565b61364d81613633565b8114613657575f80fd5b50565b5f8135905061366881613644565b92915050565b5f819050919050565b6136808161366e565b811461368a575f80fd5b50565b5f8135905061369b81613677565b92915050565b5f80604083850312156136b7576136b6613610565b5b5f6136c48582860161365a565b92505060206136d58582860161368d565b9150509250929050565b5f8115159050919050565b6136f3816136df565b82525050565b5f60208201905061370c5f8301846136ea565b92915050565b5f6020828403121561372757613726613610565b5b5f6137348482850161365a565b91505092915050565b5f819050919050565b5f61376061375b61375684613614565b61373d565b613614565b9050919050565b5f61377182613746565b9050919050565b5f61378282613767565b9050919050565b61379281613778565b82525050565b5f6020820190506137ab5f830184613789565b92915050565b6137ba8161366e565b82525050565b5f6020820190506137d35f8301846137b1565b92915050565b5f602082840312156137ee576137ed613610565b5b5f6137fb8482850161368d565b91505092915050565b5f805f6060848603121561381b5761381a613610565b5b5f6138288682870161365a565b93505060206138398682870161365a565b925050604061384a8682870161368d565b9150509250925092565b61385d81613633565b82525050565b5f6020820190506138765f830184613854565b92915050565b5f60ff82169050919050565b6138918161387c565b82525050565b5f6020820190506138aa5f830184613888565b92915050565b6138b9816136df565b81146138c3575f80fd5b50565b5f813590506138d4816138b0565b92915050565b5f80604083850312156138f0576138ef613610565b5b5f6138fd8582860161365a565b925050602061390e858286016138c6565b9150509250929050565b5f6020828403121561392d5761392c613610565b5b5f61393a848285016138c6565b91505092915050565b5f806040838503121561395957613958613610565b5b5f6139668582860161365a565b92505060206139778582860161365a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139c557607f821691505b6020821081036139d8576139d7613981565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a12602083613570565b9150613a1d826139de565b602082019050919050565b5f6020820190508181035f830152613a3f81613a06565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a7d8261366e565b9150613a888361366e565b9250828202613a968161366e565b91508282048414831517613aad57613aac613a46565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aeb8261366e565b9150613af68361366e565b925082613b0657613b05613ab4565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613b6b602f83613570565b9150613b7682613b11565b604082019050919050565b5f6020820190508181035f830152613b9881613b5f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613bf9602883613570565b9150613c0482613b9f565b604082019050919050565b5f6020820190508181035f830152613c2681613bed565b9050919050565b5f613c378261366e565b9150613c428361366e565b9250828201905080821115613c5a57613c59613a46565b5b92915050565b5f81905092915050565b50565b5f613c785f83613c60565b9150613c8382613c6a565b5f82019050919050565b5f613c9782613c6d565b9150819050919050565b7f43616c6c6572206973206e6f742061207465616d206d656d62657200000000005f82015250565b5f613cd5601b83613570565b9150613ce082613ca1565b602082019050919050565b5f6020820190508181035f830152613d0281613cc9565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573730000005f82015250565b5f613d3d601d83613570565b9150613d4882613d09565b602082019050919050565b5f6020820190508181035f830152613d6a81613d31565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613da5600c83613570565b9150613db082613d71565b602082019050919050565b5f6020820190508181035f830152613dd281613d99565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e33603983613570565b9150613e3e82613dd9565b604082019050919050565b5f6020820190508181035f830152613e6081613e27565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ec1602583613570565b9150613ecc82613e67565b604082019050919050565b5f6020820190508181035f830152613eee81613eb5565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f4f602483613570565b9150613f5a82613ef5565b604082019050919050565b5f6020820190508181035f830152613f7c81613f43565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613fdd603583613570565b9150613fe882613f83565b604082019050919050565b5f6020820190508181035f83015261400a81613fd1565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61406b603483613570565b915061407682614011565b604082019050919050565b5f6020820190508181035f8301526140988161405f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140f9602683613570565b91506141048261409f565b604082019050919050565b5f6020820190508181035f830152614126816140ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614187602483613570565b91506141928261412d565b604082019050919050565b5f6020820190508181035f8301526141b48161417b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614215602283613570565b9150614220826141bb565b604082019050919050565b5f6020820190508181035f83015261424281614209565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142a3602583613570565b91506142ae82614249565b604082019050919050565b5f6020820190508181035f8301526142d081614297565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614331602383613570565b915061433c826142d7565b604082019050919050565b5f6020820190508181035f83015261435e81614325565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614399601683613570565b91506143a482614365565b602082019050919050565b5f6020820190508181035f8301526143c68161438d565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614427603583613570565b9150614432826143cd565b604082019050919050565b5f6020820190508181035f8301526144548161441b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61448f601383613570565b915061449a8261445b565b602082019050919050565b5f6020820190508181035f8301526144bc81614483565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61451d603683613570565b9150614528826144c3565b604082019050919050565b5f6020820190508181035f83015261454a81614511565b9050919050565b5f61455b8261366e565b91506145668361366e565b925082820390508181111561457e5761457d613a46565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506145ec81613644565b92915050565b5f6020828403121561460757614606613610565b5b5f614614848285016145de565b91505092915050565b5f819050919050565b5f61464061463b6146368461461d565b61373d565b61366e565b9050919050565b61465081614626565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61468881613633565b82525050565b5f614699838361467f565b60208301905092915050565b5f602082019050919050565b5f6146bb82614656565b6146c58185614660565b93506146d083614670565b805f5b838110156147005781516146e7888261468e565b97506146f2836146a5565b9250506001810190506146d3565b5085935050505092915050565b5f60a0820190506147205f8301886137b1565b61472d6020830187614647565b818103604083015261473f81866146b1565b905061474e6060830185613854565b61475b60808301846137b1565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6147bf602683613570565b91506147ca82614765565b604082019050919050565b5f6020820190508181035f8301526147ec816147b3565b905091905056fea2646970667358221220e58a43464df9d952f1e1765a43dd744e4fae4dd1cf0cc81286a928ab72c9709f64736f6c63430008150033