[ { "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": false, "internalType": "uint256", "name": "amountETH", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountBOG", "type": "uint256" } ], "name": "AutoLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "BuybackMultiplierActive", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MASK", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "Sweep", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxTxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "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": "spender", "type": "address" } ], "name": "approveMax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoBuybackEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "autoLiquidityReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "holder", "type": "address" } ], "name": "checkFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clearBuybackMultiplier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "distributorAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCirculatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "getLiquidityBacking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMultipliedFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "selling", "type": "bool" } ], "name": "getTotalFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "target", "type": "uint256" }, { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "isOverLiquified", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "launchedAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "launchedAtTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingFeeReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_cap", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_period", "type": "uint256" } ], "name": "setAutoBuybackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "setBuybackMultiplierSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "_minDistribution", "type": "uint256" } ], "name": "setDistributionCriteria", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "gas", "type": "uint256" } ], "name": "setDistributorSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_autoLiquidityReceiver", "type": "address" }, { "internalType": "address", "name": "_marketingFeeReceiver", "type": "address" } ], "name": "setFeeReceivers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_buybackFee", "type": "uint256" }, { "internalType": "uint256", "name": "_reflectionFee", "type": "uint256" }, { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_feeDenominator", "type": "uint256" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "setFree", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsDividendExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsFeeExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "bool", "name": "exempt", "type": "bool" } ], "name": "setIsTxLimitExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "setSwapBackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_target", "type": "uint256" }, { "internalType": "uint256", "name": "_denominator", "type": "uint256" } ], "name": "setTargetLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setTxLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "triggerBuybackMultiplier", "type": "bool" } ], "name": "triggerZeusBuyback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "unSetFree", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405273efb15ef34f85632fd1d4c17fc130ccee3d3d48ae600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073deaddeaddeaddeaddeaddeaddeaddeaddead0000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a62000186919062000f66565b66038d7ea4c680006200019a9190620010a3565b600755620001ba602860075462000bc260201b620028421790919060201c565b600855620001da602860075462000bc260201b620028421790919060201c565b600955606460105560006011556101906012556103e86013556105dc6014556127106015557398c9fef2bd9bbd1743ce9a02be8e3898079b40db601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398c9fef2bd9bbd1743ce9a02be8e3898079b40db601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601855606460195560c8601e556064601f556107086021556000602260006101000a81548160ff0219169083151502179055506207a120602b556001602c60006101000a81548160ff02191690831515021790555061138860075462000312919062000ed3565b602d553480156200032257600080fd5b5060006200033562000c1460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007381b9fa50d5f5155ee17817c21702c3ae4780ad09905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049657600080fd5b505afa158015620004ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d1919062000d9d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200052f92919062000e49565b602060405180830381600087803b1580156200054a57600080fd5b505af11580156200055f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000585919062000d9d565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620006d357600080fd5b505afa158015620006e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070e919062000d9d565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806040516200075d9062000d78565b62000769919062000e2c565b604051809103906000f08015801562000786573d6000803e3d6000fd5b50602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000ad38160075462000c1c60201b60201c565b5062000b0a601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075462000c1c60201b60201c565b50600754600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000bb3919062000e9a565b60405180910390a3506200121b565b600062000c0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d1060201b60201c565b905092915050565b600033905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000cfe919062000e9a565b60405180910390a36001905092915050565b6000808311829062000d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d51919062000e76565b60405180910390fd5b506000838562000d6b919062000ed3565b9050809150509392505050565b6120c38062005e3783390190565b60008151905062000d978162001201565b92915050565b60006020828403121562000db057600080fd5b600062000dc08482850162000d86565b91505092915050565b62000dd48162001104565b82525050565b600062000de78262000eb7565b62000df3818562000ec2565b935062000e058185602086016200114f565b62000e1081620011e3565b840191505092915050565b62000e268162001138565b82525050565b600060208201905062000e43600083018462000dc9565b92915050565b600060408201905062000e60600083018562000dc9565b62000e6f602083018462000dc9565b9392505050565b6000602082019050818103600083015262000e92818462000dda565b905092915050565b600060208201905062000eb1600083018462000e1b565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000ee08262001138565b915062000eed8362001138565b92508262000f005762000eff620011b4565b5b828204905092915050565b6000808291508390505b600185111562000f5d5780860481111562000f355762000f3462001185565b5b600185161562000f455780820291505b808102905062000f5585620011f4565b945062000f15565b94509492505050565b600062000f738262001138565b915062000f808362001142565b925062000faf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fb7565b905092915050565b60008262000fc957600190506200109c565b8162000fd957600090506200109c565b816001811462000ff2576002811462000ffd5762001033565b60019150506200109c565b60ff84111562001012576200101162001185565b5b8360020a9150848211156200102c576200102b62001185565b5b506200109c565b5060208310610133831016604e8410600b84101617156200106d5782820a90508381111562001067576200106662001185565b5b6200109c565b6200107c848484600162000f0b565b9250905081840481111562001096576200109562001185565b5b81810290505b9392505050565b6000620010b08262001138565b9150620010bd8362001138565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010f957620010f862001185565b5b828202905092915050565b6000620011118262001118565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200116f57808201518184015260208101905062001152565b838111156200117f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6200120c8162001104565b81146200121857600080fd5b50565b614c0c806200122b6000396000f3fe6080604052600436106103035760003560e01c80637d1db4a511610190578063c6d2577d116100dc578063e91f214e11610095578063f5cfec0a1161006f578063f5cfec0a14610b7b578063f708a64f14610ba4578063f84ba65d14610bcd578063f887ea4014610bf65761030a565b8063e91f214e14610ae8578063e96fada214610b13578063f1f3bca314610b3e5761030a565b8063c6d2577d146109c4578063ca33e64c146109ef578063d51ed1c814610a1a578063d806d12f14610a57578063dd62ed3e14610a82578063df20fd4914610abf5761030a565b8063a4b45c0011610149578063a9059cbb11610123578063a9059cbb1461091a578063ad5c464814610957578063b210b06d14610982578063bf56b371146109995761030a565b8063a4b45c001461089b578063a51af4c5146108c4578063a8aa1b31146108ef5761030a565b80637d1db4a51461079d57806382247ec0146107c857806389ef69f6146107f35780638da5cb5b1461081c57806395d89b41146108475780639d1944f5146108725761030a565b80632b112e491161024f5780635c85974f116102085780636ddd1713116101e25780636ddd1713146107075780637088fb7f1461073257806370a0823114610749578063715018a6146107865761030a565b80635c85974f1461068c5780635d0044ca146106b5578063658d4b7f146106de5761030a565b80632b112e491461057c5780632d48e896146105a7578063313ce567146105d05780633425c001146105fb5780633bb8a8d414610624578063571ac8b01461064f5761030a565b8063095ea7b3116102bc578063201e799111610296578063201e7991146104b05780632375ce40146104d957806323b872dd14610502578063296020e71461053f5761030a565b8063095ea7b31461040b5780631161ae391461044857806318160ddd146104855761030a565b806301339c211461030f5780630445b66714610326578063048c7baf1461035157806304a66b481461037a57806306fdde03146103a357806307c89fe8146103ce5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c21565b005b34801561033257600080fd5b5061033b610d0b565b6040516103489190614841565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190614138565b610d11565b005b34801561038657600080fd5b506103a1600480360381019061039c91906142da565b610dea565b005b3480156103af57600080fd5b506103b8610f02565b6040516103c5919061475f565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190613fa7565b610f3f565b60405161040291906146dd565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190614097565b61102a565b60405161043f91906146dd565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a9190614200565b61111c565b60405161047c91906146dd565b60405180910390f35b34801561049157600080fd5b5061049a611131565b6040516104a79190614841565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d29190614200565b61113b565b005b3480156104e557600080fd5b5061050060048036038101906104fb919061423c565b6111e2565b005b34801561050e57600080fd5b506105296004803603810190610524919061400c565b6112b5565b60405161053691906146dd565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613fa7565b611497565b60405161057391906146dd565b60405180910390f35b34801561058857600080fd5b506105916114b7565b60405161059e9190614841565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614200565b611539565b005b3480156105dc57600080fd5b506105e5611661565b6040516105f291906148df565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d9190613fa7565b61166a565b005b34801561063057600080fd5b5061063961175a565b60405161064691906146dd565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190613fa7565b61176d565b60405161068391906146dd565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae919061419b565b611782565b005b3480156106c157600080fd5b506106dc60048036038101906106d7919061419b565b61183d565b005b3480156106ea57600080fd5b506107056004803603810190610700919061405b565b6118f8565b005b34801561071357600080fd5b5061071c6119e8565b60405161072991906146dd565b60405180910390f35b34801561073e57600080fd5b506107476119fb565b005b34801561075557600080fd5b50610770600480360381019061076b9190613fa7565b611adf565b60405161077d9190614841565b60405180910390f35b34801561079257600080fd5b5061079b611b28565b005b3480156107a957600080fd5b506107b2611c7b565b6040516107bf9190614841565b60405180910390f35b3480156107d457600080fd5b506107dd611c81565b6040516107ea9190614841565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190613fa7565b611c87565b005b34801561082857600080fd5b50610831611d77565b60405161083e919061460f565b60405180910390f35b34801561085357600080fd5b5061085c611da0565b604051610869919061475f565b60405180910390f35b34801561087e57600080fd5b506108996004803603810190610894919061419b565b611ddd565b005b3480156108a757600080fd5b506108c260048036038101906108bd9190613fd0565b611e8b565b005b3480156108d057600080fd5b506108d9611fa6565b6040516108e6919061460f565b60405180910390f35b3480156108fb57600080fd5b50610904611fcc565b604051610911919061460f565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c9190614097565b611ff2565b60405161094e91906146dd565b60405180910390f35b34801561096357600080fd5b5061096c612007565b604051610979919061460f565b60405180910390f35b34801561098e57600080fd5b5061099761202d565b005b3480156109a557600080fd5b506109ae6120cc565b6040516109bb9190614841565b60405180910390f35b3480156109d057600080fd5b506109d96120d2565b6040516109e69190614841565b60405180910390f35b3480156109fb57600080fd5b50610a046120d8565b604051610a11919061460f565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c919061419b565b6120fe565b604051610a4e9190614841565b60405180910390f35b348015610a6357600080fd5b50610a6c612170565b604051610a799190614841565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190613fd0565b61217a565b604051610ab69190614841565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae191906140fc565b612201565b005b348015610af457600080fd5b50610afd6122bb565b604051610b0a9190614841565b60405180910390f35b348015610b1f57600080fd5b50610b286122d1565b604051610b35919061460f565b60405180910390f35b348015610b4a57600080fd5b50610b656004803603810190610b6091906140d3565b6122f7565b604051610b729190614841565b60405180910390f35b348015610b8757600080fd5b50610ba26004803603810190610b9d91906141c4565b612333565b005b348015610bb057600080fd5b50610bcb6004803603810190610bc6919061405b565b61243f565b005b348015610bd957600080fd5b50610bf46004803603810190610bef919061405b565b61272c565b005b348015610c0257600080fd5b50610c0b61281c565b604051610c1891906146f8565b60405180910390f35b610c2961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90614801565b60405180910390fd5b6000601c5414610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290614821565b60405180910390fd5b43601c8190555042601d81905550565b602d5481565b610d1961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90614801565b60405180910390fd5b83602260006101000a81548160ff02191690831515021790555082602481905550600060258190555081602681905550806027819055504360288190555050505050565b610df261288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614801565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610ed282610ec485610eb6888a61289490919063ffffffff16565b61289490919063ffffffff16565b61289490919063ffffffff16565b601481905550806015819055506004601554610eee91906149a5565b60145410610efb57600080fd5b5050505050565b60606040518060400160405280600981526020017f48656c6c5072696e740000000000000000000000000000000000000000000000815250905090565b6000610f4961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90614801565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161110a9190614841565b60405180910390a36001905092915050565b600082611128836120fe565b11905092915050565b6000600754905090565b61114361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790614801565b60405180910390fd5b81601881905550806019819055505050565b6111ea61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90614801565b60405180910390fd5b6002828461128591906149a5565b1115801561129257508183115b61129b57600080fd5b82601e8190555081601f8190555080602181905550505050565b6000600754600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461148357611402826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61148e848484612956565b90509392505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60006115346114e7600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b611526611515600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b60075461301c90919063ffffffff16565b61301c90919063ffffffff16565b905090565b61154161288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590614801565b60405180910390fd5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161162b9291906148b6565b600060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b505050505050565b60006006905090565b61167261288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690614801565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602260009054906101000a900460ff1681565b600061177b8260075461102a565b9050919050565b61178a61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614801565b60405180910390fd5b6103e860075461182791906149a5565b81101561183357600080fd5b8060088190555050565b61184561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990614801565b60405180910390fd5b6103e86007546118e291906149a5565b8110156118ee57600080fd5b8060098190555050565b61190061288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490614801565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602c60009054906101000a900460ff1681565b611a0361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790614801565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611adb573d6000803e3d6000fd5b5050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b3061288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb490614801565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b60095481565b611c8f61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614801565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f48656c6c50000000000000000000000000000000000000000000000000000000815250905090565b611de561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990614801565b60405180910390fd5b620b71b08110611e8157600080fd5b80602b8190555050565b611e9361288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1790614801565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fff338484612956565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61203561288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990614801565b60405180910390fd5b6000602081905550565b601c5481565b601d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061216961210b6114b7565b61215b61214c600261213e601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611adf565b61306690919063ffffffff16565b8561306690919063ffffffff16565b61284290919063ffffffff16565b9050919050565b6000601454905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220961288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90614801565b60405180910390fd5b81602c60006101000a81548160ff02191690831515021790555080602d819055505050565b6fffffffffffffffffffffffffffffffff801681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000436001601c54612309919061494f565b1061231857601454905061232e565b811561232857601454905061232e565b60145490505b919050565b61233b61288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614801565b60405180910390fd5b6123f482600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130e1565b801561243b57426020819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a6021546040516124329190614841565b60405180910390a15b5050565b61244761288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614801565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561255e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61256757600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561265957602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161262292919061462a565b600060405180830381600087803b15801561263c57600080fd5b505af1158015612650573d6000803e3d6000fd5b50505050612728565b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016126f5929190614653565b600060405180830381600087803b15801561270f57600080fd5b505af1158015612723573d6000803e3d6000fd5b505050505b5050565b61273461288c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b890614801565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061288483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613331565b905092915050565b600033905090565b60008082846128a3919061494f565b9050838110156128e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128df906147c1565b60405180910390fd5b8091505092915050565b600083831115829061293a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612931919061475f565b60405180910390fd5b50600083856129499190614a30565b9050809150509392505050565b6000602e60009054906101000a900460ff161561297f57612978848484613394565b9050613015565b60007381b9fa50d5f5155ee17817c21702c3ae4780ad0990506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612a2157508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b9050612a2d8685613502565b80158015612a855750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b195760095484600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad8919061494f565b10612b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0f906147a1565b60405180910390fd5b5b8015612b4c57612b2761359f565b15612b3557612b34613676565b5b612b3d613c32565b15612b4b57612b4a613ce5565b5b5b612bd5846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612c2387613d61565b612c2d5784612c39565b612c38878787613db8565b5b9050612c8d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612df357602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612dbd929190614653565b600060405180830381600087803b158015612dd757600080fd5b505af1925050508015612de8575060015b612df157612df2565b5b5b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f1657602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ee0929190614653565b600060405180830381600087803b158015612efa57600080fd5b505af1925050508015612f0b575060015b612f1457612f15565b5b5b602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479602b546040518263ffffffff1660e01b8152600401612f739190614841565b600060405180830381600087803b158015612f8d57600080fd5b505af1925050508015612f9e575060015b612fa757612fa8565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130059190614841565b60405180910390a3600193505050505b9392505050565b600061305e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128f2565b905092915050565b60008083141561307957600090506130db565b6000828461308791906149d6565b905082848261309691906149a5565b146130d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cd906147e1565b60405180910390fd5b809150505b92915050565b6001602e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561313f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561316d5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181106131cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613242577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b81526004016132df9493929190614713565b6000604051808303818588803b1580156132f857600080fd5b505af115801561330c573d6000803e3d6000fd5b5050505050506000602e60006101000a81548160ff0219169083151502179055505050565b60008083118290613378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336f919061475f565b60405180910390fd5b506000838561338791906149a5565b9050809150509392505050565b600061341f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b482600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6008548111158061355c5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61359b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359290614781565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561360c5750602e60009054906101000a900460ff16155b80156136245750602c60009054906101000a900460ff165b80156136715750602d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602e60006101000a81548160ff02191690831515021790555060006136a160185460195461111c565b6136ad576010546136b0565b60005b905060006136f060026136e26014546136d486602d5461306690919063ffffffff16565b61284290919063ffffffff16565b61284290919063ffffffff16565b9050600061370982602d5461301c90919063ffffffff16565b90506000600267ffffffffffffffff81111561374e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561377c5781602001602082028036833780820191505090505b50905030816000815181106137ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613851577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016138f495949392919061485c565b600060405180830381600087803b15801561390e57600080fd5b505af1158015613922573d6000803e3d6000fd5b50505050600061393b824761301c90919063ffffffff16565b9050600061396761395660028961284290919063ffffffff16565b60145461301c90919063ffffffff16565b905060006139a36002613995846139878c8861306690919063ffffffff16565b61284290919063ffffffff16565b61284290919063ffffffff16565b905060006139ce836139c06012548761306690919063ffffffff16565b61284290919063ffffffff16565b905060006139f9846139eb6013548861306690919063ffffffff16565b61284290919063ffffffff16565b9050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a6557600080fd5b505af193505050508015613a77575060015b613a8057613a81565b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613ae9573d6000803e3d6000fd5b506000891115613c0b57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613b7c9695949392919061467c565b6060604051808303818588803b158015613b9557600080fd5b505af1158015613ba9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bce919061428b565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051613c029291906148b6565b60405180910390a15b505050505050505050506000602e60006101000a81548160ff021916908315150217905550565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613c9f5750602e60009054906101000a900460ff16155b8015613cb75750602260009054906101000a900460ff165b8015613cd2575043602754602854613ccf919061494f565b11155b8015613ce057506026544710155b905090565b613d13602654600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130e1565b43602881905550613d3160265460255461289490919063ffffffff16565b6025819055506024546025541115613d5f576000602260006101000a81548160ff0219169083151502179055505b565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613e3a601554613e2c613e1d601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146122f7565b8661306690919063ffffffff16565b61284290919063ffffffff16565b9050613e8e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f2e9190614841565b60405180910390a3613f49818461301c90919063ffffffff16565b9150509392505050565b600081359050613f6281614b91565b92915050565b600081359050613f7781614ba8565b92915050565b600081359050613f8c81614bbf565b92915050565b600081519050613fa181614bbf565b92915050565b600060208284031215613fb957600080fd5b6000613fc784828501613f53565b91505092915050565b60008060408385031215613fe357600080fd5b6000613ff185828601613f53565b925050602061400285828601613f53565b9150509250929050565b60008060006060848603121561402157600080fd5b600061402f86828701613f53565b935050602061404086828701613f53565b925050604061405186828701613f7d565b9150509250925092565b6000806040838503121561406e57600080fd5b600061407c85828601613f53565b925050602061408d85828601613f68565b9150509250929050565b600080604083850312156140aa57600080fd5b60006140b885828601613f53565b92505060206140c985828601613f7d565b9150509250929050565b6000602082840312156140e557600080fd5b60006140f384828501613f68565b91505092915050565b6000806040838503121561410f57600080fd5b600061411d85828601613f68565b925050602061412e85828601613f7d565b9150509250929050565b6000806000806080858703121561414e57600080fd5b600061415c87828801613f68565b945050602061416d87828801613f7d565b935050604061417e87828801613f7d565b925050606061418f87828801613f7d565b91505092959194509250565b6000602082840312156141ad57600080fd5b60006141bb84828501613f7d565b91505092915050565b600080604083850312156141d757600080fd5b60006141e585828601613f7d565b92505060206141f685828601613f68565b9150509250929050565b6000806040838503121561421357600080fd5b600061422185828601613f7d565b925050602061423285828601613f7d565b9150509250929050565b60008060006060848603121561425157600080fd5b600061425f86828701613f7d565b935050602061427086828701613f7d565b925050604061428186828701613f7d565b9150509250925092565b6000806000606084860312156142a057600080fd5b60006142ae86828701613f92565b93505060206142bf86828701613f92565b92505060406142d086828701613f92565b9150509250925092565b600080600080600060a086880312156142f257600080fd5b600061430088828901613f7d565b955050602061431188828901613f7d565b945050604061432288828901613f7d565b935050606061433388828901613f7d565b925050608061434488828901613f7d565b9150509295509295909350565b600061435d8383614369565b60208301905092915050565b61437281614a64565b82525050565b61438181614a64565b82525050565b60006143928261490a565b61439c818561492d565b93506143a7836148fa565b8060005b838110156143d85781516143bf8882614351565b97506143ca83614920565b9250506001810190506143ab565b5085935050505092915050565b6143ee81614a76565b82525050565b6143fd81614ab9565b82525050565b61440c81614add565b82525050565b600061441d82614915565b614427818561493e565b9350614437818560208601614aef565b61444081614b80565b840191505092915050565b600061445860118361493e565b91507f5458204c696d69742045786365656465640000000000000000000000000000006000830152602082019050919050565b6000614498601d8361493e565b91507f4d61782077616c6c657420686173206265656e207472696767657265640000006000830152602082019050919050565b60006144d8601b8361493e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061451860218361493e565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061457e60208361493e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006145be60148361493e565b91507f416c7265616479206c61756e6368656420626f690000000000000000000000006000830152602082019050919050565b6145fa81614aa2565b82525050565b61460981614aac565b82525050565b60006020820190506146246000830184614378565b92915050565b600060408201905061463f6000830185614378565b61464c6020830184614403565b9392505050565b60006040820190506146686000830185614378565b61467560208301846145f1565b9392505050565b600060c0820190506146916000830189614378565b61469e60208301886145f1565b6146ab6040830187614403565b6146b86060830186614403565b6146c56080830185614378565b6146d260a08301846145f1565b979650505050505050565b60006020820190506146f260008301846143e5565b92915050565b600060208201905061470d60008301846143f4565b92915050565b60006080820190506147286000830187614403565b818103602083015261473a8186614387565b90506147496040830185614378565b61475660608301846145f1565b95945050505050565b600060208201905081810360008301526147798184614412565b905092915050565b6000602082019050818103600083015261479a8161444b565b9050919050565b600060208201905081810360008301526147ba8161448b565b9050919050565b600060208201905081810360008301526147da816144cb565b9050919050565b600060208201905081810360008301526147fa8161450b565b9050919050565b6000602082019050818103600083015261481a81614571565b9050919050565b6000602082019050818103600083015261483a816145b1565b9050919050565b600060208201905061485660008301846145f1565b92915050565b600060a08201905061487160008301886145f1565b61487e6020830187614403565b81810360408301526148908186614387565b905061489f6060830185614378565b6148ac60808301846145f1565b9695505050505050565b60006040820190506148cb60008301856145f1565b6148d860208301846145f1565b9392505050565b60006020820190506148f46000830184614600565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061495a82614aa2565b915061496583614aa2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561499a57614999614b22565b5b828201905092915050565b60006149b082614aa2565b91506149bb83614aa2565b9250826149cb576149ca614b51565b5b828204905092915050565b60006149e182614aa2565b91506149ec83614aa2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a2557614a24614b22565b5b828202905092915050565b6000614a3b82614aa2565b9150614a4683614aa2565b925082821015614a5957614a58614b22565b5b828203905092915050565b6000614a6f82614a82565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614ac482614acb565b9050919050565b6000614ad682614a82565b9050919050565b6000614ae882614aa2565b9050919050565b60005b83811015614b0d578082015181840152602081019050614af2565b83811115614b1c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b614b9a81614a64565b8114614ba557600080fd5b50565b614bb181614a76565b8114614bbc57600080fd5b50565b614bc881614aa2565b8114614bd357600080fd5b5056fea26469706673582212209d10a83ec6aaf8a4b552364d2ef0bddeb776f789433923b8475ebfd7673eac5d64736f6c63430008000033608060405273efb15ef34f85632fd1d4c17fc130ccee3d3d48ae600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073deaddeaddeaddeaddeaddeaddeaddeaddead0000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e55348015620000e057600080fd5b50604051620020c3380380620020c38339818101604052810190620001069190620001f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000157577381b9fa50d5f5155ee17817c21702c3ae4780ad0962000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000271565b600081519050620001f18162000257565b92915050565b6000602082840312156200020a57600080fd5b60006200021a84828501620001e0565b91505092915050565b6000620002308262000237565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620002628162000223565b81146200026e57600080fd5b50565b611e4280620002816000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611ac6565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611750565b61032d565b005b34801561014257600080fd5b5061015d60048036038101906101589190611727565b6105ec565b60405161016a9190611ac6565b60405180910390f35b34801561017f57600080fd5b5061019a60048036038101906101959190611807565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be9190611ac6565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e99190611ac6565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b6040516102149190611ac6565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611727565b610782565b60405161025393929190611ae1565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610c0e565b6040516102889190611ac6565b60405180910390f35b34801561029d57600080fd5b506102a6610c14565b6040516102b39190611ac6565b60405180910390f35b3480156102c857600080fd5b506102d1610c1a565b005b3480156102df57600080fd5b506102fa60048036038101906102f591906117b5565b610c25565b005b34801561030857600080fd5b50610311610e05565b60405161031e9190611ac6565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610e0b565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a826110b2565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82611161565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461140090919063ffffffff16565b61144a90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc818361140090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161086191906119d4565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b191906117de565b90506000600267ffffffffffffffff8111156108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109245781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610984577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610ab89493929190611a18565b6000604051808303818588803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b50505050506000610ba983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4b91906119d4565b60206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b91906117de565b61140090919063ffffffff16565b9050610bc08160095461144a90919063ffffffff16565b600981905550610c03610bf2600854610be484600c546114da90919063ffffffff16565b61155590919063ffffffff16565b600b5461144a90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610c2333610e0b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7d57600080fd5b600060048054905090506000811415610c965750610e02565b6000805a905060005b8483108015610cad57508381105b15610dfd5783600f5410610cc4576000600f819055505b610d336004600f5481548110610d03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159f565b15610da857610da76004600f5481548110610d77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e0b565b5b610dcd610dbe5a8461140090919063ffffffff16565b8461144a90919063ffffffff16565b92505a9150600f6000815480929190610de590611d0f565b91905055508080610df590611d0f565b915050610c9f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e5b576110af565b6000610e66826105ec565b905060008111156110ad57610e8681600a5461144a90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ee99291906119ef565b602060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b919061178c565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461144a90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611066600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111759190611c4e565b815481106111ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611250577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112f09190611c4e565b81548110611327577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806113c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061144283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061160c565b905092915050565b60008082846114599190611b6d565b90508381101561149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590611a86565b60405180910390fd5b8091505092915050565b60006114d3600c546114c5600b54856114da90919063ffffffff16565b61155590919063ffffffff16565b9050919050565b6000808314156114ed576000905061154f565b600082846114fb9190611bf4565b905082848261150a9190611bc3565b1461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190611aa6565b60405180910390fd5b809150505b92915050565b600061159783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611670565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115ef9190611b6d565b1080156116055750600e54611603836105ec565b115b9050919050565b6000838311158290611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b9190611a64565b60405180910390fd5b50600083856116639190611c4e565b9050809150509392505050565b600080831182906116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae9190611a64565b60405180910390fd5b50600083856116c69190611bc3565b9050809150509392505050565b6000813590506116e281611dc7565b92915050565b6000815190506116f781611dde565b92915050565b60008135905061170c81611df5565b92915050565b60008151905061172181611df5565b92915050565b60006020828403121561173957600080fd5b6000611747848285016116d3565b91505092915050565b6000806040838503121561176357600080fd5b6000611771858286016116d3565b9250506020611782858286016116fd565b9150509250929050565b60006020828403121561179e57600080fd5b60006117ac848285016116e8565b91505092915050565b6000602082840312156117c757600080fd5b60006117d5848285016116fd565b91505092915050565b6000602082840312156117f057600080fd5b60006117fe84828501611712565b91505092915050565b6000806040838503121561181a57600080fd5b6000611828858286016116fd565b9250506020611839858286016116fd565b9150509250929050565b600061184f838361185b565b60208301905092915050565b61186481611c82565b82525050565b61187381611c82565b82525050565b600061188482611b28565b61188e8185611b4b565b935061189983611b18565b8060005b838110156118ca5781516118b18882611843565b97506118bc83611b3e565b92505060018101905061189d565b5085935050505092915050565b6118e081611cca565b82525050565b60006118f182611b33565b6118fb8185611b5c565b935061190b818560208601611cdc565b61191481611db6565b840191505092915050565b600061192c601b83611b5c565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061196c602183611b5c565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6119ce81611cc0565b82525050565b60006020820190506119e9600083018461186a565b92915050565b6000604082019050611a04600083018561186a565b611a1160208301846119c5565b9392505050565b6000608082019050611a2d60008301876118d7565b8181036020830152611a3f8186611879565b9050611a4e604083018561186a565b611a5b60608301846119c5565b95945050505050565b60006020820190508181036000830152611a7e81846118e6565b905092915050565b60006020820190508181036000830152611a9f8161191f565b9050919050565b60006020820190508181036000830152611abf8161195f565b9050919050565b6000602082019050611adb60008301846119c5565b92915050565b6000606082019050611af660008301866119c5565b611b0360208301856119c5565b611b1060408301846119c5565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b7882611cc0565b9150611b8383611cc0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bb857611bb7611d58565b5b828201905092915050565b6000611bce82611cc0565b9150611bd983611cc0565b925082611be957611be8611d87565b5b828204905092915050565b6000611bff82611cc0565b9150611c0a83611cc0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c4357611c42611d58565b5b828202905092915050565b6000611c5982611cc0565b9150611c6483611cc0565b925082821015611c7757611c76611d58565b5b828203905092915050565b6000611c8d82611ca0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611cd582611cc0565b9050919050565b60005b83811015611cfa578082015181840152602081019050611cdf565b83811115611d09576000848401525b50505050565b6000611d1a82611cc0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d4d57611d4c611d58565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b611dd081611c82565b8114611ddb57600080fd5b50565b611de781611c94565b8114611df257600080fd5b50565b611dfe81611cc0565b8114611e0957600080fd5b5056fea2646970667358221220961d3b76cc09a3d93ed78a7d104aa064137476a227ae830442e8be9d645fa1d764736f6c63430008000033