[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "AMMPair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isPair", "type": "bool" } ], "name": "AMMPairsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxBuyAmount", "type": "uint256" } ], "name": "MaxBuyAmountUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxWalletAmount", "type": "uint256" } ], "name": "MaxWalletAmountUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "routerV2", "type": "address" } ], "name": "RouterV2Updated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "swapThresholdRatio", "type": "uint16" } ], "name": "SwapThresholdUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "taxwalletAddress", "type": "address" } ], "name": "taxwalletAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "taxwalletFeeSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "buyFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "sellFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "transferFee", "type": "uint16" } ], "name": "taxwalletFeesUpdated", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "AMMPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "excludeFromLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllPending", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSwapThresholdAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBuyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWalletAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pairV2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "routerV2", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "isPair", "type": "bool" } ], "name": "setAMMPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapThresholdRatio", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxwalletAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newAddress", "type": "address" } ], "name": "taxwalletAddressSetup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "taxwalletFees", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_buyFee", "type": "uint16" }, { "internalType": "uint16", "name": "_sellFee", "type": "uint16" }, { "internalType": "uint16", "name": "_transferFee", "type": "uint16" } ], "name": "taxwalletFeesSetup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "totalFees", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxBuyAmount", "type": "uint256" } ], "name": "updateMaxBuyAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWalletAmount", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "updateRouterV2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_swapThresholdRatio", "type": "uint16" } ], "name": "updateSwapThreshold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506040518060400160405280600381526020017f4f564f00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f564f000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062001049565b508060049080519060200190620000af92919062001049565b505050620000d2620000c66200021960201b60201c565b6200022160201b60201c565b6000732d9dccf103d26bd87cf9bfad369345c7f85675d99050620000fd60326200025f60201b60201c565b62000122732d9dccf103d26bd87cf9bfad369345c7f85675d96200032560201b60201c565b62000138610fa08060006200044b60201b60201c565b6200014b8160016200081660201b60201c565b6200015e3060016200081660201b60201c565b62000171816001620008d160201b60201c565b62000184306001620008d160201b60201c565b6200019860006001620008d160201b60201c565b620001b46a013da329b63364718000006200097c60201b60201c565b620001d06a013da329b633647180000062000a2460201b60201c565b620001ed816a52b7d2dcc80cd2e400000062000acc60201b60201c565b62000212732d9dccf103d26bd87cf9bfad369345c7f85675d96200022160201b60201c565b5062001a69565b600033905090565b600660006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200025c8162000c3a60201b62001ae01760201c565b50565b6200026f62000d0060201b60201c565b60008161ffff161180156200028a57506101f48161ffff1611155b620002cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c3906200124a565b60405180910390fd5b80600660146101000a81548161ffff021916908361ffff1602179055507fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f1720816040516200031a91906200128b565b60405180910390a150565b6200033562000d0060201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620003a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200039f9062001344565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fc8160016200081660201b60201c565b6200040f816001620008d160201b60201c565b7f6e25174a1c60e9d62c82eed735a7d443dd0b6ea68bc2d0d936273e08fb532cac81604051620004409190620013ab565b60405180910390a150565b6200045b62000d0060201b60201c565b826009600060038110620004745762000473620013c8565b5b601091828204019190066002029054906101000a900461ffff16600b600060038110620004a657620004a5620013c8565b5b601091828204019190066002029054906101000a900461ffff16620004cc919062001426565b620004d8919062001461565b600b600060038110620004f057620004ef620013c8565b5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055508160096001600381106200052e576200052d620013c8565b5b601091828204019190066002029054906101000a900461ffff16600b60016003811062000560576200055f620013c8565b5b601091828204019190066002029054906101000a900461ffff1662000586919062001426565b62000592919062001461565b600b600160038110620005aa57620005a9620013c8565b5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550806009600260038110620005e857620005e7620013c8565b5b601091828204019190066002029054906101000a900461ffff16600b6002600381106200061a5762000619620013c8565b5b601091828204019190066002029054906101000a900461ffff1662000640919062001426565b6200064c919062001461565b600b600260038110620006645762000663620013c8565b5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550611388600b600060038110620006a457620006a3620013c8565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611158015620007085750611388600b600160038110620006e757620006e6620013c8565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b80156200074c5750611388600b6002600381106200072b576200072a620013c8565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b6200078e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007859062001516565b60405180910390fd5b60405180606001604052808461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff168152506009906003620007d3929190620010da565b507f4963431b187ee291501376bba89c8c815c04c831b33839c8b2ec099899153df4838383604051620008099392919062001538565b60405180910390a1505050565b6200082662000d0060201b60201c565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008c5919062001592565b60405180910390a25050565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928260405162000970919062001592565b60405180910390a25050565b6200098c62000d0060201b60201c565b6200099c62000d9160201b60201c565b811015620009e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d890620015ff565b60405180910390fd5b806010819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e0018160405162000a1991906200163c565b60405180910390a150565b62000a3462000d0060201b60201c565b62000a4462000db760201b60201c565b81101562000a89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8090620016a9565b60405180910390fd5b806011819055507fd0459d371e1defb856088ceda9d33bfed2a31a105e0bae2113cdc7dcc9e77e9d8160405162000ac191906200163c565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b36906200171b565b60405180910390fd5b62000b536000838362000deb60201b60201c565b806002600082825462000b6791906200173d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c1a91906200163c565b60405180910390a362000c366000838362000efb60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000d106200021960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000d3662000fc360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d8690620017ea565b60405180910390fd5b565b60006103e862000da662000fed60201b60201c565b62000db291906200183b565b905090565b6000612710600562000dce62000fed60201b60201c565b62000dda919062001873565b62000de691906200183b565b905090565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801562000e8f5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000ede5760115481111562000edd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ed4906200194a565b60405180910390fd5b5b62000ef683838362000ff760201b62001ba61760201c565b505050565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000fa65760105462000f618362000ffc60201b60201c565b111562000fa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9c90620019e2565b60405180910390fd5b5b62000fbe8383836200104460201b62001bab1760201c565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600254905090565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b505050565b828054620010579062001a33565b90600052602060002090601f0160209004810192826200107b5760008555620010c7565b82601f106200109657805160ff1916838001178555620010c7565b82800160010185558215620010c7579182015b82811115620010c6578251825591602001919060010190620010a9565b5b509050620010d691906200117e565b5090565b826003600f016010900481019282156200116b5791602002820160005b838211156200113957835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302620010f7565b8015620011695782816101000a81549061ffff021916905560020160208160010104928301926001030262001139565b505b5090506200117a91906200117e565b5090565b5b80821115620011995760008160009055506001016200117f565b5090565b600082825260208201905092915050565b7f537761705468726573686f6c643a2043616e6e6f7420657863656564206c696d60008201527f6974732066726f6d20302e30312520746f20352520666f72206e65772073776160208201527f70207468726573686f6c64000000000000000000000000000000000000000000604082015250565b600062001232604b836200119d565b91506200123f82620011ae565b606082019050919050565b60006020820190508181036000830152620012658162001223565b9050919050565b600061ffff82169050919050565b62001285816200126c565b82525050565b6000602082019050620012a260008301846200127a565b92915050565b7f546178657344656661756c74526f7574657257616c6c65743a2057616c6c657460008201527f2074617820726563697069656e742063616e6e6f74206265206120307830206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015250565b60006200132c6046836200119d565b91506200133982620012a8565b606082019050919050565b600060208201905081810360008301526200135f816200131d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013938262001366565b9050919050565b620013a58162001386565b82525050565b6000602082019050620013c260008301846200139a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001433826200126c565b915062001440836200126c565b925082821015620014565762001455620013f7565b5b828203905092915050565b60006200146e826200126c565b91506200147b836200126c565b92508261ffff03821115620014955762001494620013f7565b5b828201905092915050565b7f546178657344656661756c74526f757465723a2043616e6e6f7420657863656560008201527f64206d617820746f74616c20666565206f662035302500000000000000000000602082015250565b6000620014fe6036836200119d565b91506200150b82620014a0565b604082019050919050565b600060208201905081810360008301526200153181620014ef565b9050919050565b60006060820190506200154f60008301866200127a565b6200155e60208301856200127a565b6200156d60408301846200127a565b949350505050565b60008115159050919050565b6200158c8162001575565b82525050565b6000602082019050620015a9600083018462001581565b92915050565b7f4d617857616c6c65743a204c696d697420746f6f206c6f770000000000000000600082015250565b6000620015e76018836200119d565b9150620015f482620015af565b602082019050919050565b600060208201905081810360008301526200161a81620015d8565b9050919050565b6000819050919050565b620016368162001621565b82525050565b60006020820190506200165360008301846200162b565b92915050565b7f4d617854783a204c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000620016916014836200119d565b91506200169e8262001659565b602082019050919050565b60006020820190508181036000830152620016c48162001682565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001703601f836200119d565b91506200171082620016cb565b602082019050919050565b600060208201905081810360008301526200173681620016f4565b9050919050565b60006200174a8262001621565b9150620017578362001621565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200178f576200178e620013f7565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620017d26020836200119d565b9150620017df826200179a565b602082019050919050565b600060208201905081810360008301526200180581620017c3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620018488262001621565b9150620018558362001621565b9250826200186857620018676200180c565b5b828204905092915050565b6000620018808262001621565b91506200188d8362001621565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620018c957620018c8620013f7565b5b828202905092915050565b7f4d617854783a2043616e6e6f7420657863656564206d617820627579206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b6000620019326022836200119d565b91506200193f82620018d4565b604082019050919050565b60006020820190508181036000830152620019658162001923565b9050919050565b7f4d617857616c6c65743a2043616e6e6f7420657863656564206d61782077616c60008201527f6c6574206c696d69740000000000000000000000000000000000000000000000602082015250565b6000620019ca6029836200119d565b9150620019d7826200196c565b604082019050919050565b60006020820190508181036000830152620019fd81620019bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062001a4c57607f821691505b6020821081141562001a635762001a6262001a04565b5b50919050565b6144308062001a796000396000f3fe60806040526004361061023f5760003560e01c806379ba50971161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146108b6578063e30c3978146108f3578063f112ba721461091e578063f2fde38b14610949578063f7d3eca51461097257610246565b8063c0246668146107e5578063c0a904a21461080e578063c18bc19514610837578063c1d4212d14610860578063d94775261461088b57610246565b806395d89b41116100f257806395d89b41146106ec578063a457c2d714610717578063a9059cbb14610754578063aa4bde2814610791578063afbfcbbc146107bc57610246565b806379ba50971461062b57806379cc67901461064257806388e765ff1461066b5780638da5cb5b146106965780638fffabed146106c157610246565b806342966c68116101bc5780635cce86cd116101805780635cce86cd1461052057806370a082311461055d578063715018a61461059a57806375c211e0146105b157806376856557146105ee57610246565b806342966c681461043b5780634f011b83146104645780634fbee1931461048f578063502f7446146104cc57806356417fef146104f757610246565b80632be32b61116102035780632be32b61146103445780632d99d32e1461036d578063313ce5671461039657806339509351146103c1578063408ccbdf146103fe57610246565b806306fdde031461024b578063095ea7b31461027657806318160ddd146102b35780631a0e718c146102de57806323b872dd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061099b565b60405161026d9190613041565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906130fc565b610a2d565b6040516102aa9190613157565b60405180910390f35b3480156102bf57600080fd5b506102c8610a50565b6040516102d59190613181565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906131d6565b610a5a565b005b34801561031357600080fd5b5061032e60048036038101906103299190613203565b610b12565b60405161033b9190613157565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613256565b610b41565b005b34801561037957600080fd5b50610394600480360381019061038f91906132af565b610bd4565b005b3480156103a257600080fd5b506103ab610c7b565b6040516103b8919061330b565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e391906130fc565b610c84565b6040516103f59190613157565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613256565b610cbb565b6040516104329190613335565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613256565b610ce9565b005b34801561047057600080fd5b50610479610cfd565b6040516104869190613335565b60405180910390f35b34801561049b57600080fd5b506104b660048036038101906104b19190613350565b610d11565b6040516104c39190613157565b60405180910390f35b3480156104d857600080fd5b506104e1610d31565b6040516104ee91906133dc565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190613350565b610d57565b005b34801561052c57600080fd5b5061054760048036038101906105429190613350565b610e60565b6040516105549190613157565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190613350565b610e80565b6040516105919190613181565b60405180910390f35b3480156105a657600080fd5b506105af610ec8565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190613256565b610edc565b6040516105e59190613335565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613350565b610f0a565b6040516106229190613157565b60405180910390f35b34801561063757600080fd5b50610640610f2a565b005b34801561064e57600080fd5b50610669600480360381019061066491906130fc565b610fb7565b005b34801561067757600080fd5b50610680610fd7565b60405161068d9190613181565b60405180910390f35b3480156106a257600080fd5b506106ab610fdd565b6040516106b89190613406565b60405180910390f35b3480156106cd57600080fd5b506106d6611007565b6040516106e39190613406565b60405180910390f35b3480156106f857600080fd5b5061070161102d565b60405161070e9190613041565b60405180910390f35b34801561072357600080fd5b5061073e600480360381019061073991906130fc565b6110bf565b60405161074b9190613157565b60405180910390f35b34801561076057600080fd5b5061077b600480360381019061077691906130fc565b611136565b6040516107889190613157565b60405180910390f35b34801561079d57600080fd5b506107a6611159565b6040516107b39190613181565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613350565b61115f565b005b3480156107f157600080fd5b5061080c600480360381019061080791906132af565b611404565b005b34801561081a57600080fd5b50610835600480360381019061083091906132af565b6114b5565b005b34801561084357600080fd5b5061085e60048036038101906108599190613256565b6114cb565b005b34801561086c57600080fd5b5061087561155e565b6040516108829190613406565b60405180910390f35b34801561089757600080fd5b506108a0611584565b6040516108ad9190613181565b60405180910390f35b3480156108c257600080fd5b506108dd60048036038101906108d89190613421565b6115e2565b6040516108ea9190613181565b60405180910390f35b3480156108ff57600080fd5b50610908611669565b6040516109159190613406565b60405180910390f35b34801561092a57600080fd5b50610933611693565b6040516109409190613181565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190613350565b6116a9565b005b34801561097e57600080fd5b5061099960048036038101906109949190613461565b611756565b005b6060600380546109aa906134e3565b80601f01602080910402602001604051908101604052809291908181526020018280546109d6906134e3565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050905090565b600080610a38611bb0565b9050610a45818585611bb8565b600191505092915050565b6000600254905090565b610a62611d83565b60008161ffff16118015610a7c57506101f48161ffff1611155b610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906135ad565b60405180910390fd5b80600660146101000a81548161ffff021916908361ffff1602179055507fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f172081604051610b079190613335565b60405180910390a150565b600080610b1d611bb0565b9050610b2a858285611e01565b610b35858585611e8d565b60019150509392505050565b610b49611d83565b610b516124df565b811015610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90613619565b60405180910390fd5b806011819055507fd0459d371e1defb856088ceda9d33bfed2a31a105e0bae2113cdc7dcc9e77e9d81604051610bc99190613181565b60405180910390a150565b610bdc611d83565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906136ab565b60405180910390fd5b610c778282612507565b5050565b60006012905090565b600080610c8f611bb0565b9050610cb0818585610ca185896115e2565b610cab91906136fa565b611bb8565b600191505092915050565b600b8160038110610ccb57600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b610cfa610cf4611bb0565b826125c2565b50565b600660149054906101000a900461ffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d5f611d83565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc6906137e8565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e1b816001611404565b610e26816001612790565b7f6e25174a1c60e9d62c82eed735a7d443dd0b6ea68bc2d0d936273e08fb532cac81604051610e559190613406565b60405180910390a150565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed0611d83565b610eda6000612839565b565b60098160038110610eec57600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000610f34611bb0565b90508073ffffffffffffffffffffffffffffffffffffffff16610f55611669565b73ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061387a565b60405180910390fd5b610fb481612839565b50565b610fc982610fc3611bb0565b83611e01565b610fd382826125c2565b5050565b60115481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461103c906134e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611068906134e3565b80156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b5050505050905090565b6000806110ca611bb0565b905060006110d882866115e2565b90508381101561111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111149061390c565b60405180910390fd5b61112a8286868403611bb8565b60019250505092915050565b600080611141611bb0565b905061114e818585611e8d565b600191505092915050565b60105481565b611167611d83565b80600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190613941565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190613941565b6040518363ffffffff1660e01b815260040161130392919061396e565b6020604051808303816000875af1158015611322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113469190613941565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611391816001612790565b6113be600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612507565b8073ffffffffffffffffffffffffffffffffffffffff167fbc052db65df144ad4f71f02da93cae3d4401104c30ac374d7cc10d87ee07b60260405160405180910390a250565b61140c611d83565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114a99190613157565b60405180910390a25050565b6114bd611d83565b6114c78282612790565b5050565b6114d3611d83565b6114db61286a565b81101561151d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611514906139e3565b60405180910390fd5b806010819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001816040516115539190613181565b60405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612710600660149054906101000a900461ffff1661ffff166115c9600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e80565b6115d39190613a03565b6115dd9190613a8c565b905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060075460006116a491906136fa565b905090565b6116b1611d83565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611711610fdd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61175e611d83565b82600960006003811061177457611773613abd565b5b601091828204019190066002029054906101000a900461ffff16600b6000600381106117a3576117a2613abd565b5b601091828204019190066002029054906101000a900461ffff166117c79190613aec565b6117d19190613b20565b600b6000600381106117e6576117e5613abd565b5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555081600960016003811061182157611820613abd565b5b601091828204019190066002029054906101000a900461ffff16600b6001600381106118505761184f613abd565b5b601091828204019190066002029054906101000a900461ffff166118749190613aec565b61187e9190613b20565b600b60016003811061189357611892613abd565b5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055508060096002600381106118ce576118cd613abd565b5b601091828204019190066002029054906101000a900461ffff16600b6002600381106118fd576118fc613abd565b5b601091828204019190066002029054906101000a900461ffff166119219190613aec565b61192b9190613b20565b600b6002600381106119405761193f613abd565b5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550611388600b60006003811061197d5761197c613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111580156119dd5750611388600b6001600381106119bc576119bb613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b8015611a1d5750611388600b6002600381106119fc576119fb613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613bca565b60405180910390fd5b60405180606001604052808461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff168152506009906003611a9f929190612eee565b507f4963431b187ee291501376bba89c8c815c04c831b33839c8b2ec099899153df4838383604051611ad393929190613bea565b60405180910390a1505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90613c93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f90613d25565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d769190613181565b60405180910390a3505050565b611d8b611bb0565b73ffffffffffffffffffffffffffffffffffffffff16611da9610fdd565b73ffffffffffffffffffffffffffffffffffffffff1614611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690613d91565b60405180910390fd5b565b6000611e0d84846115e2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e875781811015611e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7090613dfd565b60405180910390fd5b611e868484848403611bb8565b5b50505050565b600c60009054906101000a900460ff16158015611eaa5750600081115b8015611f045750600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f5a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fb05750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122455760008060039050600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612053576000600b60006003811061202557612024613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111561204e57600090505b61212c565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120ea576000600b6001600381106120bc576120bb613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611156120e557600190505b61212b565b6000600b60026003811061210157612100613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111561212a57600290505b5b5b60038160ff16101561222d57612710600b8260ff166003811061215257612151613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff168461217b9190613a03565b6121859190613a8c565b915081836121939190613e1d565b9250600b8160ff16600381106121ac576121ab613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff1660098260ff16600381106121e1576121e0613abd565b5b601091828204019190066002029054906101000a900461ffff1661ffff168361220a9190613a03565b6122149190613a8c565b6007600082825461222591906136fa565b925050819055505b600082111561224257612241853084612886565b5b50505b600061224f611584565b905060008161225c611693565b1015801561229457506000612292600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e80565b115b9050600c60009054906101000a900460ff161580156122fd5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123575750600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123605750805b156124cd576001600c60006101000a81548160ff02191690831515021790555060008061238d5750600082115b156124b15760008260006123a191906136fa565b905060006123ae82612afe565b600047905060008386836123c29190613a03565b6123cc9190613a8c565b9050600081111561249357600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505092508215612492577ff7a420e2cb7d3033ead185c897359ebf9011c07c771221fe5dbc21ca43cb684a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051612489929190613e51565b60405180910390a15b5b85600760008282546124a59190613e1d565b92505081905550505050505b6000600c60006101000a81548160ff0219169083151502179055505b6124d8858585612886565b5050505050565b600061271060056124ee610a50565b6124f89190613a03565b6125029190613a8c565b905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156125705761256f826001612790565b5b8173ffffffffffffffffffffffffffffffffffffffff167f911aa18ddbbbc33c9b4c704a71bdaa0984b0aa2e82726a7f51e64bad0b0a8455826040516125b69190613157565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990613eec565b60405180910390fd5b61263e82600083612d41565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb90613f7e565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127779190613181565b60405180910390a361278b83600084612e3f565b505050565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928260405161282d9190613157565b60405180910390a25050565b600660006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561286781611ae0565b50565b60006103e8612877610a50565b6128819190613a8c565b905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed90614010565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d906140a2565b60405180910390fd5b612971838383612d41565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ee90614134565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ae59190613181565b60405180910390a3612af8848484612e3f565b50505050565b6000600267ffffffffffffffff811115612b1b57612b1a614154565b5b604051908082528060200260200182016040528015612b495781602001602082028036833780820191505090505b5090503081600081518110612b6157612b60613abd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2c9190613941565b81600181518110612c4057612c3f613abd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ca730600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bb8565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d0b95949392919061427c565b600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b505050505050565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612de45750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2f57601154811115612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614348565b60405180910390fd5b5b612e3a838383611ba6565b505050565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ede57601054612e9c83610e80565b1115612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed4906143da565b60405180910390fd5b5b612ee9838383611bab565b505050565b826003600f01601090048101928215612f7a5791602002820160005b83821115612f4a57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302612f0a565b8015612f785782816101000a81549061ffff0219169055600201602081600101049283019260010302612f4a565b505b509050612f879190612f8b565b5090565b5b80821115612fa4576000816000905550600101612f8c565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fe2578082015181840152602081019050612fc7565b83811115612ff1576000848401525b50505050565b6000601f19601f8301169050919050565b600061301382612fa8565b61301d8185612fb3565b935061302d818560208601612fc4565b61303681612ff7565b840191505092915050565b6000602082019050818103600083015261305b8184613008565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061309382613068565b9050919050565b6130a381613088565b81146130ae57600080fd5b50565b6000813590506130c08161309a565b92915050565b6000819050919050565b6130d9816130c6565b81146130e457600080fd5b50565b6000813590506130f6816130d0565b92915050565b6000806040838503121561311357613112613063565b5b6000613121858286016130b1565b9250506020613132858286016130e7565b9150509250929050565b60008115159050919050565b6131518161313c565b82525050565b600060208201905061316c6000830184613148565b92915050565b61317b816130c6565b82525050565b60006020820190506131966000830184613172565b92915050565b600061ffff82169050919050565b6131b38161319c565b81146131be57600080fd5b50565b6000813590506131d0816131aa565b92915050565b6000602082840312156131ec576131eb613063565b5b60006131fa848285016131c1565b91505092915050565b60008060006060848603121561321c5761321b613063565b5b600061322a868287016130b1565b935050602061323b868287016130b1565b925050604061324c868287016130e7565b9150509250925092565b60006020828403121561326c5761326b613063565b5b600061327a848285016130e7565b91505092915050565b61328c8161313c565b811461329757600080fd5b50565b6000813590506132a981613283565b92915050565b600080604083850312156132c6576132c5613063565b5b60006132d4858286016130b1565b92505060206132e58582860161329a565b9150509250929050565b600060ff82169050919050565b613305816132ef565b82525050565b600060208201905061332060008301846132fc565b92915050565b61332f8161319c565b82525050565b600060208201905061334a6000830184613326565b92915050565b60006020828403121561336657613365613063565b5b6000613374848285016130b1565b91505092915050565b6000819050919050565b60006133a261339d61339884613068565b61337d565b613068565b9050919050565b60006133b482613387565b9050919050565b60006133c6826133a9565b9050919050565b6133d6816133bb565b82525050565b60006020820190506133f160008301846133cd565b92915050565b61340081613088565b82525050565b600060208201905061341b60008301846133f7565b92915050565b6000806040838503121561343857613437613063565b5b6000613446858286016130b1565b9250506020613457858286016130b1565b9150509250929050565b60008060006060848603121561347a57613479613063565b5b6000613488868287016131c1565b9350506020613499868287016131c1565b92505060406134aa868287016131c1565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134fb57607f821691505b6020821081141561350f5761350e6134b4565b5b50919050565b7f537761705468726573686f6c643a2043616e6e6f7420657863656564206c696d60008201527f6974732066726f6d20302e30312520746f20352520666f72206e65772073776160208201527f70207468726573686f6c64000000000000000000000000000000000000000000604082015250565b6000613597604b83612fb3565b91506135a282613515565b606082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f4d617854783a204c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000613603601483612fb3565b915061360e826135cd565b602082019050919050565b60006020820190508181036000830152613632816135f6565b9050919050565b7f44656661756c74526f757465723a2043616e6e6f742072656d6f766520696e6960008201527f7469616c20706169722066726f6d206c69737400000000000000000000000000602082015250565b6000613695603383612fb3565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613705826130c6565b9150613710836130c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613745576137446136cb565b5b828201905092915050565b7f546178657344656661756c74526f7574657257616c6c65743a2057616c6c657460008201527f2074617820726563697069656e742063616e6e6f74206265206120307830206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015250565b60006137d2604683612fb3565b91506137dd82613750565b606082019050919050565b60006020820190508181036000830152613801816137c5565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613864602983612fb3565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138f6602583612fb3565b91506139018261389a565b604082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b60008151905061393b8161309a565b92915050565b60006020828403121561395757613956613063565b5b60006139658482850161392c565b91505092915050565b600060408201905061398360008301856133f7565b61399060208301846133f7565b9392505050565b7f4d617857616c6c65743a204c696d697420746f6f206c6f770000000000000000600082015250565b60006139cd601883612fb3565b91506139d882613997565b602082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b6000613a0e826130c6565b9150613a19836130c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a5257613a516136cb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a97826130c6565b9150613aa2836130c6565b925082613ab257613ab1613a5d565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613af78261319c565b9150613b028361319c565b925082821015613b1557613b146136cb565b5b828203905092915050565b6000613b2b8261319c565b9150613b368361319c565b92508261ffff03821115613b4d57613b4c6136cb565b5b828201905092915050565b7f546178657344656661756c74526f757465723a2043616e6e6f7420657863656560008201527f64206d617820746f74616c20666565206f662035302500000000000000000000602082015250565b6000613bb4603683612fb3565b9150613bbf82613b58565b604082019050919050565b60006020820190508181036000830152613be381613ba7565b9050919050565b6000606082019050613bff6000830186613326565b613c0c6020830185613326565b613c196040830184613326565b949350505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c7d602483612fb3565b9150613c8882613c21565b604082019050919050565b60006020820190508181036000830152613cac81613c70565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d0f602283612fb3565b9150613d1a82613cb3565b604082019050919050565b60006020820190508181036000830152613d3e81613d02565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d7b602083612fb3565b9150613d8682613d45565b602082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613de7601d83612fb3565b9150613df282613db1565b602082019050919050565b60006020820190508181036000830152613e1681613dda565b9050919050565b6000613e28826130c6565b9150613e33836130c6565b925082821015613e4657613e456136cb565b5b828203905092915050565b6000604082019050613e6660008301856133f7565b613e736020830184613172565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ed6602183612fb3565b9150613ee182613e7a565b604082019050919050565b60006020820190508181036000830152613f0581613ec9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f68602283612fb3565b9150613f7382613f0c565b604082019050919050565b60006020820190508181036000830152613f9781613f5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ffa602583612fb3565b915061400582613f9e565b604082019050919050565b6000602082019050818103600083015261402981613fed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061408c602383612fb3565b915061409782614030565b604082019050919050565b600060208201905081810360008301526140bb8161407f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061411e602683612fb3565b9150614129826140c2565b604082019050919050565b6000602082019050818103600083015261414d81614111565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006141a86141a361419e84614183565b61337d565b6130c6565b9050919050565b6141b88161418d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141f381613088565b82525050565b600061420583836141ea565b60208301905092915050565b6000602082019050919050565b6000614229826141be565b61423381856141c9565b935061423e836141da565b8060005b8381101561426f57815161425688826141f9565b975061426183614211565b925050600181019050614242565b5085935050505092915050565b600060a0820190506142916000830188613172565b61429e60208301876141af565b81810360408301526142b0818661421e565b90506142bf60608301856133f7565b6142cc6080830184613172565b9695505050505050565b7f4d617854783a2043616e6e6f7420657863656564206d617820627579206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b6000614332602283612fb3565b915061433d826142d6565b604082019050919050565b6000602082019050818103600083015261436181614325565b9050919050565b7f4d617857616c6c65743a2043616e6e6f7420657863656564206d61782077616c60008201527f6c6574206c696d69740000000000000000000000000000000000000000000000602082015250565b60006143c4602983612fb3565b91506143cf82614368565b604082019050919050565b600060208201905081810360008301526143f3816143b7565b905091905056fea2646970667358221220f1239c1fc1394c1eb5839f0147e9a963d8a943e502bf8b098152946fe532514864736f6c634300080b0033