[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BuyTaxCollected", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SellTaxCollected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethIntoLiqudity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingEth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "societyEth", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minTokensBeforeSwap", "type": "uint256" } ], "name": "SwapThresholdUpdated", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferTaxCollected", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_burnFeeTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_liquidityTokensToSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_marketingFeeTokensToSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_societyFeeTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "addBotWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" } ], "name": "addBotWalletBulk", "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": "", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "botWallet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "botWallets", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "buyBurnFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buySocietyFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBotWallets", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hasLiquidity", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInLimit", "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": [ { "internalType": "address", "name": "routerAddress", "type": "address" } ], "name": "increaseRouterAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromLimit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "leashTheGold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "marketingFeeAddress", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "burn", "type": "uint256" }, { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, { "internalType": "uint256", "name": "marketing", "type": "uint256" }, { "internalType": "uint256", "name": "society", "type": "uint256" } ], "name": "ownerSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "removeBotWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" } ], "name": "removeBotWalletBulk", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rescueEth", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_stuckToken", "type": "address" } ], "name": "rescueTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellBurnFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellSocietyFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": "uint256", "name": "newSwapThreshold", "type": "uint256" } ], "name": "setSwapThreshold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "societyFeeAddress", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "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": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "transferBurnFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "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": [], "name": "transferLiquidityFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferMarketingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferSocietyFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapRouter", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unleashTheGold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_buyBurnFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyLiquidityFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buyMarketingFee", "type": "uint16" }, { "internalType": "uint16", "name": "_buySocietyFee", "type": "uint16" } ], "name": "updateBuyFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "marketingFeeAddress_", "type": "address" } ], "name": "updateMarketingFeeAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMax", "type": "uint256" } ], "name": "updateMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_sellBurnFee", "type": "uint16" }, { "internalType": "uint16", "name": "_sellLiquidityFee", "type": "uint16" }, { "internalType": "uint16", "name": "_sellMarketingFee", "type": "uint16" }, { "internalType": "uint16", "name": "_sellSocietyFee", "type": "uint16" } ], "name": "updateSellFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "societyFeeAddress_", "type": "address" } ], "name": "updateSocietyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_transferBurnFee", "type": "uint16" }, { "internalType": "uint16", "name": "_transferLiquidityFee", "type": "uint16" }, { "internalType": "uint16", "name": "_transferMarketingFee", "type": "uint16" }, { "internalType": "uint16", "name": "_transferSocietyfee", "type": "uint16" } ], "name": "updateTransferFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6101a06040526000600d81905560108054610100600160c81b03191675c800640000000000c800640000000000c800640000001790556019553480156200004557600080fd5b506040518060400160405280600481526020016311dbdb1960e21b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600481526020016311d3d31160e21b8152506040518060400160405280600481526020016311d3d31160e21b815250620000d2620000cc6200046c60201b60201c565b62000470565b6004620000e083826200081a565b506005620000ef82826200081a565b5050506200010d6007836200049a60201b620026871790919060201c565b610120526200012a8160086200049a602090811b6200268717901c565b61014052815160208084019190912060e052815190820120610100524660a052620001b860e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620001eb33620001d56012600a620009f9565b620001e5906301406f4062000a11565b620004ea565b600b805473eda0fd2b2ebc66a89c462e09d28460bd3e9158c26001600160a01b03199182168117909255600c80549091169091179055737a250d5630b4cf539739df2c5dacb4c659f2488d6101608190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062000a2b565b6001600160a01b031663c9c6539630610160516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000316919062000a2b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a919062000a2b565b6001600160a01b0390811661018052336000908152600e60205260408082208054600160ff1991821681179092553084528284208054821683179055600b54851684528284208054821683179055600c5490941683529120805490921617905560c8620003f660035490565b62000402919062000a56565b600d8190556200041590600a9062000a56565b601955620004273382600019620005b3565b610180516001600160a01b03166000908152601560205260409020805460ff19166001179055620004653061016051600019620005b360201b60201c565b5062000b04565b3390565b600680546001600160a01b03191690556200049781620006db602090811b620026b817901c565b50565b6000602083511015620004ba57620004b2836200072b565b9050620004e4565b82620004d1836200076e60201b6200272d1760201c565b90620004de90826200081a565b5060ff90505b92915050565b6001600160a01b038216620005465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600360008282546200055a919062000a79565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620006175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200053d565b6001600160a01b0382166200067a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200053d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f8151111562000759578260405163305a27a960e01b81526004016200053d919062000a8f565b8051620007668262000adf565b179392505050565b90565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007a157607f821691505b602082108103620007c257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077157600081815260208120601f850160051c81016020861015620007f15750805b601f850160051c820191505b818110156200081257828155600101620007fd565b505050505050565b81516001600160401b0381111562000836576200083662000776565b6200084e816200084784546200078c565b84620007c8565b602080601f8311600181146200088657600084156200086d5750858301515b600019600386901b1c1916600185901b17855562000812565b600085815260208120601f198616915b82811015620008b75788860151825594840194600190910190840162000896565b5085821015620008d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200093d578160001904821115620009215762000921620008e6565b808516156200092f57918102915b93841c939080029062000901565b509250929050565b6000826200095657506001620004e4565b816200096557506000620004e4565b81600181146200097e57600281146200098957620009a9565b6001915050620004e4565b60ff8411156200099d576200099d620008e6565b50506001821b620004e4565b5060208310610133831016604e8410600b8410161715620009ce575081810a620004e4565b620009da8383620008fc565b8060001904821115620009f157620009f1620008e6565b029392505050565b600062000a0a60ff84168362000945565b9392505050565b8082028115828204841417620004e457620004e4620008e6565b60006020828403121562000a3e57600080fd5b81516001600160a01b038116811462000a0a57600080fd5b60008262000a7457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004e457620004e4620008e6565b600060208083528351808285015260005b8181101562000abe5785810183015185820160400152820162000aa0565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620007c25760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516155f562000b9860003960008181610cef01528181611eaf0152613f4e0152600081816108f001528181613cce01528181613db90152613e3101526000611d8d01526000611d62015260006137640152600061373c01526000613697015260006136c1015260006136eb01526155f56000f3fe6080604052600436106104b95760003560e01c806384b0196e11610279578063b62496f51161015e578063e30c3978116100d6578063ee1144451161008a578063f2fde38b1161006f578063f2fde38b14610ecd578063f637434214610eed578063f8b45b0514610f1757600080fd5b8063ee11444514610e8b578063f11a24d314610eab57600080fd5b8063e4e45199116100bb578063e4e4519914610e35578063e71dc3f514610e4b578063ea2f0b3714610e6b57600080fd5b8063e30c397814610ddc578063e3d0bba614610e0757600080fd5b8063ce31a06b1161012d578063d94160e011610112578063d94160e014610d39578063dc9c30ca14610d69578063dd62ed3e14610d8957600080fd5b8063ce31a06b14610d11578063d505accf14610d1957600080fd5b8063b62496f514610c61578063b9de5a5014610c91578063bbc0c74214610cab578063c816841b14610cdd57600080fd5b80639bb19a32116101f1578063a2ece636116101c0578063a9059cbb116101a5578063a9059cbb14610bf9578063adb873bd14610c19578063ade7d38814610c4157600080fd5b8063a2ece63614610bb9578063a457c2d714610bd957600080fd5b80639bb19a3214610b215780639cbc1ad614610b535780639d0014b114610b83578063a087e3ec14610ba357600080fd5b806391d919a9116102485780639353f8461161022d5780639353f84614610ad657806395d89b4114610aec5780639a7a23d614610b0157600080fd5b806391d919a914610a8a5780639213691314610aaa57600080fd5b806384b0196e146109ee57806385c5b31914610a16578063871a2fc914610a4a5780638da5cb5b14610a5f57600080fd5b80633644e5151161039f57806370a08231116103175780637632f555116102e657806379cc6790116102cb57806379cc67901461098a5780637bce5a04146109aa5780637ecebe00146109ce57600080fd5b80637632f5551461093f57806379ba50971461097557600080fd5b806370a0823114610886578063715018a6146108c9578063735de9f7146108de578063762ddbd91461091257600080fd5b806342966c681161036e5780634866bad1116103535780634866bad1146108165780635342acb414610836578063660d0af41461086657600080fd5b806342966c68146107d6578063437823ec146107f657600080fd5b80633644e5151461076b578063392d6af71461078057806339509351146107a05780634047ea3e146107c057600080fd5b806318160ddd11610432578063239bda4911610401578063269b1717116103e6578063269b17171461070d5780632a3606311461072f578063313ce5671461074f57600080fd5b8063239bda49146106cd57806323b872dd146106ed57600080fd5b806318160ddd1461063e5780631c499ab01461065d5780631c8a6adc1461067d5780631fab45e4146106ad57600080fd5b806306fdde03116104895780630bd3a7f91161046e5780630bd3a7f9146105e95780630e460b731461060957806315d630031461062957600080fd5b806306fdde0314610597578063095ea7b3146105b957600080fd5b8062ae3bf8146104c5578063019bd39f146104e75780630305caff14610525578063053e39a31461054557600080fd5b366104c057005b600080fd5b3480156104d157600080fd5b506104e56104e0366004614bfa565b610f2d565b005b3480156104f357600080fd5b5060105461050d90670100000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561053157600080fd5b506104e5610540366004614bfa565b610fee565b34801561055157600080fd5b50600b546105729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161051c565b3480156105a357600080fd5b506105ac611255565b60405161051c9190614c9c565b3480156105c557600080fd5b506105d96105d4366004614caf565b6112e7565b604051901515815260200161051c565b3480156105f557600080fd5b506104e5610604366004614bfa565b611301565b34801561061557600080fd5b506104e5610624366004614d0a565b611358565b34801561063557600080fd5b506104e5611514565b34801561064a57600080fd5b506003545b60405190815260200161051c565b34801561066957600080fd5b506104e5610678366004614ded565b611546565b34801561068957600080fd5b5060105461050d9071010000000000000000000000000000000000900461ffff1681565b3480156106b957600080fd5b506104e56106c8366004614e06565b611553565b3480156106d957600080fd5b506104e56106e8366004614e4a565b6115c0565b3480156106f957600080fd5b506105d9610708366004614e9e565b611763565b34801561071957600080fd5b50610722611787565b60405161051c9190614f30565b34801561073b57600080fd5b506104e561074a366004614bfa565b6117f5565b34801561075b57600080fd5b506040516012815260200161051c565b34801561077757600080fd5b5061064f611936565b34801561078c57600080fd5b506104e561079b366004614e4a565b611945565b3480156107ac57600080fd5b506105d96107bb366004614caf565b611aa2565b3480156107cc57600080fd5b5061064f60115481565b3480156107e257600080fd5b506104e56107f1366004614ded565b611aee565b34801561080257600080fd5b506104e5610811366004614bfa565b611af8565b34801561082257600080fd5b506104e5610831366004614bfa565b611b4f565b34801561084257600080fd5b506105d9610851366004614bfa565b600e6020526000908152604090205460ff1681565b34801561087257600080fd5b506104e5610881366004614bfa565b611b82565b34801561089257600080fd5b5061064f6108a1366004614bfa565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b3480156108d557600080fd5b506104e5611c4e565b3480156108ea57600080fd5b506105727f000000000000000000000000000000000000000000000000000000000000000081565b34801561091e57600080fd5b50600c546105729073ffffffffffffffffffffffffffffffffffffffff1681565b34801561094b57600080fd5b5060105461050d9077010000000000000000000000000000000000000000000000900461ffff1681565b34801561098157600080fd5b506104e5611c62565b34801561099657600080fd5b506104e56109a5366004614caf565b611d14565b3480156109b657600080fd5b5060105461050d9065010000000000900461ffff1681565b3480156109da57600080fd5b5061064f6109e9366004614bfa565b611d29565b3480156109fa57600080fd5b50610a03611d54565b60405161051c9796959493929190614f43565b348015610a2257600080fd5b5060105461050d907501000000000000000000000000000000000000000000900461ffff1681565b348015610a5657600080fd5b506104e5611df9565b348015610a6b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610572565b348015610a9657600080fd5b506104e5610aa5366004614bfa565b611e42565b348015610ab657600080fd5b5060105461050d906d0100000000000000000000000000900461ffff1681565b348015610ae257600080fd5b5061064f60145481565b348015610af857600080fd5b506105ac611e96565b348015610b0d57600080fd5b506104e5610b1c366004615010565b611ea5565b348015610b2d57600080fd5b5060105461050d90730100000000000000000000000000000000000000900461ffff1681565b348015610b5f57600080fd5b506105d9610b6e366004614bfa565b60166020526000908152604090205460ff1681565b348015610b8f57600080fd5b506104e5610b9e366004614ded565b611fb5565b348015610baf57600080fd5b5061064f60135481565b348015610bc557600080fd5b50610572610bd4366004614ded565b611ff8565b348015610be557600080fd5b506105d9610bf4366004614caf565b61202f565b348015610c0557600080fd5b506105d9610c14366004614caf565b612100565b348015610c2557600080fd5b5060105461050d906901000000000000000000900461ffff1681565b348015610c4d57600080fd5b506104e5610c5c366004614d0a565b61210e565b348015610c6d57600080fd5b506105d9610c7c366004614bfa565b60156020526000908152604090205460ff1681565b348015610c9d57600080fd5b506010546105d99060ff1681565b348015610cb757600080fd5b50600c546105d99074010000000000000000000000000000000000000000900460ff1681565b348015610ce957600080fd5b506105727f000000000000000000000000000000000000000000000000000000000000000081565b6104e56121c7565b348015610d2557600080fd5b506104e5610d34366004615049565b6121fb565b348015610d4557600080fd5b506105d9610d54366004614bfa565b600f6020526000908152604090205460ff1681565b348015610d7557600080fd5b506104e5610d84366004614e4a565b6123ba565b348015610d9557600080fd5b5061064f610da43660046150c0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b348015610de857600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff16610572565b348015610e1357600080fd5b5060105461050d906f01000000000000000000000000000000900461ffff1681565b348015610e4157600080fd5b5061064f60125481565b348015610e5757600080fd5b5060105461050d90610100900461ffff1681565b348015610e7757600080fd5b506104e5610e86366004614bfa565b6124b7565b348015610e9757600080fd5b506104e5610ea6366004614bfa565b61250b565b348015610eb757600080fd5b5060105461050d906301000000900461ffff1681565b348015610ed957600080fd5b506104e5610ee8366004614bfa565b6125d7565b348015610ef957600080fd5b5060105461050d906b010000000000000000000000900461ffff1681565b348015610f2357600080fd5b5061064f600d5481565b610f35612730565b610feb81610f5860005473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe691906150ee565b6127b1565b50565b610ff6612730565b73ffffffffffffffffffffffffffffffffffffffff811660009081526016602052604090205460ff1661108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f57616c6c6574206e6f742061646465640000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260166020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b601754811015611251578173ffffffffffffffffffffffffffffffffffffffff166017828154811061110a5761110a615107565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff160361123f576017805461114190600190615165565b8154811061115157611151615107565b6000918252602090912001546017805473ffffffffffffffffffffffffffffffffffffffff909216918390811061118a5761118a615107565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060178054806111e3576111e3615178565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b80611249816151a7565b9150506110d6565b5050565b606060048054611264906151df565b80601f0160208091040260200160405190810160405280929190818152602001828054611290906151df565b80156112dd5780601f106112b2576101008083540402835291602001916112dd565b820191906000526020600020905b8154815290600101906020018083116112c057829003601f168201915b5050505050905090565b6000336112f5818585612843565b60019150505b92915050565b611309612730565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611360612730565b60005b8151811015611251576016600083838151811061138257611382615107565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff161561141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f57616c6c657420616c72656164792061646465640000000000000000000000006044820152606401611081565b60016016600084848151811061143557611435615107565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060178282815181106114a2576114a2615107565b60209081029190910181015182546001810184556000938452919092200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790558061150c816151a7565b915050611363565b61151c612730565b600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61154e612730565b600d55565b61155b612730565b601880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611592848484846129f6565b5050601880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050565b6115c8612730565b601080547fffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff167101000000000000000000000000000000000061ffff878116919091027fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff169190911773010000000000000000000000000000000000000086831602177fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000858316027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1617770100000000000000000000000000000000000000000000009184169190910217905561012c81836116dd868861522c565b6116e7919061522c565b6116f1919061522c565b61ffff16111561175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d757374206b6565702066656573203c3d2033302500000000000000000000006044820152606401611081565b50505050565b600033611771858285612e8f565b61177c858585612f60565b506001949350505050565b606060178054806020026020016040519081016040528092919081815260200182805480156112dd57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116117c1575050505050905090565b6117fd612730565b73ffffffffffffffffffffffffffffffffffffffff811660009081526016602052604090205460ff161561188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f57616c6c657420616c72656164792061646465640000000000000000000000006044820152606401611081565b73ffffffffffffffffffffffffffffffffffffffff16600081815260166020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556017805491820181559091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b600061194061367d565b905090565b61194d612730565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff1661010061ffff878116919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff1691909117630100000086831602177fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff1665010000000000858316027fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff16176701000000000000009184169190910217905561012c8183611a22868861522c565b611a2c919061522c565b611a36919061522c565b61ffff16111561175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d757374206b65657020666565732062656c6f772033302500000000000000006044820152606401611081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906112f59082908690611ae990879061524e565b612843565b610feb33826137b5565b611b00612730565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611b57612730565b610feb30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612843565b611b8a612730565b73ffffffffffffffffffffffffffffffffffffffff8116611c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616e27742073657420300000000000000000000000000000000000000000006044820152606401611081565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611c56612730565b611c60600061397b565b565b600654339073ffffffffffffffffffffffffffffffffffffffff168114611d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401611081565b610feb8161397b565b611d1f823383612e8f565b61125182826137b5565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260408120546112fb565b600060608082808083611d887f000000000000000000000000000000000000000000000000000000000000000060076139ac565b611db37f000000000000000000000000000000000000000000000000000000000000000060086139ac565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b611e01612730565b600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611e4a612730565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606060058054611264906151df565b611ead612730565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401611081565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260156020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790555050565b611fbd612730565b60198190556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd064769060200160405180910390a150565b6017818154811061200857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156120f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401611081565b61177c8286868403612843565b6000336112f5818585612f60565b612116612730565b60005b81518110156121a95760006016600084848151811061213a5761213a615107565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055806121a1816151a7565b915050612119565b50604080516000815260208101918290525161125191601791614b39565b6121cf612730565b60405133904780156108fc02916000818181858888f19350505050158015610feb573d6000803e3d6000fd5b83421115612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401611081565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886122948c613a50565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006122fc82613a85565b9050600061230c82878787613acd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401611081565b6123ae8a8a8a612843565b50505050505050505050565b6123c2612730565b601080547fffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff16690100000000000000000061ffff878116919091027fffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff16919091176b01000000000000000000000086831602177fffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff166d0100000000000000000000000000858316027fffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff16176f010000000000000000000000000000009184169190910217905561012c81836116dd868861522c565b6124bf612730565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612513612730565b73ffffffffffffffffffffffffffffffffffffffff8116612590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616e27742073657420300000000000000000000000000000000000000000006044820152606401611081565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6125df612730565b6006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561264260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60006020835110156126a35761269c83613af7565b90506112fb565b816126ae84826152a7565b5060ff90506112fb565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b90565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611081565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261283e908490613b4e565b505050565b73ffffffffffffffffffffffffffffffffffffffff83166128e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff8216612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b836013541015612a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616e6e6f74206275726e206d6f726520746f6b656e73207468616e20616c6c60448201527f6f636174656420746f206275726e2e00000000000000000000000000000000006064820152608401611081565b826011541015612b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f43616e6e6f742073776170206d6f726520746f6b656e73207468616e20616c6c60448201527f6f636174656420746f206c69717569646974792e0000000000000000000000006064820152608401611081565b816012541015612bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f43616e6e6f742073776170206d6f726520746f6b656e73207468616e20616c6c60448201527f6f636174656420746f206d61726b6574696e672e0000000000000000000000006064820152608401611081565b806014541015612c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742073776170206d6f726520746f6b656e73207468616e20616c6c60448201527f6f636174656420746f20736f63696574792e00000000000000000000000000006064820152608401611081565b6000612c4b6002856153c1565b90506000612c598286615165565b905047600084612c69878561524e565b612c73919061524e565b9050612c7e81613c5d565b6000612c8a8347615165565b9050600082612c9987846153fc565b612ca391906153c1565b9050600083612cb28a856153fc565b612cbc91906153c1565b9050600084612ccb8a866153fc565b612cd591906153c1565b9050600088118015612ce75750600083115b15612cf657612cf68884613e2f565b6040805189815260208101859052908101839052606081018290527f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a1600b5460405160009173ffffffffffffffffffffffffffffffffffffffff169061c35090859084818181858888f193505050503d8060008114612d9d576040519150601f19603f3d011682016040523d82523d6000602084013e612da2565b606091505b5050600c5460405191925073ffffffffffffffffffffffffffffffffffffffff169061c3509084906000818181858888f193505050503d8060008114612e04576040519150601f19603f3d011682016040523d82523d6000602084013e612e09565b606091505b50909150508c15612e1e57612e1e308e6137b5565b8c60136000828254612e309190615165565b925050819055508b60116000828254612e499190615165565b925050819055508a60126000828254612e629190615165565b925050819055508960146000828254612e7b9190615165565b909155505050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461175d5781811015612f53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611081565b61175d8484848403612843565b600c5474010000000000000000000000000000000000000000900460ff166130415773ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205460ff1680612fdb575073ffffffffffffffffffffffffffffffffffffffff82166000908152600e602052604090205460ff165b613041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401611081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526016602052604090205460ff1615801561309d575073ffffffffffffffffffffffffffffffffffffffff821660009081526016602052604090205460ff16155b613103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f426f742077616c6c6574000000000000000000000000000000000000000000006044820152606401611081565b61310b613f49565b60105460ff168015613120575060185460ff16155b8015613151575073ffffffffffffffffffffffffffffffffffffffff821660009081526015602052604090205460ff165b1561317c5730600090815260016020526040902054601954811061317a5761317a601954614051565b505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604081205481908190819060ff161580156131de575073ffffffffffffffffffffffffffffffffffffffff86166000908152600e602052604090205460ff16155b156135a05773ffffffffffffffffffffffffffffffffffffffff871660009081526015602052604090205460ff161561330f576010546103e89061322b90610100900461ffff16876153fc565b61323591906153c1565b6010549094506103e890613254906301000000900461ffff16876153fc565b61325e91906153c1565b6010549093506103e89061327f9065010000000000900461ffff16876153fc565b61328991906153c1565b6010549092506103e8906132ac90670100000000000000900461ffff16876153fc565b6132b691906153c1565b90507ff6fed19f57fc1da2b3971e5847aa135d2ce4d8c518b5a132b8ee1e3049abb25d81836132e5868861524e565b6132ef919061524e565b6132f9919061524e565b60405190815260200160405180910390a161356b565b73ffffffffffffffffffffffffffffffffffffffff861660009081526015602052604090205460ff1615613431576010546103e89061335f906901000000000000000000900461ffff16876153fc565b61336991906153c1565b6010549094506103e890613390906b010000000000000000000000900461ffff16876153fc565b61339a91906153c1565b6010549093506103e8906133c3906d0100000000000000000000000000900461ffff16876153fc565b6133cd91906153c1565b6010549092506103e8906133f8906f01000000000000000000000000000000900461ffff16876153fc565b61340291906153c1565b90507f0eece752e3e124d1a3ff9bbf3ece693655bfac218af7f5cb9a7dbac98a1bba5e81836132e5868861524e565b6010546103e89061345b9071010000000000000000000000000000000000900461ffff16876153fc565b61346591906153c1565b6010549094506103e89061349490730100000000000000000000000000000000000000900461ffff16876153fc565b61349e91906153c1565b6010549093506103e8906134cf907501000000000000000000000000000000000000000000900461ffff16876153fc565b6134d991906153c1565b6010549092506103e89061350c9077010000000000000000000000000000000000000000000000900461ffff16876153fc565b61351691906153c1565b90507fec07ba35d66f52953d0a7fe983234f531e1a51f6b6317de91856b4eeb16cd8a18183613545868861524e565b61354f919061524e565b613559919061524e565b60405190815260200160405180910390a15b6135a0878783858761357d8a8c615165565b6135879190615165565b6135919190615165565b61359b9190615165565b61424a565b60008183856135af888a615165565b6135b99190615165565b6135c39190615165565b6135cd9190615165565b90506135da88888361439a565b600082846135e8878961524e565b6135f2919061524e565b6135fc919061524e565b905080156136725761360f89308361439a565b8560136000828254613621919061524e565b92505081905550846011600082825461363a919061524e565b925050819055508360126000828254613653919061524e565b92505081905550826014600082825461366c919061524e565b90915550505b505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156136e357507f000000000000000000000000000000000000000000000000000000000000000046145b1561370d57507f000000000000000000000000000000000000000000000000000000000000000090565b611940604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff8216613858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020548181101561390e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610feb816126b8565b606060ff83146139bf5761269c83614610565b8180546139cb906151df565b80601f01602080910402602001604051908101604052809291908181526020018280546139f7906151df565b8015613a445780601f10613a1957610100808354040283529160200191613a44565b820191906000526020600020905b815481529060010190602001808311613a2757829003601f168201915b505050505090506112fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604090208054600181018255905b50919050565b60006112fb613a9261367d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000613ade8787878761464f565b91509150613aeb8161473e565b5090505b949350505050565b600080829050601f81511115613b3b57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016110819190614c9c565b8051613b4682615413565b179392505050565b6000613bb0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166148f19092919063ffffffff16565b9050805160001480613bd1575080806020019051810190613bd19190615455565b61283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611081565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613c9257613c92615107565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5b9190615472565b81600181518110613d6e57613d6e615107565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f791ac9470000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790613df990859060009086903090429060040161548f565b600060405180830381600087803b158015613e1357600080fd5b505af1158015613e27573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e9060005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613f1d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f4291906154d8565b5050505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdb9190615524565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000821180156140105750600081115b61401b57600061401e565b60015b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b601880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560105460009061ffff6f0100000000000000000000000000000082048116916d010000000000000000000000000081048216916140d9916b010000000000000000000000810482169169010000000000000000009091041661522c565b6140e3919061522c565b6140ed919061522c565b61ffff16905080600003614101575061421f565b6010546000908290614124906901000000000000000000900461ffff16856153fc565b61412e91906153c1565b6010549091506000908390614156906b010000000000000000000000900461ffff16866153fc565b61416091906153c1565b601054909150600090849061418a906d0100000000000000000000000000900461ffff16876153fc565b61419491906153c1565b60105490915060009085906141c0906f01000000000000000000000000000000900461ffff16886153fc565b6141ca91906153c1565b9050600081836141da868861524e565b6141e4919061524e565b6141ee919061524e565b90508015806141fc57508087105b1561420c5750505050505061421f565b614218858585856129f6565b5050505050505b50601880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f602052604090205460ff16806142a3575073ffffffffffffffffffffffffffffffffffffffff82166000908152600f602052604090205460ff165b806142b1575060105460ff16155b806142e1575073ffffffffffffffffffffffffffffffffffffffff821660009081526015602052604090205460ff165b806142ee575060185460ff165b156142f857505050565b600d54816143288473ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b614332919061524e565b111561283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61782057616c6c6574205468726573686f6c642045786365656465642e00006044820152606401611081565b73ffffffffffffffffffffffffffffffffffffffff831661443d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff82166144e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205481811015614596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401611081565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906146039086815260200190565b60405180910390a361175d565b6060600061461d83614900565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146865750600090506003614735565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156146da573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661472e57600060019250925050614735565b9150600090505b94509492505050565b600081600481111561475257614752615574565b0361475a5750565b600181600481111561476e5761476e615574565b036147d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611081565b60028160048111156147e9576147e9615574565b03614850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611081565b600381600481111561486457614864615574565b03610feb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401611081565b6060613aef8484600085614941565b600060ff8216601f8111156112fb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060824710156149d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611081565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516149fc91906155a3565b60006040518083038185875af1925050503d8060008114614a39576040519150601f19603f3d011682016040523d82523d6000602084013e614a3e565b606091505b5091509150614a4f87838387614a5a565b979650505050505050565b60608315614af0578251600003614ae95773ffffffffffffffffffffffffffffffffffffffff85163b614ae9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611081565b5081613aef565b613aef8383815115614b055781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110819190614c9c565b828054828255906000526020600020908101928215614bb3579160200282015b82811115614bb357825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614b59565b50614bbf929150614bc3565b5090565b5b80821115614bbf5760008155600101614bc4565b73ffffffffffffffffffffffffffffffffffffffff81168114610feb57600080fd5b600060208284031215614c0c57600080fd5b8135614c1781614bd8565b9392505050565b8035614c2981614bd8565b919050565b60005b83811015614c49578181015183820152602001614c31565b50506000910152565b60008151808452614c6a816020860160208601614c2e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000614c176020830184614c52565b60008060408385031215614cc257600080fd5b8235614ccd81614bd8565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215614d1d57600080fd5b823567ffffffffffffffff80821115614d3557600080fd5b818501915085601f830112614d4957600080fd5b813581811115614d5b57614d5b614cdb565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715614d9e57614d9e614cdb565b604052918252848201925083810185019188831115614dbc57600080fd5b938501935b82851015614de157614dd285614c1e565b84529385019392850192614dc1565b98975050505050505050565b600060208284031215614dff57600080fd5b5035919050565b60008060008060808587031215614e1c57600080fd5b5050823594602084013594506040840135936060013592509050565b803561ffff81168114614c2957600080fd5b60008060008060808587031215614e6057600080fd5b614e6985614e38565b9350614e7760208601614e38565b9250614e8560408601614e38565b9150614e9360608601614e38565b905092959194509250565b600080600060608486031215614eb357600080fd5b8335614ebe81614bd8565b92506020840135614ece81614bd8565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015614f2557815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614ef3565b509495945050505050565b602081526000614c176020830184614edf565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152614f7f60e084018a614c52565b8381036040850152614f91818a614c52565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015614ff057835183529284019291840191600101614fd4565b50909c9b505050505050505050505050565b8015158114610feb57600080fd5b6000806040838503121561502357600080fd5b823561502e81614bd8565b9150602083013561503e81615002565b809150509250929050565b600080600080600080600060e0888a03121561506457600080fd5b873561506f81614bd8565b9650602088013561507f81614bd8565b95506040880135945060608801359350608088013560ff811681146150a357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156150d357600080fd5b82356150de81614bd8565b9150602083013561503e81614bd8565b60006020828403121561510057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156112fb576112fb615136565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151d8576151d8615136565b5060010190565b600181811c908216806151f357607f821691505b602082108103613a7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61ffff81811683821601908082111561524757615247615136565b5092915050565b808201808211156112fb576112fb615136565b601f82111561283e57600081815260208120601f850160051c810160208610156152885750805b601f850160051c820191505b81811015613e2757828155600101615294565b815167ffffffffffffffff8111156152c1576152c1614cdb565b6152d5816152cf84546151df565b84615261565b602080601f83116001811461532857600084156152f25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613e27565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561537557888601518255948401946001909101908401615356565b50858210156153b157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826153f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176112fb576112fb615136565b80516020808301519190811015613a7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b60006020828403121561546757600080fd5b8151614c1781615002565b60006020828403121561548457600080fd5b8151614c1781614bd8565b85815284602082015260a0604082015260006154ae60a0830186614edf565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b6000806000606084860312156154ed57600080fd5b8351925060208401519150604084015190509250925092565b80516dffffffffffffffffffffffffffff81168114614c2957600080fd5b60008060006060848603121561553957600080fd5b61554284615506565b925061555060208501615506565b9150604084015163ffffffff8116811461556957600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082516155b5818460208701614c2e565b919091019291505056fea264697066735822122002053ca8b085bd42052a5e98cee1ddb396a9e62e942b77147b5e01a2d6b0ac2064736f6c63430008120033