{
  "_format": "hh-sol-artifact-1",
  "contractName": "TestToken",
  "sourceName": "contracts/mocks/TestToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "uniswapFactory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "uniswapRouter",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "name": "addLiquidity",
      "outputs": [],
      "stateMutability": "payable",
      "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": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "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": "approval",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "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": [],
      "name": "pair",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "removeLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "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": [
        {
          "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"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002607380380620026078339818101604052810190620000379190620005b4565b818181600390805190602001906200005192919062000302565b5080600490805190602001906200006a92919062000302565b5050506200008d620000816200023460201b60201c565b6200023c60201b60201c565b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008490508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200015e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000184919062000664565b6040518363ffffffff1660e01b8152600401620001a3929190620006a7565b6020604051808303816000875af1158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000664565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000738565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620003109062000703565b90600052602060002090601f01602090048101928262000334576000855562000380565b82601f106200034f57805160ff191683800117855562000380565b8280016001018555821562000380579182015b828111156200037f57825182559160200191906001019062000362565b5b5090506200038f919062000393565b5090565b5b80821115620003ae57600081600090555060010162000394565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003f382620003c6565b9050919050565b6200040581620003e6565b81146200041157600080fd5b50565b6000815190506200042581620003fa565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004808262000435565b810181811067ffffffffffffffff82111715620004a257620004a162000446565b5b80604052505050565b6000620004b7620003b2565b9050620004c5828262000475565b919050565b600067ffffffffffffffff821115620004e857620004e762000446565b5b620004f38262000435565b9050602081019050919050565b60005b838110156200052057808201518184015260208101905062000503565b8381111562000530576000848401525b50505050565b60006200054d6200054784620004ca565b620004ab565b9050828152602081018484840111156200056c576200056b62000430565b5b6200057984828562000500565b509392505050565b600082601f8301126200059957620005986200042b565b5b8151620005ab84826020860162000536565b91505092915050565b60008060008060808587031215620005d157620005d0620003bc565b5b6000620005e18782880162000414565b9450506020620005f48782880162000414565b935050604085015167ffffffffffffffff811115620006185762000617620003c1565b5b620006268782880162000581565b925050606085015167ffffffffffffffff8111156200064a5762000649620003c1565b5b620006588782880162000581565b91505092959194509250565b6000602082840312156200067d576200067c620003bc565b5b60006200068d8482850162000414565b91505092915050565b620006a181620003e6565b82525050565b6000604082019050620006be600083018562000696565b620006cd602083018462000696565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200071c57607f821691505b602082108103620007325762000731620006d4565b5b50919050565b611ebf80620007486000396000f3fe60806040526004361061010d5760003560e01c8063715018a611610095578063a8aa1b3111610064578063a8aa1b311461036b578063a9059cbb14610396578063c6c3bbe6146103d3578063dd62ed3e146103fc578063f2fde38b1461043957610114565b8063715018a6146102c15780638da5cb5b146102d857806395d89b4114610303578063a457c2d71461032e57610114565b8063313ce567116100dc578063313ce567146101e9578063395093511461021457806351c6590a1461025157806367b9a2861461026d57806370a082311461028457610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610462565b60405161013b91906113bc565b60405180910390f35b34801561015057600080fd5b5061016b60048036038101906101669190611477565b6104f4565b60405161017891906114d2565b60405180910390f35b34801561018d57600080fd5b50610196610517565b6040516101a391906114fc565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190611517565b610521565b6040516101e091906114d2565b60405180910390f35b3480156101f557600080fd5b506101fe610550565b60405161020b9190611586565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190611477565b610559565b60405161024891906114d2565b60405180910390f35b61026b600480360381019061026691906115a1565b610590565b005b34801561027957600080fd5b50610282610677565b005b34801561029057600080fd5b506102ab60048036038101906102a691906115ce565b610896565b6040516102b891906114fc565b60405180910390f35b3480156102cd57600080fd5b506102d66108de565b005b3480156102e457600080fd5b506102ed6108f2565b6040516102fa919061160a565b60405180910390f35b34801561030f57600080fd5b5061031861091c565b60405161032591906113bc565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190611477565b6109ae565b60405161036291906114d2565b60405180910390f35b34801561037757600080fd5b50610380610a25565b60405161038d919061160a565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190611477565b610a4b565b6040516103ca91906114d2565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190611517565b610a6e565b005b34801561040857600080fd5b50610423600480360381019061041e9190611625565b610a90565b60405161043091906114fc565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b91906115ce565b610b17565b005b60606003805461047190611694565b80601f016020809104026020016040519081016040528092919081815260200182805461049d90611694565b80156104ea5780601f106104bf576101008083540402835291602001916104ea565b820191906000526020600020905b8154815290600101906020018083116104cd57829003601f168201915b5050505050905090565b6000806104ff610b9a565b905061050c818585610ba2565b600191505092915050565b6000600254905090565b60008061052c610b9a565b9050610539858285610d6b565b610544858585610df7565b60019150509392505050565b60006012905090565b600080610564610b9a565b90506105858185856105768589610a90565b61058091906116f4565b610ba2565b600191505092915050565b61059a3082611076565b6105c730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610ba2565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008030426040518863ffffffff1660e01b815260040161062e9695949392919061178f565b60606040518083038185885af115801561064c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106719190611805565b50505050565b61067f6111d5565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106dc919061160a565b602060405180830381865afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190611858565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161079e929190611885565b6020604051808303816000875af11580156107bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e191906118da565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302751cec308360008061082d610b9a565b426040518763ffffffff1660e01b815260040161084f9695949392919061178f565b60408051808303816000875af115801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108919190611907565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108e66111d5565b6108f06000611253565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461092b90611694565b80601f016020809104026020016040519081016040528092919081815260200182805461095790611694565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b6000806109b9610b9a565b905060006109c78286610a90565b905083811015610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a03906119b9565b60405180910390fd5b610a198286868403610ba2565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610a56610b9a565b9050610a63818585610df7565b600191505092915050565b610a766111d5565b610a808282611076565b610a8b828483610ba2565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b1f6111d5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590611a4b565b60405180910390fd5b610b9781611253565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890611add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790611b6f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d5e91906114fc565b60405180910390a3505050565b6000610d778484610a90565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610df15781811015610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90611bdb565b60405180910390fd5b610df08484848403610ba2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90611c6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90611cff565b60405180910390fd5b610ee0838383611319565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90611d91565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ff991906116f4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105d91906114fc565b60405180910390a361107084848461131e565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc90611dfd565b60405180910390fd5b6110f160008383611319565b806002600082825461110391906116f4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115891906116f4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111bd91906114fc565b60405180910390a36111d16000838361131e565b5050565b6111dd610b9a565b73ffffffffffffffffffffffffffffffffffffffff166111fb6108f2565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890611e69565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561135d578082015181840152602081019050611342565b8381111561136c576000848401525b50505050565b6000601f19601f8301169050919050565b600061138e82611323565b611398818561132e565b93506113a881856020860161133f565b6113b181611372565b840191505092915050565b600060208201905081810360008301526113d68184611383565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061140e826113e3565b9050919050565b61141e81611403565b811461142957600080fd5b50565b60008135905061143b81611415565b92915050565b6000819050919050565b61145481611441565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000806040838503121561148e5761148d6113de565b5b600061149c8582860161142c565b92505060206114ad85828601611462565b9150509250929050565b60008115159050919050565b6114cc816114b7565b82525050565b60006020820190506114e760008301846114c3565b92915050565b6114f681611441565b82525050565b600060208201905061151160008301846114ed565b92915050565b6000806000606084860312156115305761152f6113de565b5b600061153e8682870161142c565b935050602061154f8682870161142c565b925050604061156086828701611462565b9150509250925092565b600060ff82169050919050565b6115808161156a565b82525050565b600060208201905061159b6000830184611577565b92915050565b6000602082840312156115b7576115b66113de565b5b60006115c584828501611462565b91505092915050565b6000602082840312156115e4576115e36113de565b5b60006115f28482850161142c565b91505092915050565b61160481611403565b82525050565b600060208201905061161f60008301846115fb565b92915050565b6000806040838503121561163c5761163b6113de565b5b600061164a8582860161142c565b925050602061165b8582860161142c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116ac57607f821691505b6020821081036116bf576116be611665565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116ff82611441565b915061170a83611441565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561173f5761173e6116c5565b5b828201905092915050565b6000819050919050565b6000819050919050565b600061177961177461176f8461174a565b611754565b611441565b9050919050565b6117898161175e565b82525050565b600060c0820190506117a460008301896115fb565b6117b160208301886114ed565b6117be6040830187611780565b6117cb6060830186611780565b6117d860808301856115fb565b6117e560a08301846114ed565b979650505050505050565b6000815190506117ff8161144b565b92915050565b60008060006060848603121561181e5761181d6113de565b5b600061182c868287016117f0565b935050602061183d868287016117f0565b925050604061184e868287016117f0565b9150509250925092565b60006020828403121561186e5761186d6113de565b5b600061187c848285016117f0565b91505092915050565b600060408201905061189a60008301856115fb565b6118a760208301846114ed565b9392505050565b6118b7816114b7565b81146118c257600080fd5b50565b6000815190506118d4816118ae565b92915050565b6000602082840312156118f0576118ef6113de565b5b60006118fe848285016118c5565b91505092915050565b6000806040838503121561191e5761191d6113de565b5b600061192c858286016117f0565b925050602061193d858286016117f0565b9150509250929050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119a360258361132e565b91506119ae82611947565b604082019050919050565b600060208201905081810360008301526119d281611996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a3560268361132e565b9150611a40826119d9565b604082019050919050565b60006020820190508181036000830152611a6481611a28565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611ac760248361132e565b9150611ad282611a6b565b604082019050919050565b60006020820190508181036000830152611af681611aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b5960228361132e565b9150611b6482611afd565b604082019050919050565b60006020820190508181036000830152611b8881611b4c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611bc5601d8361132e565b9150611bd082611b8f565b602082019050919050565b60006020820190508181036000830152611bf481611bb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c5760258361132e565b9150611c6282611bfb565b604082019050919050565b60006020820190508181036000830152611c8681611c4a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ce960238361132e565b9150611cf482611c8d565b604082019050919050565b60006020820190508181036000830152611d1881611cdc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d7b60268361132e565b9150611d8682611d1f565b604082019050919050565b60006020820190508181036000830152611daa81611d6e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611de7601f8361132e565b9150611df282611db1565b602082019050919050565b60006020820190508181036000830152611e1681611dda565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e5360208361132e565b9150611e5e82611e1d565b602082019050919050565b60006020820190508181036000830152611e8281611e46565b905091905056fea264697066735822122012ff91613a76913985df193e79094e0c48af77881a9c88099c172921bdc2c7fd64736f6c634300080d0033",
  "deployedBytecode": "0x60806040526004361061010d5760003560e01c8063715018a611610095578063a8aa1b3111610064578063a8aa1b311461036b578063a9059cbb14610396578063c6c3bbe6146103d3578063dd62ed3e146103fc578063f2fde38b1461043957610114565b8063715018a6146102c15780638da5cb5b146102d857806395d89b4114610303578063a457c2d71461032e57610114565b8063313ce567116100dc578063313ce567146101e9578063395093511461021457806351c6590a1461025157806367b9a2861461026d57806370a082311461028457610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610462565b60405161013b91906113bc565b60405180910390f35b34801561015057600080fd5b5061016b60048036038101906101669190611477565b6104f4565b60405161017891906114d2565b60405180910390f35b34801561018d57600080fd5b50610196610517565b6040516101a391906114fc565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190611517565b610521565b6040516101e091906114d2565b60405180910390f35b3480156101f557600080fd5b506101fe610550565b60405161020b9190611586565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190611477565b610559565b60405161024891906114d2565b60405180910390f35b61026b600480360381019061026691906115a1565b610590565b005b34801561027957600080fd5b50610282610677565b005b34801561029057600080fd5b506102ab60048036038101906102a691906115ce565b610896565b6040516102b891906114fc565b60405180910390f35b3480156102cd57600080fd5b506102d66108de565b005b3480156102e457600080fd5b506102ed6108f2565b6040516102fa919061160a565b60405180910390f35b34801561030f57600080fd5b5061031861091c565b60405161032591906113bc565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190611477565b6109ae565b60405161036291906114d2565b60405180910390f35b34801561037757600080fd5b50610380610a25565b60405161038d919061160a565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190611477565b610a4b565b6040516103ca91906114d2565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190611517565b610a6e565b005b34801561040857600080fd5b50610423600480360381019061041e9190611625565b610a90565b60405161043091906114fc565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b91906115ce565b610b17565b005b60606003805461047190611694565b80601f016020809104026020016040519081016040528092919081815260200182805461049d90611694565b80156104ea5780601f106104bf576101008083540402835291602001916104ea565b820191906000526020600020905b8154815290600101906020018083116104cd57829003601f168201915b5050505050905090565b6000806104ff610b9a565b905061050c818585610ba2565b600191505092915050565b6000600254905090565b60008061052c610b9a565b9050610539858285610d6b565b610544858585610df7565b60019150509392505050565b60006012905090565b600080610564610b9a565b90506105858185856105768589610a90565b61058091906116f4565b610ba2565b600191505092915050565b61059a3082611076565b6105c730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610ba2565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008030426040518863ffffffff1660e01b815260040161062e9695949392919061178f565b60606040518083038185885af115801561064c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106719190611805565b50505050565b61067f6111d5565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106dc919061160a565b602060405180830381865afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190611858565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161079e929190611885565b6020604051808303816000875af11580156107bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e191906118da565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302751cec308360008061082d610b9a565b426040518763ffffffff1660e01b815260040161084f9695949392919061178f565b60408051808303816000875af115801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108919190611907565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108e66111d5565b6108f06000611253565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461092b90611694565b80601f016020809104026020016040519081016040528092919081815260200182805461095790611694565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b6000806109b9610b9a565b905060006109c78286610a90565b905083811015610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a03906119b9565b60405180910390fd5b610a198286868403610ba2565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610a56610b9a565b9050610a63818585610df7565b600191505092915050565b610a766111d5565b610a808282611076565b610a8b828483610ba2565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b1f6111d5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590611a4b565b60405180910390fd5b610b9781611253565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890611add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790611b6f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d5e91906114fc565b60405180910390a3505050565b6000610d778484610a90565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610df15781811015610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90611bdb565b60405180910390fd5b610df08484848403610ba2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d90611c6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90611cff565b60405180910390fd5b610ee0838383611319565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90611d91565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ff991906116f4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105d91906114fc565b60405180910390a361107084848461131e565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc90611dfd565b60405180910390fd5b6110f160008383611319565b806002600082825461110391906116f4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115891906116f4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111bd91906114fc565b60405180910390a36111d16000838361131e565b5050565b6111dd610b9a565b73ffffffffffffffffffffffffffffffffffffffff166111fb6108f2565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890611e69565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561135d578082015181840152602081019050611342565b8381111561136c576000848401525b50505050565b6000601f19601f8301169050919050565b600061138e82611323565b611398818561132e565b93506113a881856020860161133f565b6113b181611372565b840191505092915050565b600060208201905081810360008301526113d68184611383565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061140e826113e3565b9050919050565b61141e81611403565b811461142957600080fd5b50565b60008135905061143b81611415565b92915050565b6000819050919050565b61145481611441565b811461145f57600080fd5b50565b6000813590506114718161144b565b92915050565b6000806040838503121561148e5761148d6113de565b5b600061149c8582860161142c565b92505060206114ad85828601611462565b9150509250929050565b60008115159050919050565b6114cc816114b7565b82525050565b60006020820190506114e760008301846114c3565b92915050565b6114f681611441565b82525050565b600060208201905061151160008301846114ed565b92915050565b6000806000606084860312156115305761152f6113de565b5b600061153e8682870161142c565b935050602061154f8682870161142c565b925050604061156086828701611462565b9150509250925092565b600060ff82169050919050565b6115808161156a565b82525050565b600060208201905061159b6000830184611577565b92915050565b6000602082840312156115b7576115b66113de565b5b60006115c584828501611462565b91505092915050565b6000602082840312156115e4576115e36113de565b5b60006115f28482850161142c565b91505092915050565b61160481611403565b82525050565b600060208201905061161f60008301846115fb565b92915050565b6000806040838503121561163c5761163b6113de565b5b600061164a8582860161142c565b925050602061165b8582860161142c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116ac57607f821691505b6020821081036116bf576116be611665565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116ff82611441565b915061170a83611441565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561173f5761173e6116c5565b5b828201905092915050565b6000819050919050565b6000819050919050565b600061177961177461176f8461174a565b611754565b611441565b9050919050565b6117898161175e565b82525050565b600060c0820190506117a460008301896115fb565b6117b160208301886114ed565b6117be6040830187611780565b6117cb6060830186611780565b6117d860808301856115fb565b6117e560a08301846114ed565b979650505050505050565b6000815190506117ff8161144b565b92915050565b60008060006060848603121561181e5761181d6113de565b5b600061182c868287016117f0565b935050602061183d868287016117f0565b925050604061184e868287016117f0565b9150509250925092565b60006020828403121561186e5761186d6113de565b5b600061187c848285016117f0565b91505092915050565b600060408201905061189a60008301856115fb565b6118a760208301846114ed565b9392505050565b6118b7816114b7565b81146118c257600080fd5b50565b6000815190506118d4816118ae565b92915050565b6000602082840312156118f0576118ef6113de565b5b60006118fe848285016118c5565b91505092915050565b6000806040838503121561191e5761191d6113de565b5b600061192c858286016117f0565b925050602061193d858286016117f0565b9150509250929050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006119a360258361132e565b91506119ae82611947565b604082019050919050565b600060208201905081810360008301526119d281611996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a3560268361132e565b9150611a40826119d9565b604082019050919050565b60006020820190508181036000830152611a6481611a28565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611ac760248361132e565b9150611ad282611a6b565b604082019050919050565b60006020820190508181036000830152611af681611aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b5960228361132e565b9150611b6482611afd565b604082019050919050565b60006020820190508181036000830152611b8881611b4c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611bc5601d8361132e565b9150611bd082611b8f565b602082019050919050565b60006020820190508181036000830152611bf481611bb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c5760258361132e565b9150611c6282611bfb565b604082019050919050565b60006020820190508181036000830152611c8681611c4a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ce960238361132e565b9150611cf482611c8d565b604082019050919050565b60006020820190508181036000830152611d1881611cdc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d7b60268361132e565b9150611d8682611d1f565b604082019050919050565b60006020820190508181036000830152611daa81611d6e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611de7601f8361132e565b9150611df282611db1565b602082019050919050565b60006020820190508181036000830152611e1681611dda565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e5360208361132e565b9150611e5e82611e1d565b602082019050919050565b60006020820190508181036000830152611e8281611e46565b905091905056fea264697066735822122012ff91613a76913985df193e79094e0c48af77881a9c88099c172921bdc2c7fd64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
