{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenFaucetHarness",
  "sourceName": "contracts/test/TokenFaucetHarness.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTokens",
          "type": "uint256"
        }
      ],
      "name": "Claimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "dripRatePerSecond",
          "type": "uint256"
        }
      ],
      "name": "DripRateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTokens",
          "type": "uint256"
        }
      ],
      "name": "Dripped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC20Upgradeable",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20Upgradeable",
          "name": "measure",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "dripRatePerSecond",
          "type": "uint256"
        }
      ],
      "name": "Initialized",
      "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": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "asset",
      "outputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "beforeTokenMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "beforeTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "claim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "drip",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dripRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "exchangeRateMantissa",
      "outputs": [
        {
          "internalType": "uint112",
          "name": "",
          "type": "uint112"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_measure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_dripRatePerSecond",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastDripTimestamp",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "measure",
      "outputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_time",
          "type": "uint32"
        }
      ],
      "name": "setCurrentTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_dripRatePerSecond",
          "type": "uint256"
        }
      ],
      "name": "setDripRatePerSecond",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalUnclaimed",
      "outputs": [
        {
          "internalType": "uint112",
          "name": "",
          "type": "uint112"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userStates",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "lastExchangeRateMantissa",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "balance",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611947806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063ca5baafc11610071578063ca5baafc14610259578063d9772a251461026c578063e318613e14610281578063efa9a1ad14610289578063f2fde38b146102915761012c565b80638da5cb5b1461020e5780639f678cca14610216578063b22109571461021e578063b6b55f2514610231578063c96f14b8146102445761012c565b8063205c2878116100f4578063205c2878146101b857806338d52e0f146101cb5780634d7f3db0146101e0578063644a9e71146101f3578063715018a6146102065761012c565b806301ffc9a7146101315780630ecc535f1461015a5780631794bb3c1461017b578063187f3334146101905780631e83409a146101a5575b600080fd5b61014461013f36600461148d565b6102a4565b604051610151919061159a565b60405180910390f35b61016d61016836600461138d565b6102e0565b6040516101519291906118c8565b61018e6101893660046114b5565b610306565b005b610198610451565b60405161015191906118e2565b6101986101b336600461138d565b610457565b61018e6101c63660046113fb565b6105c4565b6101d361079f565b6040516101519190611549565b61018e6101ee366004611426565b6107ae565b61018e610201366004611525565b6107dd565b61018e6107f9565b6101d3610882565b610198610892565b61018e61022c3660046113a9565b610b47565b61018e61023f3660046114f5565b610b83565b61024c610c57565b60405161015191906118b4565b61018e6102673660046114f5565b610c6d565b610274610d15565b60405161015191906118eb565b61024c610d28565b6101d3610d37565b61018e61029f36600461138d565b610d46565b60006001600160e01b031982166301ffc9a760e01b14806102d857506001600160e01b03198216600162a1cb1960e01b0319145b90505b919050565b6069602052600090815260409020546001600160801b0380821691600160801b90041682565b600054610100900460ff168061031f575061031f610e07565b8061032d575060005460ff16155b6103525760405162461bcd60e51b8152600401610349906116f3565b60405180910390fd5b600054610100900460ff1615801561037d576000805460ff1961ff0019909116610100171660011790555b610385610e18565b61038d610eab565b6068805463ffffffff92909216600160e01b026001600160e01b03909216919091179055606580546001600160a01b038087166001600160a01b03199283161790925560668054928616929091169190911790556103ea82610c6d565b6066546065546067546040516001600160a01b0393841693909216917f10f27652c1015195ca7e6bc9b4c724cbf18e91c42117d92124703a3f49bb240f91610431916118e2565b60405180910390a3801561044b576000805461ff00191690555b50505050565b60675481565b6000610461610892565b5061046b82610eb7565b506001600160a01b038216600090815260696020526040902080546001600160801b03808216909255606854600160801b909104909116906104c6906104c190600160701b90046001600160701b031683611063565b611090565b606880546001600160701b0392909216600160701b026dffffffffffffffffffffffffffff60701b1990921691909117905560655460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061052a9086908590600401611581565b602060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057c919061146d565b50826001600160a01b03167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516105b691906118e2565b60405180910390a292915050565b6105cc6110b9565b6001600160a01b03166105dd610882565b6001600160a01b0316146106035760405162461bcd60e51b8152600401610349906117b9565b61060b610892565b506065546040516370a0823160e01b81526000916001600160a01b0316906370a082319061063d903090600401611549565b60206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068d919061150d565b6068549091506000906106b1908390600160701b90046001600160701b0316611063565b9050808311156106d35760405162461bcd60e51b81526004016103499061187d565b60655460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906107059087908790600401611581565b602060405180830381600087803b15801561071f57600080fd5b505af1158015610733573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610757919061146d565b50836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161079191906118e2565b60405180910390a250505050565b6065546001600160a01b031681565b6066546001600160a01b038381169116141561044b576107cc610892565b506107d684610eb7565b5050505050565b606a805463ffffffff191663ffffffff92909216919091179055565b6108016110b9565b6001600160a01b0316610812610882565b6001600160a01b0316146108385760405162461bcd60e51b8152600401610349906117b9565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6033546001600160a01b03165b90565b60008061089d610eab565b60685463ffffffff9182169250600160e01b9004168114156108c357600091505061088f565b6065546040516370a0823160e01b81526000916001600160a01b0316906370a08231906108f4903090600401611549565b60206040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061150d565b606854909150600090610968908390600160701b90046001600160701b0316611063565b60685490915060009061098d90859063ffffffff600160e01b90910481169061106316565b606854606654604080516318160ddd60e01b815290519394506001600160701b039092169260009283926001600160a01b0316916318160ddd91600480820192602092909190829003018186803b1580156109e757600080fd5b505afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f919061150d565b9050600081118015610a315750600085115b15610aa557606754610a449085906110bd565b915084821115610a52578491505b6000610a5e83836110fe565b9050610a6a8482611127565b93507f7de59a92c9386255180c28ede4b61edb9b7b2ac96855ac634151489cef21bad683604051610a9b91906118e2565b60405180910390a1505b610aae83611090565b606880546dffffffffffffffffffffffffffff19166001600160701b039283161790819055610ae9916104c191600160701b90041684611127565b6068600e6101000a8154816001600160701b0302191690836001600160701b03160217905550610b188761114c565b6068805463ffffffff92909216600160e01b026001600160e01b03909216919091179055509550505050505090565b6066546001600160a01b038281169116148015610b6c57506001600160a01b03841615155b1561044b57610b79610892565b506107cc83610eb7565b610b8b610892565b506065546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610bc09033903090869060040161155d565b602060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c12919061146d565b50336001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c482604051610c4c91906118e2565b60405180910390a250565b606854600160701b90046001600160701b031681565b610c756110b9565b6001600160a01b0316610c86610882565b6001600160a01b031614610cac5760405162461bcd60e51b8152600401610349906117b9565b60008111610ccc5760405162461bcd60e51b815260040161034990611782565b610cd4610892565b5060678190556040517f3d38e7cd2e029035006f9977a727c8724cd41dffb6d2a40d9f66bd4c26836a3290610d0a9083906118e2565b60405180910390a150565b606854600160e01b900463ffffffff1681565b6068546001600160701b031681565b6066546001600160a01b031681565b610d4e6110b9565b6001600160a01b0316610d5f610882565b6001600160a01b031614610d855760405162461bcd60e51b8152600401610349906117b9565b6001600160a01b038116610dab5760405162461bcd60e51b8152600401610349906115f8565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e1230611172565b15905090565b600054610100900460ff1680610e315750610e31610e07565b80610e3f575060005460ff16155b610e5b5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015610e86576000805460ff1961ff0019909116610100171660011790555b610e8e611178565b610e966111f9565b8015610ea8576000805461ff00191690555b50565b606a5463ffffffff1690565b6001600160a01b038116600090815260696020526040812080546068546001600160701b03166001600160801b039091161415610ef85760009150506102db565b8054606854600091610f1c916001600160701b0316906001600160801b0316611063565b6066546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610f52908890600401611549565b60206040518083038186803b158015610f6a57600080fd5b505afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa2919061150d565b90506000610fb8610fb383856112d3565b6112f4565b604080518082019091526068546001600160701b031681528554919250906020820190610ffd90610fb390600160801b90046001600160801b03908116908616611127565b6001600160801b039081169091526001600160a01b03881660009081526069602090815260409091208351815494909201518316600160801b029183166fffffffffffffffffffffffffffffffff19909416939093179091161790559350505050919050565b6000828211156110855760405162461bcd60e51b8152600401610349906116bc565b508082035b92915050565b6000600160701b82106110b55760405162461bcd60e51b8152600401610349906117ee565b5090565b3390565b6000826110cc5750600061108a565b828202828482816110d957fe5b04146110f75760405162461bcd60e51b815260040161034990611741565b9392505050565b60008061111384670de0b6b3a76400006110bd565b905061111f8184611319565b949350505050565b6000828201838110156110f75760405162461bcd60e51b81526004016103499061163e565b600064010000000082106110b55760405162461bcd60e51b815260040161034990611837565b3b151590565b600054610100900460ff16806111915750611191610e07565b8061119f575060005460ff16155b6111bb5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015610e96576000805460ff1961ff0019909116610100171660011790558015610ea8576000805461ff001916905550565b600054610100900460ff16806112125750611212610e07565b80611220575060005460ff16155b61123c5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015611267576000805460ff1961ff0019909116610100171660011790555b60006112716110b9565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610ea8576000805461ff001916905550565b6000806112e083856110bd565b905061111f81670de0b6b3a7640000611319565b6000600160801b82106110b55760405162461bcd60e51b815260040161034990611675565b60006110f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836113775760405162461bcd60e51b815260040161034991906115a5565b50600083858161138357fe5b0495945050505050565b60006020828403121561139e578081fd5b81356110f7816118fc565b600080600080608085870312156113be578283fd5b84356113c9816118fc565b935060208501356113d9816118fc565b92506040850135915060608501356113f0816118fc565b939692955090935050565b6000806040838503121561140d578182fd5b8235611418816118fc565b946020939093013593505050565b6000806000806080858703121561143b578384fd5b8435611446816118fc565b935060208501359250604085013561145d816118fc565b915060608501356113f0816118fc565b60006020828403121561147e578081fd5b815180151581146110f7578182fd5b60006020828403121561149e578081fd5b81356001600160e01b0319811681146110f7578182fd5b6000806000606084860312156114c9578283fd5b83356114d4816118fc565b925060208401356114e4816118fc565b929592945050506040919091013590565b600060208284031215611506578081fd5b5035919050565b60006020828403121561151e578081fd5b5051919050565b600060208284031215611536578081fd5b813563ffffffff811681146110f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b818110156115d1578581018301518582016040015282016115b5565b818111156115e25783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316040820152663238206269747360c81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601c908201527f546f6b656e4661756365742f64726970526174652d67742d7a65726f00000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160408201526837103ab4b73a18989960b91b606082015260800190565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b6020808252601e908201527f546f6b656e4661756365742f696e73756666696369656e742d66756e64730000604082015260600190565b6001600160701b0391909116815260200190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b63ffffffff91909116815260200190565b6001600160a01b0381168114610ea857600080fdfea2646970667358221220ac65a85dad87186737a581e0a956ff8c914a0953e072c5fa94384fe21bff04c964736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063ca5baafc11610071578063ca5baafc14610259578063d9772a251461026c578063e318613e14610281578063efa9a1ad14610289578063f2fde38b146102915761012c565b80638da5cb5b1461020e5780639f678cca14610216578063b22109571461021e578063b6b55f2514610231578063c96f14b8146102445761012c565b8063205c2878116100f4578063205c2878146101b857806338d52e0f146101cb5780634d7f3db0146101e0578063644a9e71146101f3578063715018a6146102065761012c565b806301ffc9a7146101315780630ecc535f1461015a5780631794bb3c1461017b578063187f3334146101905780631e83409a146101a5575b600080fd5b61014461013f36600461148d565b6102a4565b604051610151919061159a565b60405180910390f35b61016d61016836600461138d565b6102e0565b6040516101519291906118c8565b61018e6101893660046114b5565b610306565b005b610198610451565b60405161015191906118e2565b6101986101b336600461138d565b610457565b61018e6101c63660046113fb565b6105c4565b6101d361079f565b6040516101519190611549565b61018e6101ee366004611426565b6107ae565b61018e610201366004611525565b6107dd565b61018e6107f9565b6101d3610882565b610198610892565b61018e61022c3660046113a9565b610b47565b61018e61023f3660046114f5565b610b83565b61024c610c57565b60405161015191906118b4565b61018e6102673660046114f5565b610c6d565b610274610d15565b60405161015191906118eb565b61024c610d28565b6101d3610d37565b61018e61029f36600461138d565b610d46565b60006001600160e01b031982166301ffc9a760e01b14806102d857506001600160e01b03198216600162a1cb1960e01b0319145b90505b919050565b6069602052600090815260409020546001600160801b0380821691600160801b90041682565b600054610100900460ff168061031f575061031f610e07565b8061032d575060005460ff16155b6103525760405162461bcd60e51b8152600401610349906116f3565b60405180910390fd5b600054610100900460ff1615801561037d576000805460ff1961ff0019909116610100171660011790555b610385610e18565b61038d610eab565b6068805463ffffffff92909216600160e01b026001600160e01b03909216919091179055606580546001600160a01b038087166001600160a01b03199283161790925560668054928616929091169190911790556103ea82610c6d565b6066546065546067546040516001600160a01b0393841693909216917f10f27652c1015195ca7e6bc9b4c724cbf18e91c42117d92124703a3f49bb240f91610431916118e2565b60405180910390a3801561044b576000805461ff00191690555b50505050565b60675481565b6000610461610892565b5061046b82610eb7565b506001600160a01b038216600090815260696020526040902080546001600160801b03808216909255606854600160801b909104909116906104c6906104c190600160701b90046001600160701b031683611063565b611090565b606880546001600160701b0392909216600160701b026dffffffffffffffffffffffffffff60701b1990921691909117905560655460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061052a9086908590600401611581565b602060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057c919061146d565b50826001600160a01b03167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516105b691906118e2565b60405180910390a292915050565b6105cc6110b9565b6001600160a01b03166105dd610882565b6001600160a01b0316146106035760405162461bcd60e51b8152600401610349906117b9565b61060b610892565b506065546040516370a0823160e01b81526000916001600160a01b0316906370a082319061063d903090600401611549565b60206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068d919061150d565b6068549091506000906106b1908390600160701b90046001600160701b0316611063565b9050808311156106d35760405162461bcd60e51b81526004016103499061187d565b60655460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906107059087908790600401611581565b602060405180830381600087803b15801561071f57600080fd5b505af1158015610733573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610757919061146d565b50836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161079191906118e2565b60405180910390a250505050565b6065546001600160a01b031681565b6066546001600160a01b038381169116141561044b576107cc610892565b506107d684610eb7565b5050505050565b606a805463ffffffff191663ffffffff92909216919091179055565b6108016110b9565b6001600160a01b0316610812610882565b6001600160a01b0316146108385760405162461bcd60e51b8152600401610349906117b9565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6033546001600160a01b03165b90565b60008061089d610eab565b60685463ffffffff9182169250600160e01b9004168114156108c357600091505061088f565b6065546040516370a0823160e01b81526000916001600160a01b0316906370a08231906108f4903090600401611549565b60206040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061150d565b606854909150600090610968908390600160701b90046001600160701b0316611063565b60685490915060009061098d90859063ffffffff600160e01b90910481169061106316565b606854606654604080516318160ddd60e01b815290519394506001600160701b039092169260009283926001600160a01b0316916318160ddd91600480820192602092909190829003018186803b1580156109e757600080fd5b505afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f919061150d565b9050600081118015610a315750600085115b15610aa557606754610a449085906110bd565b915084821115610a52578491505b6000610a5e83836110fe565b9050610a6a8482611127565b93507f7de59a92c9386255180c28ede4b61edb9b7b2ac96855ac634151489cef21bad683604051610a9b91906118e2565b60405180910390a1505b610aae83611090565b606880546dffffffffffffffffffffffffffff19166001600160701b039283161790819055610ae9916104c191600160701b90041684611127565b6068600e6101000a8154816001600160701b0302191690836001600160701b03160217905550610b188761114c565b6068805463ffffffff92909216600160e01b026001600160e01b03909216919091179055509550505050505090565b6066546001600160a01b038281169116148015610b6c57506001600160a01b03841615155b1561044b57610b79610892565b506107cc83610eb7565b610b8b610892565b506065546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610bc09033903090869060040161155d565b602060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c12919061146d565b50336001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c482604051610c4c91906118e2565b60405180910390a250565b606854600160701b90046001600160701b031681565b610c756110b9565b6001600160a01b0316610c86610882565b6001600160a01b031614610cac5760405162461bcd60e51b8152600401610349906117b9565b60008111610ccc5760405162461bcd60e51b815260040161034990611782565b610cd4610892565b5060678190556040517f3d38e7cd2e029035006f9977a727c8724cd41dffb6d2a40d9f66bd4c26836a3290610d0a9083906118e2565b60405180910390a150565b606854600160e01b900463ffffffff1681565b6068546001600160701b031681565b6066546001600160a01b031681565b610d4e6110b9565b6001600160a01b0316610d5f610882565b6001600160a01b031614610d855760405162461bcd60e51b8152600401610349906117b9565b6001600160a01b038116610dab5760405162461bcd60e51b8152600401610349906115f8565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e1230611172565b15905090565b600054610100900460ff1680610e315750610e31610e07565b80610e3f575060005460ff16155b610e5b5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015610e86576000805460ff1961ff0019909116610100171660011790555b610e8e611178565b610e966111f9565b8015610ea8576000805461ff00191690555b50565b606a5463ffffffff1690565b6001600160a01b038116600090815260696020526040812080546068546001600160701b03166001600160801b039091161415610ef85760009150506102db565b8054606854600091610f1c916001600160701b0316906001600160801b0316611063565b6066546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610f52908890600401611549565b60206040518083038186803b158015610f6a57600080fd5b505afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa2919061150d565b90506000610fb8610fb383856112d3565b6112f4565b604080518082019091526068546001600160701b031681528554919250906020820190610ffd90610fb390600160801b90046001600160801b03908116908616611127565b6001600160801b039081169091526001600160a01b03881660009081526069602090815260409091208351815494909201518316600160801b029183166fffffffffffffffffffffffffffffffff19909416939093179091161790559350505050919050565b6000828211156110855760405162461bcd60e51b8152600401610349906116bc565b508082035b92915050565b6000600160701b82106110b55760405162461bcd60e51b8152600401610349906117ee565b5090565b3390565b6000826110cc5750600061108a565b828202828482816110d957fe5b04146110f75760405162461bcd60e51b815260040161034990611741565b9392505050565b60008061111384670de0b6b3a76400006110bd565b905061111f8184611319565b949350505050565b6000828201838110156110f75760405162461bcd60e51b81526004016103499061163e565b600064010000000082106110b55760405162461bcd60e51b815260040161034990611837565b3b151590565b600054610100900460ff16806111915750611191610e07565b8061119f575060005460ff16155b6111bb5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015610e96576000805460ff1961ff0019909116610100171660011790558015610ea8576000805461ff001916905550565b600054610100900460ff16806112125750611212610e07565b80611220575060005460ff16155b61123c5760405162461bcd60e51b8152600401610349906116f3565b600054610100900460ff16158015611267576000805460ff1961ff0019909116610100171660011790555b60006112716110b9565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610ea8576000805461ff001916905550565b6000806112e083856110bd565b905061111f81670de0b6b3a7640000611319565b6000600160801b82106110b55760405162461bcd60e51b815260040161034990611675565b60006110f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836113775760405162461bcd60e51b815260040161034991906115a5565b50600083858161138357fe5b0495945050505050565b60006020828403121561139e578081fd5b81356110f7816118fc565b600080600080608085870312156113be578283fd5b84356113c9816118fc565b935060208501356113d9816118fc565b92506040850135915060608501356113f0816118fc565b939692955090935050565b6000806040838503121561140d578182fd5b8235611418816118fc565b946020939093013593505050565b6000806000806080858703121561143b578384fd5b8435611446816118fc565b935060208501359250604085013561145d816118fc565b915060608501356113f0816118fc565b60006020828403121561147e578081fd5b815180151581146110f7578182fd5b60006020828403121561149e578081fd5b81356001600160e01b0319811681146110f7578182fd5b6000806000606084860312156114c9578283fd5b83356114d4816118fc565b925060208401356114e4816118fc565b929592945050506040919091013590565b600060208284031215611506578081fd5b5035919050565b60006020828403121561151e578081fd5b5051919050565b600060208284031215611536578081fd5b813563ffffffff811681146110f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b818110156115d1578581018301518582016040015282016115b5565b818111156115e25783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316040820152663238206269747360c81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601c908201527f546f6b656e4661756365742f64726970526174652d67742d7a65726f00000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160408201526837103ab4b73a18989960b91b606082015260800190565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b6020808252601e908201527f546f6b656e4661756365742f696e73756666696369656e742d66756e64730000604082015260600190565b6001600160701b0391909116815260200190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b63ffffffff91909116815260200190565b6001600160a01b0381168114610ea857600080fdfea2646970667358221220ac65a85dad87186737a581e0a956ff8c914a0953e072c5fa94384fe21bff04c964736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
