[ { "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": "buyTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyProjectTax", "type": "uint256" } ], "name": "BuyFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "DisabledTransferDelay", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "LimitsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "MarketingWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTx", "type": "uint256" } ], "name": "MaxTxUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxWallet", "type": "uint256" } ], "name": "MaxWalletUpdated", "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": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "ProjectWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "sellTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellProjectTax", "type": "uint256" } ], "name": "SellFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMin", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMax", "type": "uint256" } ], "name": "SwapbackSettingsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "TradingEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "checkMappings", "outputs": [ { "internalType": "bool", "name": "_transferTaxExempt", "type": "bool" }, { "internalType": "bool", "name": "_transferLimitExempt", "type": "bool" }, { "internalType": "bool", "name": "_automatedMarketMakerPairs", "type": "bool" } ], "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": "dexPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableTradingLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "feeExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeReceivers", "outputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "address", "name": "_projectWallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "feesBuySet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "feesSellSet", "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": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "limitsExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "marketingWalletSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxTxLimit", "type": "uint256" } ], "name": "maxTransactionSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxWalletLimit", "type": "uint256" } ], "name": "maxWalletSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "projectWalletSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_anti", "type": "bool" } ], "name": "setAnti", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapbackInf", "outputs": [ { "internalType": "bool", "name": "_swapbackEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_swapBackValueMin", "type": "uint256" }, { "internalType": "uint256", "name": "_swapBackValueMax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enable", "type": "bool" }, { "internalType": "uint256", "name": "_min", "type": "uint256" }, { "internalType": "uint256", "name": "_max", "type": "uint256" } ], "name": "swapbackMinMaxValuesSet", "outputs": [], "stateMutability": "nonpayable", "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": "tradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transactionTaxes", "outputs": [ { "internalType": "uint256", "name": "_buyTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_buyMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_buyProjectTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_sellMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellProjectTax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transactionWalletLimits", "outputs": [ { "internalType": "bool", "name": "_limitsEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTx", "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": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526000600560156101000a81548160ff0219169083151502179055506001600860006101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff0219169083151502179055506001601960006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600881526020017f546f205472756d700000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5452554d500000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000f3d565b5080600490816200010d919062000f3d565b50505062000130620001246200061660201b60201c565b6200061e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620006e460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020291906200108e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029091906200108e565b6040518363ffffffff1660e01b8152600401620002af929190620010d1565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f591906200108e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a0516001620006e460201b60201c565b6200035260a05160016200081e60201b60201c565b6000600a9050600080600a905060008062000372620008bf60201b60201c565b600a6200038091906200128e565b66017e9d8602b400620003949190620012df565b90506103e8600a82620003a89190620012df565b620003b4919062001359565b600a819055506103e8600a82620003cc9190620012df565b620003d8919062001359565b6009819055506103e8600182620003f09190620012df565b620003fc919062001359565b6006819055506064600282620004139190620012df565b6200041f919062001359565b60078190555084600f8190555083601081905550601054600f5462000445919062001391565b600e8190555082601281905550816013819055506013546012546200046b919062001391565b6011819055507394845333028b1204fbe14e1278fd4adde46b22ce600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200051a336001620008c860201b60201c565b6200052d306001620008c860201b60201c565b6200054261dead6001620008c860201b60201c565b62000577600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008c860201b60201c565b6200058a336001620006e460201b60201c565b6200059d306001620006e460201b60201c565b620005b261dead6001620006e460201b60201c565b620005e7600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006e460201b60201c565b620005f83362000a0260201b60201c565b6200060a338262000b1760201b60201c565b505050505050620015c1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006f46200061660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200071a62000c8f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076a906200142d565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516200081291906200146c565b60405180910390a25050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b620008d86200061660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008fe62000c8f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200094e906200142d565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009f691906200146c565b60405180910390a25050565b62000a126200061660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a3862000c8f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a88906200142d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afa90620014ff565b60405180910390fd5b62000b14816200061e60201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b809062001571565b60405180910390fd5b62000b9d6000838362000cb960201b60201c565b806002600082825462000bb1919062001391565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000c08919062001391565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c6f9190620015a4565b60405180910390a362000c8b6000838362000cbe60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d4557607f821691505b60208210810362000d5b5762000d5a62000cfd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000dc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d86565b62000dd1868362000d86565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e1e62000e1862000e128462000de9565b62000df3565b62000de9565b9050919050565b6000819050919050565b62000e3a8362000dfd565b62000e5262000e498262000e25565b84845462000d93565b825550505050565b600090565b62000e6962000e5a565b62000e7681848462000e2f565b505050565b5b8181101562000e9e5762000e9260008262000e5f565b60018101905062000e7c565b5050565b601f82111562000eed5762000eb78162000d61565b62000ec28462000d76565b8101602085101562000ed2578190505b62000eea62000ee18562000d76565b83018262000e7b565b50505b505050565b600082821c905092915050565b600062000f126000198460080262000ef2565b1980831691505092915050565b600062000f2d838362000eff565b9150826002028217905092915050565b62000f488262000cc3565b67ffffffffffffffff81111562000f645762000f6362000cce565b5b62000f70825462000d2c565b62000f7d82828562000ea2565b600060209050601f83116001811462000fb5576000841562000fa0578287015190505b62000fac858262000f1f565b8655506200101c565b601f19841662000fc58662000d61565b60005b8281101562000fef5784890151825560018201915060208501945060208101905062000fc8565b868310156200100f57848901516200100b601f89168262000eff565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010568262001029565b9050919050565b620010688162001049565b81146200107457600080fd5b50565b60008151905062001088816200105d565b92915050565b600060208284031215620010a757620010a662001024565b5b6000620010b78482850162001077565b91505092915050565b620010cb8162001049565b82525050565b6000604082019050620010e86000830185620010c0565b620010f76020830184620010c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200118c57808604811115620011645762001163620010fe565b5b6001851615620011745780820291505b808102905062001184856200112d565b945062001144565b94509492505050565b600082620011a757600190506200127a565b81620011b757600090506200127a565b8160018114620011d05760028114620011db5762001211565b60019150506200127a565b60ff841115620011f057620011ef620010fe565b5b8360020a9150848211156200120a5762001209620010fe565b5b506200127a565b5060208310610133831016604e8410600b84101617156200124b5782820a905083811115620012455762001244620010fe565b5b6200127a565b6200125a84848460016200113a565b92509050818404811115620012745762001273620010fe565b5b81810290505b9392505050565b600060ff82169050919050565b60006200129b8262000de9565b9150620012a88362001281565b9250620012d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001195565b905092915050565b6000620012ec8262000de9565b9150620012f98362000de9565b9250828202620013098162000de9565b91508282048414831517620013235762001322620010fe565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013668262000de9565b9150620013738362000de9565b9250826200138657620013856200132a565b5b828204905092915050565b60006200139e8262000de9565b9150620013ab8362000de9565b9250828201905080821115620013c657620013c5620010fe565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001415602083620013cc565b91506200142282620013dd565b602082019050919050565b60006020820190508181036000830152620014488162001406565b9050919050565b60008115159050919050565b62001466816200144f565b82525050565b60006020820190506200148360008301846200145b565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620014e7602683620013cc565b9150620014f48262001489565b604082019050919050565b600060208201905081810360008301526200151a81620014d8565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001559601f83620013cc565b9150620015668262001521565b602082019050919050565b600060208201905081810360008301526200158c816200154a565b9050919050565b6200159e8162000de9565b82525050565b6000602082019050620015bb600083018462001593565b92915050565b60805160a05161481b620015fc600039600081816115eb0152611dc10152600081816131cb015281816132ac01526132d3015261481b6000f3fe6080604052600436106101fd5760003560e01c80637ff6f7b91161010d578063be258fcd116100a0578063dd62ed3e1161006f578063dd62ed3e1461070b578063dd9cdaed14610748578063e13b200714610774578063f242ab41146107b3578063f2fde38b146107de57610204565b8063be258fcd14610679578063be999d74146106a2578063c636cb48146106b9578063c6e8f075146106e257610204565b806398ae9f35116100dc57806398ae9f35146105ad5780639a7a23d6146105d6578063a457c2d7146105ff578063a9059cbb1461063c57610204565b80637ff6f7b9146105055780638da5cb5b1461052e57806395d89b4114610559578063989cb3471461058457610204565b8063313ce5671161019057806345a6f70a1161015f57806345a6f70a146104295780634ada218b1461045957806370a0823114610484578063715018a6146104c157806376fabf43146104d857610204565b8063313ce5671461036f578063395093511461039a5780633fdc1629146103d75780634363c4861461040057610204565b80631e7fcd33116101cc5780631e7fcd33146102c957806323b872dd146102f2578063293230b81461032f57806329f39bb71461034657610204565b806306fdde0314610209578063095ea7b31461023457806312d15cef1461027157806318160ddd1461029e57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610807565b60405161022b919061340f565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906134ca565b610899565b6040516102689190613525565b60405180910390f35b34801561027d57600080fd5b506102866108b7565b6040516102959392919061354f565b60405180910390f35b3480156102aa57600080fd5b506102b36108dd565b6040516102c09190613586565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906135cd565b6108e7565b005b3480156102fe57600080fd5b506103196004803603810190610314919061360d565b610a0c565b6040516103269190613525565b60405180910390f35b34801561033b57600080fd5b50610344610b04565b005b34801561035257600080fd5b5061036d60048036038101906103689190613660565b610be5565b005b34801561037b57600080fd5b50610384610d10565b60405161039191906136bc565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc91906134ca565b610d19565b6040516103ce9190613525565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f991906136d7565b610dc5565b005b34801561040c57600080fd5b50610427600480360381019061042291906135cd565b610ee7565b005b34801561043557600080fd5b5061043e61100c565b60405161045096959493929190613704565b60405180910390f35b34801561046557600080fd5b5061046e61103b565b60405161047b9190613525565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613765565b61104e565b6040516104b89190613586565b60405180910390f35b3480156104cd57600080fd5b506104d6611096565b005b3480156104e457600080fd5b506104ed61111e565b6040516104fc9392919061354f565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190613792565b611144565b005b34801561053a57600080fd5b506105436111dd565b60405161055091906137ce565b60405180910390f35b34801561056557600080fd5b5061056e611207565b60405161057b919061340f565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906137e9565b611299565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190613660565b611442565b005b3480156105e257600080fd5b506105fd60048036038101906105f891906135cd565b61156d565b005b34801561060b57600080fd5b50610626600480360381019061062191906134ca565b611685565b6040516106339190613525565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906134ca565b611770565b6040516106709190613525565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190613765565b61178e565b005b3480156106ae57600080fd5b506106b76118ca565b005b3480156106c557600080fd5b506106e060048036038101906106db91906136d7565b611990565b005b3480156106ee57600080fd5b5061070960048036038101906107049190613765565b611ab2565b005b34801561071757600080fd5b50610732600480360381019061072d919061383c565b611bee565b60405161073f9190613586565b60405180910390f35b34801561075457600080fd5b5061075d611c75565b60405161076b92919061387c565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190613765565b611cc6565b6040516107aa939291906138a5565b60405180910390f35b3480156107bf57600080fd5b506107c8611dbf565b6040516107d591906137ce565b60405180910390f35b3480156107ea57600080fd5b5061080560048036038101906108009190613765565b611de3565b005b6060600380546108169061390b565b80601f01602080910402602001604051908101604052809291908181526020018280546108429061390b565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60006108ad6108a6611eda565b8484611ee2565b6001905092915050565b6000806000600560159054906101000a900460ff16925060065491506007549050909192565b6000600254905090565b6108ef611eda565b73ffffffffffffffffffffffffffffffffffffffff1661090d6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90613988565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051610a009190613525565b60405180910390a25050565b6000610a198484846120ab565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a64611eda565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613a1a565b60405180910390fd5b610af885610af0611eda565b858403611ee2565b60019150509392505050565b610b0c611eda565b73ffffffffffffffffffffffffffffffffffffffff16610b2a6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7790613988565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b610bed611eda565b73ffffffffffffffffffffffffffffffffffffffff16610c0b6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5890613988565b60405180910390fd5b8160128190555080601381905550601354601254610c7f9190613a69565b60118190555060646011541115610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290613b0f565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f1601154601254601354604051610d0493929190613b2f565b60405180910390a15050565b60006012905090565b6000610dbb610d26611eda565b848460016000610d34611eda565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610db69190613a69565b611ee2565b6001905092915050565b610dcd611eda565b73ffffffffffffffffffffffffffffffffffffffff16610deb6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613988565b60405180910390fd5b6002811015610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90613bb2565b60405180910390fd5b6103e8610e906108dd565b82610e9b9190613bd2565b610ea59190613c43565b600a819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600a54604051610edc9190613586565b60405180910390a150565b610eef611eda565b73ffffffffffffffffffffffffffffffffffffffff16610f0d6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90613988565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516110009190613525565b60405180910390a25050565b600080600080600080600e549550600f5494506010549350601154925060125491506013549050909192939495565b600c60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61109e611eda565b73ffffffffffffffffffffffffffffffffffffffff166110bc6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990613988565b60405180910390fd5b61111c6000612b15565b565b6000806000600860009054906101000a900460ff1692506009549150600a549050909192565b61114c611eda565b73ffffffffffffffffffffffffffffffffffffffff1661116a6111dd565b73ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790613988565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112169061390b565b80601f01602080910402602001604051908101604052809291908181526020018280546112429061390b565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b6112a1611eda565b73ffffffffffffffffffffffffffffffffffffffff166112bf6111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613988565b60405180910390fd5b6001821015611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613ce6565b60405180910390fd5b8181101561139c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139390613d78565b60405180910390fd5b82600560156101000a81548160ff021916908315150217905550612710826113c26108dd565b6113cc9190613bd2565b6113d69190613c43565b600681905550612710816113e86108dd565b6113f29190613bd2565b6113fc9190613c43565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7798383836040516114359392919061354f565b60405180910390a1505050565b61144a611eda565b73ffffffffffffffffffffffffffffffffffffffff166114686111dd565b73ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590613988565b60405180910390fd5b81600f8190555080601081905550601054600f546114dc9190613a69565b600e819055506064600e541115611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90613e0a565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600e54600f5460105460405161156193929190613b2f565b60405180910390a15050565b611575611eda565b73ffffffffffffffffffffffffffffffffffffffff166115936111dd565b73ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613988565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90613e9c565b60405180910390fd5b6116818282612bdb565b5050565b60008060016000611694611eda565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890613f2e565b60405180910390fd5b61176561175c611eda565b85858403611ee2565b600191505092915050565b600061178461177d611eda565b84846120ab565b6001905092915050565b611796611eda565b73ffffffffffffffffffffffffffffffffffffffff166117b46111dd565b73ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613988565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118d2611eda565b73ffffffffffffffffffffffffffffffffffffffff166118f06111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90613988565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b611998611eda565b73ffffffffffffffffffffffffffffffffffffffff166119b66111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0390613988565b60405180910390fd5b6005811015611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613fc0565b60405180910390fd5b6103e8611a5b6108dd565b82611a669190613bd2565b611a709190613c43565b6009819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600954604051611aa79190613586565b60405180910390a150565b611aba611eda565b73ffffffffffffffffffffffffffffffffffffffff16611ad86111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2590613988565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b6000806000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b7f000000000000000000000000000000000000000000000000000000000000000081565b611deb611eda565b73ffffffffffffffffffffffffffffffffffffffff16611e096111dd565b73ffffffffffffffffffffffffffffffffffffffff1614611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690613988565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec590614052565b60405180910390fd5b611ed781612b15565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f48906140e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb790614176565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161209e9190613586565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061429a565b60405180910390fd5b600081036121a25761219d83836000612c7c565b612b10565b600860009054906101000a900460ff161561269d576121bf6111dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561222d57506121fd6111dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122665750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122a0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122b95750600560149054906101000a900460ff16155b1561269c57600c60009054906101000a900460ff166123b357601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123735750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a99061432c565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124565750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124fd57600a548111156124a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612497906143be565b60405180910390fd5b6009546124ac8361104e565b826124b79190613a69565b11156124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef9061442a565b60405180910390fd5b61269b565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125a05750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125ef57600a548111156125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e1906144bc565b60405180910390fd5b61269a565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126995760095461264c8361104e565b826126579190613a69565b1115612698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268f9061442a565b60405180910390fd5b5b5b5b5b5b60006126a83061104e565b9050600060065482101590508080156126cd5750600560159054906101000a900460ff165b80156126e65750600560149054906101000a900460ff16155b801561273c5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127925750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127e85750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561282d576001600560146101000a81548160ff02191690831515021790555061281183612efb565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128e35750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128ed57600090505b60008115612b0057601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561295057506000601154115b156129ea5761297d606461296f601154886130f690919063ffffffff16565b61310c90919063ffffffff16565b9050601154601354826129909190613bd2565b61299a9190613c43565b601560008282546129ab9190613a69565b92505081905550601154601254826129c39190613bd2565b6129cd9190613c43565b601460008282546129de9190613a69565b92505081905550612adc565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a4557506000600e54115b15612adb57612a726064612a64600e54886130f690919063ffffffff16565b61310c90919063ffffffff16565b9050600e5460105482612a859190613bd2565b612a8f9190613c43565b60156000828254612aa09190613a69565b92505081905550600e54600f5482612ab89190613bd2565b612ac29190613c43565b60146000828254612ad39190613a69565b925050819055505b5b6000811115612af157612af0873083612c7c565b5b8085612afd91906144dc565b94505b612b0b878787612c7c565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce290614208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d519061429a565b60405180910390fd5b612d65838383613122565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de290614582565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e7e9190613a69565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee29190613586565b60405180910390a3612ef5848484613127565b50505050565b6000612f063061104e565b905060008190506000808303612f1e575050506130f3565b600754831115612f2e5760075492505b601960009054906101000a900460ff168015612f555750600584612f529190613bd2565b83115b15612f6a57600584612f679190613bd2565b92505b60008390506000479050612f7d8261312c565b6000612f92824761336990919063ffffffff16565b90506000612fbd86612faf601554856130f690919063ffffffff16565b61310c90919063ffffffff16565b905060006014819055506000601581905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613015906145d3565b60006040518083038185875af1925050503d8060008114613052576040519150601f19603f3d011682016040523d82523d6000602084013e613057565b606091505b505080955050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130a3906145d3565b60006040518083038185875af1925050503d80600081146130e0576040519150601f19603f3d011682016040523d82523d6000602084013e6130e5565b606091505b505080955050505050505050505b50565b600081836131049190613bd2565b905092915050565b6000818361311a9190613c43565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115613149576131486145e8565b5b6040519080825280602002602001820160405280156131775781602001602082028036833780820191505090505b509050308160008151811061318f5761318e614617565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613234573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613258919061465b565b8160018151811061326c5761326b614617565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132d1307f000000000000000000000000000000000000000000000000000000000000000084611ee2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161333395949392919061478b565b600060405180830381600087803b15801561334d57600080fd5b505af1158015613361573d6000803e3d6000fd5b505050505050565b6000818361337791906144dc565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133b957808201518184015260208101905061339e565b60008484015250505050565b6000601f19601f8301169050919050565b60006133e18261337f565b6133eb818561338a565b93506133fb81856020860161339b565b613404816133c5565b840191505092915050565b6000602082019050818103600083015261342981846133d6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061346182613436565b9050919050565b61347181613456565b811461347c57600080fd5b50565b60008135905061348e81613468565b92915050565b6000819050919050565b6134a781613494565b81146134b257600080fd5b50565b6000813590506134c48161349e565b92915050565b600080604083850312156134e1576134e0613431565b5b60006134ef8582860161347f565b9250506020613500858286016134b5565b9150509250929050565b60008115159050919050565b61351f8161350a565b82525050565b600060208201905061353a6000830184613516565b92915050565b61354981613494565b82525050565b60006060820190506135646000830186613516565b6135716020830185613540565b61357e6040830184613540565b949350505050565b600060208201905061359b6000830184613540565b92915050565b6135aa8161350a565b81146135b557600080fd5b50565b6000813590506135c7816135a1565b92915050565b600080604083850312156135e4576135e3613431565b5b60006135f28582860161347f565b9250506020613603858286016135b8565b9150509250929050565b60008060006060848603121561362657613625613431565b5b60006136348682870161347f565b93505060206136458682870161347f565b9250506040613656868287016134b5565b9150509250925092565b6000806040838503121561367757613676613431565b5b6000613685858286016134b5565b9250506020613696858286016134b5565b9150509250929050565b600060ff82169050919050565b6136b6816136a0565b82525050565b60006020820190506136d160008301846136ad565b92915050565b6000602082840312156136ed576136ec613431565b5b60006136fb848285016134b5565b91505092915050565b600060c0820190506137196000830189613540565b6137266020830188613540565b6137336040830187613540565b6137406060830186613540565b61374d6080830185613540565b61375a60a0830184613540565b979650505050505050565b60006020828403121561377b5761377a613431565b5b60006137898482850161347f565b91505092915050565b6000602082840312156137a8576137a7613431565b5b60006137b6848285016135b8565b91505092915050565b6137c881613456565b82525050565b60006020820190506137e360008301846137bf565b92915050565b60008060006060848603121561380257613801613431565b5b6000613810868287016135b8565b9350506020613821868287016134b5565b9250506040613832868287016134b5565b9150509250925092565b6000806040838503121561385357613852613431565b5b60006138618582860161347f565b92505060206138728582860161347f565b9150509250929050565b600060408201905061389160008301856137bf565b61389e60208301846137bf565b9392505050565b60006060820190506138ba6000830186613516565b6138c76020830185613516565b6138d46040830184613516565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061392357607f821691505b602082108103613936576139356138dc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061397260208361338a565b915061397d8261393c565b602082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a0460288361338a565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7482613494565b9150613a7f83613494565b9250828201905080821115613a9757613a96613a3a565b5b92915050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000613af960298361338a565b9150613b0482613a9d565b604082019050919050565b60006020820190508181036000830152613b2881613aec565b9050919050565b6000606082019050613b446000830186613540565b613b516020830185613540565b613b5e6040830184613540565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b6000613b9c60208361338a565b9150613ba782613b66565b602082019050919050565b60006020820190508181036000830152613bcb81613b8f565b9050919050565b6000613bdd82613494565b9150613be883613494565b9250828202613bf681613494565b91508282048414831517613c0d57613c0c613a3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c4e82613494565b9150613c5983613494565b925082613c6957613c68613c14565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613cd060348361338a565b9150613cdb82613c74565b604082019050919050565b60006020820190508181036000830152613cff81613cc3565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b6000613d62602a8361338a565b9150613d6d82613d06565b604082019050919050565b60006020820190508181036000830152613d9181613d55565b9050919050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b6000613df460288361338a565b9150613dff82613d98565b604082019050919050565b60006020820190508181036000830152613e2381613de7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e8660398361338a565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f1860258361338a565b9150613f2382613ebc565b604082019050919050565b60006020820190508181036000830152613f4781613f0b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613faa60248361338a565b9150613fb582613f4e565b604082019050919050565b60006020820190508181036000830152613fd981613f9d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061403c60268361338a565b915061404782613fe0565b604082019050919050565b6000602082019050818103600083015261406b8161402f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140ce60248361338a565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061416060228361338a565b915061416b82614104565b604082019050919050565b6000602082019050818103600083015261418f81614153565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141f260258361338a565b91506141fd82614196565b604082019050919050565b60006020820190508181036000830152614221816141e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061428460238361338a565b915061428f82614228565b604082019050919050565b600060208201905081810360008301526142b381614277565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061431660228361338a565b9150614321826142ba565b604082019050919050565b6000602082019050818103600083015261434581614309565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b60006143a860268361338a565b91506143b38261434c565b604082019050919050565b600060208201905081810360008301526143d78161439b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061441460138361338a565b915061441f826143de565b602082019050919050565b6000602082019050818103600083015261444381614407565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b60006144a660278361338a565b91506144b18261444a565b604082019050919050565b600060208201905081810360008301526144d581614499565b9050919050565b60006144e782613494565b91506144f283613494565b925082820390508181111561450a57614509613a3a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061456c60268361338a565b915061457782614510565b604082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b600081905092915050565b50565b60006145bd6000836145a2565b91506145c8826145ad565b600082019050919050565b60006145de826145b0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061465581613468565b92915050565b60006020828403121561467157614670613431565b5b600061467f84828501614646565b91505092915050565b6000819050919050565b6000819050919050565b60006146b76146b26146ad84614688565b614692565b613494565b9050919050565b6146c78161469c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61470281613456565b82525050565b600061471483836146f9565b60208301905092915050565b6000602082019050919050565b6000614738826146cd565b61474281856146d8565b935061474d836146e9565b8060005b8381101561477e5781516147658882614708565b975061477083614720565b925050600181019050614751565b5085935050505092915050565b600060a0820190506147a06000830188613540565b6147ad60208301876146be565b81810360408301526147bf818661472d565b90506147ce60608301856137bf565b6147db6080830184613540565b969550505050505056fea26469706673582212208a5eebcd76e17d8c3de753c2764a9920cacd1deacaf665766d681eb01e65730f64736f6c63430008130033