diff --git a/chief_keeper/chief_keeper.py b/chief_keeper/chief_keeper.py
index fa4ab4e..2200b39 100644
--- a/chief_keeper/chief_keeper.py
+++ b/chief_keeper/chief_keeper.py
@@ -29,10 +29,9 @@
from urllib.parse import urlparse
from chief_keeper.database import SimpleDatabase
-from chief_keeper.spell import DSSSpell
+from chief_keeper.makerdao_utils.spell import DSSSpell
from chief_keeper.utils.keeper_lifecycle import Lifecycle
-
from chief_keeper.utils.blockchain import initialize_blockchain_connection
# from pymaker import Address, web3_via_http
diff --git a/chief_keeper/database.py b/chief_keeper/database.py
index db59057..f59964d 100644
--- a/chief_keeper/database.py
+++ b/chief_keeper/database.py
@@ -23,12 +23,11 @@
from web3 import Web3
from web3.exceptions import TimeExhausted
-from chief_keeper.spell import DSSSpell
+from chief_keeper.makerdao_utils.spell import DSSSpell
-from chief_keeper.utils.address import Address
from chief_keeper.utils.address import Address
from chief_keeper.utils.utils import is_contract_at
-from pymaker.deployment import DssDeployment
+from chief_keeper.makerdao_utils.dss_deployment import DssDeployment
class SimpleDatabase:
diff --git a/chief_keeper/makerdao_utils/abi/Cat.abi b/chief_keeper/makerdao_utils/abi/Cat.abi
new file mode 100644
index 0000000..b34a4a8
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Cat.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"address","name":"urn","type":"address"},{"indexed":false,"internalType":"uint256","name":"ink","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"art","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"address","name":"flip","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Bite","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"urn","type":"address"}],"name":"bite","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"box","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"claw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"flip","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"address","name":"flip","type":"address"},{"internalType":"uint256","name":"chop","type":"uint256"},{"internalType":"uint256","name":"dunk","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"litter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vow","outputs":[{"internalType":"contract VowLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Cat.bin b/chief_keeper/makerdao_utils/abi/Cat.bin
new file mode 100644
index 0000000..34a00d7
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Cat.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051611e69380380611e698339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160028190555050611d88806100e16000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063957aa58c11610097578063d4e8be8311610066578063d4e8be83146103b9578063d9638d3614610407578063e66d279b14610483578063ebecb39d146104b157610100565b8063957aa58c146102e15780639c52a7f1146102ff578063a4fe8caf14610343578063bf353dbb1461036157610100565b8063626cb3c5116100d3578063626cb3c51461022b57806365fae35e1461027557806369245009146102b9578063754215a1146102c357610100565b80631a0b287e1461010557806329ae81141461014757806336569e771461017f57806345cf2230146101c9575b600080fd5b6101456004803603606081101561011b57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610509565b005b61017d6004803603604081101561015d57600080fd5b8101908080359060200190929190803590602001909291905050506106f4565b005b610187610881565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610215600480360360408110156101df57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a7565b6040518082815260200191505060405180910390f35b610233611272565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b76004803603602081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611298565b005b6102c16113c6565b005b6102cb6114b7565b6040518082815260200191505060405180910390f35b6102e96114bd565b6040518082815260200191505060405180910390f35b6103416004803603602081101561031557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114c3565b005b61034b6115f1565b6040518082815260200191505060405180910390f35b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f7565b6040518082815260200191505060405180910390f35b610405600480360360408110156103cf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160f565b005b6104336004803603602081101561041d57600080fd5b81019080803590602001909291905050506117d6565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050611820565b005b610507600480360360608110156104c757600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191c565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146105bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f63686f7000000000000000000000000000000000000000000000000000000000821415610605578060016000858152602001908152602001600020600101819055506106bc565b7f64756e6b0000000000000000000000000000000000000000000000000000000082141561064d578060016000858152602001908152602001600020600201819055506106bb565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f626f7800000000000000000000000000000000000000000000000000000000008214156107dc578060058190555061084a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36876040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d60a081101561094a57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509450509350935050600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c89896040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6040811015610a5e57600080fd5b81019080805190602001909291908051906020019092919050505091509150600160025414610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600084118015610b165750610b0a8186611ca0565b610b148386611ca0565b105b610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4361742f6e6f742d756e7361666500000000000000000000000000000000000081525060200191505060405180910390fd5b610b90611d1c565b600160008a81526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050600080610c2b600554600654611ccc565b9050600554600654108015610c405750858110155b610cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4361742f6c69717569646174696f6e2d6c696d69742d6869740000000000000081525060200191505060405180910390fd5b610cf08484602001518a610cdb610ccd886040015187611ce6565b670de0b6b3a7640000611ca0565b81610ce257fe5b0481610cea57fe5b04611ce6565b9150506000610d118585610d048886611ca0565b81610d0b57fe5b04611ce6565b9050600082118015610d235750600081115b610d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4361742f6e756c6c2d61756374696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b7f80000000000000000000000000000000000000000000000000000000000000008211158015610de557507f80000000000000000000000000000000000000000000000000000000000000008111155b610e57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408c8c30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003886000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697efb78611000848b611ca0565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506000670de0b6b3a7640000611070611066858c611ca0565b8660200151611ca0565b8161107757fe5b04905061108660065482611d02565b600681905550836000015173ffffffffffffffffffffffffffffffffffffffff1663351de6008c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848660006040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200195505050505050602060405180830381600087803b15801561117e57600080fd5b505af1158015611192573d6000803e3d6000fd5b505050506040513d60208110156111a857600080fd5b81019080805190602001909291905050509950508973ffffffffffffffffffffffffffffffffffffffff168b7fa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be288385611201878e611ca0565b88600001518f604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a3505050505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461134c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60055481565b60025481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60065481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f7700000000000000000000000000000000000000000000000000000000008214156117315780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061179f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6118e060065482611ccc565b6006819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c697000000000000000000000000000000000000000000000000000000000821415611bfa57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa6001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611acf57600080fd5b505af1158015611ae3573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b50505050611c68565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600080821480611cbd5750828283850292508281611cba57fe5b04145b611cc657600080fd5b92915050565b6000828284039150811115611ce057600080fd5b92915050565b600081831115611cf857819050611cfc565b8290505b92915050565b6000828284019150811015611d1657600080fd5b92915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fea265627a7a72315820556e757eae6b8fd1aa984a27cc7e92fe92965aee55c6f082a6b431247d83546c64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Clipper.abi b/chief_keeper/makerdao_utils/abi/Clipper.abi
new file mode 100644
index 0000000..5bf0e98
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Clipper.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"spotter_","type":"address"},{"internalType":"address","name":"dog_","type":"address"},{"internalType":"bytes32","name":"ilk_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"top","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"kpr","type":"address"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"Kick","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"top","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"kpr","type":"address"},{"indexed":false,"internalType":"uint256","name":"coin","type":"uint256"}],"name":"Redo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"owe","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Take","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Yank","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"active","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calc","outputs":[{"internalType":"contract AbacusLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chip","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cusp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dog","outputs":[{"internalType":"contract DogLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getStatus","outputs":[{"internalType":"bool","name":"needsRedo","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"tab","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tab","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"address","name":"kpr","type":"address"}],"name":"kick","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"list","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"kpr","type":"address"}],"name":"redo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sales","outputs":[{"internalType":"uint256","name":"pos","type":"uint256"},{"internalType":"uint256","name":"tab","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint96","name":"tic","type":"uint96"},{"internalType":"uint256","name":"top","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spotter","outputs":[{"internalType":"contract SpotterLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tail","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"take","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tip","outputs":[{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upchost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Clipper.bin b/chief_keeper/makerdao_utils/abi/Clipper.bin
new file mode 100644
index 0000000..ed38713
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Clipper.bin
@@ -0,0 +1 @@
+60c06040526000600e5534801561001557600080fd5b50604051613c07380380613c078339818101604052608081101561003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080608081815250506b033b2e3c9fd0803ce800000060058190555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a25050505060805160a05160601c6139cb61023c600039806108eb5280610e0552806113295280611a395280611b5d5280611cb15280611e605280612636528061324e5250806109275280610a295280610d785280610e415280611a755280611db65280611e9c52806129e952806136a752506139cb6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806375f12b2111610104578063b61500e4116100a2578063c5ce281e11610071578063c5ce281e14610802578063cfdd330214610820578063d4e8be831461083e578063d843416d1461088c576101cf565b8063b61500e414610730578063ba2cdc7514610758578063bf353dbb14610776578063c3b3ad7f146107ce576101cf565b8063898eb267116100de578063898eb267146105a357806396f1b6be1461062f5780639c52a7f114610663578063b5f522f7146106a7576101cf565b806375f12b211461048c5780638033d581146104aa57806381a794cb146104ec576101cf565b806329ae81141161017157806349ed59311161014b57806349ed59311461039d5780635c622a0e146103bb578063626cb3c51461041457806365fae35e14610448576101cf565b806329ae8114146102fd5780632e77468d1461033557806336569e7714610369576101cf565b806313d8c840116101ad57806313d8c8401461025b578063152325151461027957806326e027f1146102975780632755cd2d146102c5576101cf565b806306661abd146101d45780630cbb5862146101f25780630f560cd7146101fc575b600080fd5b6101dc6108da565b6040518082815260200191505060405180910390f35b6101fa6108e7565b005b610204610ac7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561024757808201518184015260208101905061022c565b505050509050019250505060405180910390f35b610263610b1f565b6040518082815260200191505060405180910390f35b610281610b25565b6040518082815260200191505060405180910390f35b6102c3600480360360208110156102ad57600080fd5b8101908080359060200190929190505050610b2b565b005b6102cd610f53565b604051808277ffffffffffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103336004803603604081101561031357600080fd5b810190808035906020019092919080359060200190929190505050610f7b565b005b61033d611301565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610371611327565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a561134b565b6040518082815260200191505060405180910390f35b6103e7600480360360208110156103d157600080fd5b8101908080359060200190929190505050611351565b60405180851515815260200184815260200183815260200182815260200194505050505060405180910390f35b61041c611467565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61048a6004803603602081101561045e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061148d565b005b6104946115cb565b6040518082815260200191505060405180910390f35b6104d6600480360360208110156104c057600080fd5b81019080803590602001909291905050506115d1565b6040518082815260200191505060405180910390f35b6105a1600480360360a081101561050257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561055d57600080fd5b82018360208201111561056f57600080fd5b8035906020019184600183028401116401000000008311171561059157600080fd5b90919293919293905050506115f2565b005b610619600480360360808110156105b957600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612019565b6040518082815260200191505060405180910390f35b6106376127b1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a56004803603602081101561067957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d7565b005b6106d3600480360360208110156106bd57600080fd5b8101908080359060200190929190505050612915565b604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff168152602001828152602001965050505050505060405180910390f35b610738612989565b604051808267ffffffffffffffff16815260200191505060405180910390f35b6107606129a3565b6040518082815260200191505060405180910390f35b6107b86004803603602081101561078c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a9565b6040518082815260200191505060405180910390f35b6107d66129c1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61080a6129e7565b6040518082815260200191505060405180910390f35b610828612a0b565b6040518082815260200191505060405180910390f35b61088a6004803603604081101561085457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a11565b005b6108d8600480360360408110156108a257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc8565b005b6000600b80549050905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d9638d367f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561097c57600080fd5b505af1158015610990573d6000803e3d6000fd5b505050506040513d60a08110156109a657600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050945050505050610abe81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d79265387f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b505050506040513d6020811015610aa857600080fd5b81019080805190602001909291905050506133cd565b60098190555050565b6060600b805480602002602001604051908101604052809291908181526020018280548015610b1557602002820191906000526020600020905b815481526020019060010190808311610b01575b5050505050905090565b60065481565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600d5414610c57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d81905550600073ffffffffffffffffffffffffffffffffffffffff16600c600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436c69707065722f6e6f742d72756e6e696e672d61756374696f6e000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87193f47f0000000000000000000000000000000000000000000000000000000000000000600c6000858152602001908152602001600020600101546040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636111be2e7f00000000000000000000000000000000000000000000000000000000000000003033600c6000878152602001908152602001600020600201546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b50505050610f11816133f2565b7f2c5d2826eb5903b8fc201cf48094b858f42f61c7eaac9aaf43ebed490138144e816040518082815260200191505060405180910390a16000600d8190555050565b60088054906101000a900477ffffffffffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600d54146110a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d819055507f62756600000000000000000000000000000000000000000000000000000000008214156110e357806005819055506112bd565b7f7461696c0000000000000000000000000000000000000000000000000000000082141561111757806006819055506112bc565b7f637573700000000000000000000000000000000000000000000000000000000082141561114b57806007819055506112bb565b7f63686970000000000000000000000000000000000000000000000000000000008214156111a15780600860006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506112ba565b7f746970000000000000000000000000000000000000000000000000000000000082141561121657806008806101000a81548177ffffffffffffffffffffffffffffffffffffffffffffffff021916908377ffffffffffffffffffffffffffffffffffffffffffffffff1602179055506112b9565b7f73746f707065640000000000000000000000000000000000000000000000000082141561124a5780600e819055506112b8565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5b5b5b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040518082815260200191505060405180910390a26000600d819055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b6000806000806000600c600087815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c600088815260200190815260200160002060030160149054906101000a90046bffffffffffffffffffffffff16905060006113e782600c60008b815260200190815260200160002060040154613512565b8097508192505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114295750805b9650600c6000898152602001908152602001600020600201549450600c60008981526020019081526020016000206001015493505050509193509193565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b600e5481565b600b81815481106115de57fe5b906000526020600020016000915090505481565b6000600d541461166a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d81905550600380600e54106116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436c69707065722f73746f707065642d696e636f72726563740000000000000081525060200191505060405180910390fd5b6000600c600089815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c60008a815260200190815260200160002060030160149054906101000a90046bffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436c69707065722f6e6f742d72756e6e696e672d61756374696f6e000000000081525060200191505060405180910390fd5b60008061181f83600c60008e815260200190815260200160002060040154613512565b8093508192505050801561189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436c69707065722f6e656564732d72657365740000000000000000000000000081525060200191505060405180910390fd5b5080881015611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f746f6f2d657870656e73697665000000000000000000000081525060200191505060405180910390fd5b6000600c60008c81526020019081526020016000206002015490506000600c60008d8152602001908152602001600020600101549050600080611955848e61361e565b90506119618186613638565b91508282111561197f5782915084828161197757fe5b049050611a2d565b828210801561198d57508381105b15611a2c5760006009549050808385031015611a2a57808411611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436c69707065722f6e6f2d7061727469616c2d7075726368617365000000000081525060200191505060405180910390fd5b8084039250858381611a2657fe5b0491505b505b5b818303925080840393507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636111be2e7f0000000000000000000000000000000000000000000000000000000000000000308e856040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008b8b9050118015611bac57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b8015611be457508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b15611caf578b73ffffffffffffffffffffffffffffffffffffffff16638452c10e3385858f8f6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b505050505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611d8057600080fd5b505af1158015611d94573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663c87193f47f000000000000000000000000000000000000000000000000000000000000000060008814611de35785611de7565b8587015b6040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b5050505050506000831415611e5557611e508d6133f2565b611f93565b6000821415611f5b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636111be2e7f00000000000000000000000000000000000000000000000000000000000000003089876040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015611f3557600080fd5b505af1158015611f49573d6000803e3d6000fd5b50505050611f568d6133f2565b611f92565b81600c60008f81526020019081526020016000206001018190555082600c60008f8152602001908152602001600020600201819055505b5b8573ffffffffffffffffffffffffffffffffffffffff168d7f05e309fd6ce72f2ab888a20056bb4210df08daed86f21f95053deb19964d86b18d87858789604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050506000600d81905550505050505050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600d5414612147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d81905550600180600e54106121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436c69707065722f73746f707065642d696e636f72726563740000000000000081525060200191505060405180910390fd5b6000861161223e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436c69707065722f7a65726f2d7461620000000000000000000000000000000081525060200191505060405180910390fd5b600085116122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436c69707065722f7a65726f2d6c6f740000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612357576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436c69707065722f7a65726f2d7573720000000000000000000000000000000081525060200191505060405180910390fd5b600a600081546001019190508190559150600082116123de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436c69707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600b8290806001815401808255809150506001900390600052602060002001600090919091909150556001600b8054905003600c60008481526020019081526020016000206000018190555085600c60008481526020019081526020016000206001018190555084600c60008481526020019081526020016000206002018190555083600c600084815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600c600084815260200190815260200160002060030160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061250f612507613664565b60055461390f565b905060008111612587576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f7a65726f2d746f702d70726963650000000000000000000081525060200191505060405180910390fd5b80600c600085815260200190815260200160002060040181905550600060088054906101000a900477ffffffffffffffffffffffffffffffffffffffffffffffff1677ffffffffffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900467ffffffffffffffff1667ffffffffffffffff16905060008083118061261a5750600082115b1561271e576126328361262d8c856133cd565b613938565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561270557600080fd5b505af1158015612719573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16877f7c5bfdc0a5e8192f6cd4972f382cec69116862fb62e6abff8003874c58e064b8878e8e876040518085815260200184815260200183815260200182815260200194505050505060405180910390a450505050506000600d81905550949350505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461288b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b600c6020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a90046bffffffffffffffffffffffff16908060040154905086565b600860009054906101000a900467ffffffffffffffff1681565b60095481565b60006020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600d5414612b3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d819055507f73706f7474657200000000000000000000000000000000000000000000000000821415612bb35780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d6e565b7f646f670000000000000000000000000000000000000000000000000000000000821415612c215780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d6d565b7f766f770000000000000000000000000000000000000000000000000000000000821415612c8f5780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d6c565b7f63616c6300000000000000000000000000000000000000000000000000000000821415612cfd5780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d6b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26000600d819055505050565b6000600d5414612e40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f73797374656d2d6c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6001600d81905550600280600e5410612ec1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436c69707065722f73746f707065642d696e636f72726563740000000000000081525060200191505060405180910390fd5b6000600c600085815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c600086815260200190815260200160002060030160149054906101000a90046bffffffffffffffffffffffff1690506000600c6000878152602001908152602001600020600401549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436c69707065722f6e6f742d72756e6e696e672d61756374696f6e000000000081525060200191505060405180910390fd5b6000612ff98383613512565b5090508061306f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436c69707065722f63616e6e6f742d726573657400000000000000000000000081525060200191505060405180910390fd5b6000600c60008981526020019081526020016000206001015490506000600c60008a815260200190815260200160002060020154905042600c60008b815260200190815260200160002060030160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060006130f4613664565b90506131028160055461390f565b94506000851161317a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436c69707065722f7a65726f2d746f702d70726963650000000000000000000081525060200191505060405180910390fd5b84600c60008c815260200190815260200160002060040181905550600060088054906101000a900477ffffffffffffffffffffffffffffffffffffffffffffffff1677ffffffffffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900467ffffffffffffffff1667ffffffffffffffff16905060008083118061320d5750600082115b15613338576000600954905080871015801561323257508061322f8787613638565b10155b156133365761324a8461324589866133cd565b613938565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168f856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561331d57600080fd5b505af1158015613331573d6000803e3d6000fd5b505050505b505b8b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168e7f275de7ecdd375b5e8049319f8b350686131c219dd4dc450a08e9cf83b03c865f8b8a8a876040518085815260200184815260200183815260200182815260200194505050505060405180910390a450505050505050505050506000600d819055505050565b6000670de0b6b3a76400006133e28484613638565b816133e957fe5b04905092915050565b6000600b6001600b80549050038154811061340957fe5b90600052602060002001549050808214613471576000600c600084815260200190815260200160002060000154905081600b828154811061344657fe5b906000526020600020018190555080600c600084815260200190815260200160002060000181905550505b600b80548061347c57fe5b60019003818190600052602060002001600090559055600c6000838152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160146101000a8154906bffffffffffffffffffffffff0219169055600482016000905550505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663487a23958461356c42886bffffffffffffffffffffffff16613952565b6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d60208110156135d157600080fd5b810190808051906020019092919050505090506006546135ff42866bffffffffffffffffffffffff16613952565b11806136155750600754613613828561396c565b105b91509250929050565b60008183111561362e5781613630565b825b905092915050565b600080821480613655575082828385029250828161365257fe5b04145b61365e57600080fd5b92915050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d367f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401808281526020019150506040805180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b505050506040513d604081101561372557600080fd5b8101908080519060200190929190805190602001909291905050505090506000808273ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff1660e01b81526004016040805180830381600087803b15801561378d57600080fd5b505af11580156137a1573d6000803e3d6000fd5b505050506040513d60408110156137b757600080fd5b8101908080519060200190929190805190602001909291905050509150915080613849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f436c69707065722f696e76616c69642d7072696365000000000000000000000081525060200191505060405180910390fd5b61390761385d8360001c633b9aca00613638565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156138c757600080fd5b505af11580156138db573d6000803e3d6000fd5b505050506040513d60208110156138f157600080fd5b810190808051906020019092919050505061396c565b935050505090565b60006b033b2e3c9fd0803ce80000006139288484613638565b8161392f57fe5b04905092915050565b600082828401915081101561394c57600080fd5b92915050565b600082828403915081111561396657600080fd5b92915050565b600081613985846b033b2e3c9fd0803ce8000000613638565b8161398c57fe5b0490509291505056fea26469706673582212203a1ad954de2e05eab3403d19843c0c39ed566e5dfd855756ebd70f0c1cebd5cc64736f6c634300060c0033
diff --git a/chief_keeper/makerdao_utils/abi/ClipperCallee.abi b/chief_keeper/makerdao_utils/abi/ClipperCallee.abi
new file mode 100644
index 0000000..1184940
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ClipperCallee.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"clipperCall","outputs":[],"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/ClipperCallee.bin b/chief_keeper/makerdao_utils/abi/ClipperCallee.bin
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ClipperCallee.bin
@@ -0,0 +1 @@
+
diff --git a/chief_keeper/makerdao_utils/abi/DSAuth.abi b/chief_keeper/makerdao_utils/abi/DSAuth.abi
new file mode 100644
index 0000000..cf21284
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSAuth.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSAuth.bin b/chief_keeper/makerdao_utils/abi/DSAuth.bin
new file mode 100644
index 0000000..382b4f4
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSAuth.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26106cd806100a46000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313af4035146100515780637a9e5e4b146100955780638da5cb5b146100d9578063bf7e214f14610123575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061016d565b005b6100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b6565b005b6100e16103fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012b610423565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b61020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6102e4336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b610356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610487576001905061069b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e6576001905061069b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610545576000905061069b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561065d57600080fd5b505afa158015610671573d6000803e3d6000fd5b505050506040513d602081101561068757600080fd5b810190808051906020019092919050505090505b9291505056fea165627a7a72305820185e07675ea15995cd10a2394a35492441f7f0c23183422fa7b0f937153825ea0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSChief.abi b/chief_keeper/makerdao_utils/abi/DSChief.abi
new file mode 100644
index 0000000..8e3736f
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSChief.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"contract DSToken","name":"GOV","type":"address"},{"internalType":"contract DSToken","name":"IOU","type":"address"},{"internalType":"uint256","name":"MAX_YAYS","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"slate","type":"bytes32"}],"name":"Etch","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"guy","type":"address"},{"indexed":true,"internalType":"bytes32","name":"foo","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"bar","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"},{"constant":true,"inputs":[],"name":"GOV","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"IOU","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_YAYS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"internalType":"contract DSAuthority","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"code","type":"address"},{"internalType":"bytes4","name":"sig","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"yays","type":"address[]"}],"name":"etch","outputs":[{"internalType":"bytes32","name":"slate","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"free","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"code","type":"address"},{"internalType":"bytes4","name":"sig","type":"bytes4"}],"name":"getCapabilityRoles","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getUserRoles","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"hasUserRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hat","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"code","type":"address"},{"internalType":"bytes4","name":"sig","type":"bytes4"}],"name":"isCapabilityPublic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isUserRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"last","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"launch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"whom","type":"address"}],"name":"lift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract DSAuthority","name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"code","type":"address"},{"internalType":"bytes4","name":"sig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPublicCapability","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"code","type":"address"},{"internalType":"bytes4","name":"sig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRoleCapability","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRootUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"slates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"slate","type":"bytes32"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"yays","type":"address[]"}],"name":"vote","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"votes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSChief.bin b/chief_keeper/makerdao_utils/abi/DSChief.bin
new file mode 100644
index 0000000..4964022
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSChief.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051612e44380380612e448339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082828233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a282600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d81905550505050306000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050612c45806101ff6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063957aa58c1161010f578063d381ba7c116100a2578063ed08132911610071578063ed08132914610b16578063fbf8077314610be2578063fc7e286d14610c3e578063fe95a5ce14610c96576101e5565b8063d381ba7c14610a12578063d8bff5a514610a62578063d8ccd0f314610aba578063dd46706414610ae8576101e5565b8063b7009613116100de578063b700961314610832578063bf7e214f146108d7578063c2ffc7bb14610921578063c6b0263e14610999576101e5565b8063957aa58c146107215780639a816f7d14610743578063a078f7371461079b578063a69beaba14610804576101e5565b8063362344b81161018757806367aff4841161015657806367aff484146105b05780637a9e5e4b1461060d5780637d40583d146106515780638da5cb5b146106d7576101e5565b8063362344b81461042a5780633c278bd5146104485780635123e1fa1461048c5780635d0341ba14610558576101e5565b806313af4035116101c357806313af403514610296578063180cb47f146102da57806327538e90146103245780632f47571f146103a5576101e5565b806301339c21146101ea578063046c472f146101f457806306a36aee1461023e575b600080fd5b6101f2610ce0565b005b6101fc610e84565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eaa565b6040518082815260200191505060405180910390f35b6102d8600480360360208110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef3565b005b6102e2610ef8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61038f6004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f1e565b6040518082815260200191505060405180910390f35b610410600480360360408110156103bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610fb7565b604051808215151515815260200191505060405180910390f35b61043261105d565b6040518082815260200191505060405180910390f35b61048a6004803603602081101561045e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611063565b005b610542600480360360208110156104a257600080fd5b81019080803590602001906401000000008111156104bf57600080fd5b8201836020820111156104d157600080fd5b803590602001918460208302840111640100000000831117156104f357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611210565b6040518082815260200191505060405180910390f35b61059a6004803603602081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061139d565b6040518082815260200191505060405180910390f35b61060b600480360360608110156105c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035151590602001909291905050506113b5565b005b61064f6004803603602081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061154e565b005b6106d56004803603608081101561066757600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050611553565b005b6106df6117da565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610729611800565b604051808215151515815260200191505060405180910390f35b6107856004803603602081101561075957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611813565b6040518082815260200191505060405180910390f35b6107ea600480360360408110156107b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061182b565b604051808215151515815260200191505060405180910390f35b6108306004803603602081101561081a57600080fd5b810190808035906020019092919050505061185a565b005b6108bd6004803603606081101561084857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611aee565b604051808215151515815260200191505060405180910390f35b6108df611b48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109576004803603604081101561093757600080fd5b810190808035906020019092919080359060200190929190505050611b6d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a10600480360360608110156109af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050611bb8565b005b610a6060048036036040811015610a2857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d03565b005b610aa460048036036020811015610a7857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d08565b6040518082815260200191505060405180910390f35b610ae660048036036020811015610ad057600080fd5b8101908080359060200190929190505050611d20565b005b610b1460048036036020811015610afe57600080fd5b8101908080359060200190929190505050612082565b005b610bcc60048036036020811015610b2c57600080fd5b8101908080359060200190640100000000811115610b4957600080fd5b820183602082011115610b5b57600080fd5b80359060200191846020830284011164010000000083111715610b7d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506123dd565b6040518082815260200191505060405180910390f35b610c2460048036036020811015610bf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fd565b604051808215151515815260200191505060405180910390f35b610c8060048036036020811015610c5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246f565b6040518082815260200191505060405180910390f35b610c9e612487565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600060043592506024359150349050600f60009054906101000a900460ff1615610d0c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610db357506910f0cf064dd592000000600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b610dbc57600080fd5b6001600f60006101000a81548160ff02191690831515021790555081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16905092915050565b600d5481565b60008060006004359250602435915034905060086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161112157600080fd5b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b60008060008060043592506024359150349050600d548551111561123357600080fd5b61123c856124ad565b60008560405160200180828051906020019060200280838360005b83811015611272578082015181840152602081019050611257565b50505050905001915050604051602081830303815290604052805190602001209050856006600083815260200190815260200160002090805190602001906112bb929190612b43565b50807f4f0892983790f53eea39a7a496f6cb40e8811b313871337b6a761efc6c67bb1f60405160405180910390a28094505081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4505050919050565b60086020528060005260406000206000915090505481565b6113e3336000357fffffffff000000000000000000000000000000000000000000000000000000001661254d565b611455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008360ff1660020a60001b905082156114f857808217600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611547565b611501816127a6565b8216600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050565b600080fd5b611581336000357fffffffff000000000000000000000000000000000000000000000000000000001661254d565b6115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008560ff1660020a60001b9050821561173457808217600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506117d2565b61173d816127a6565b8216600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b600e6020528060005260406000206000915090505481565b60008061183784610eaa565b905060008360ff1660020a60001b90508082166000801b14159250505092915050565b6000806000600435925060243591503490506000600660008681526020019081526020016000208054905011806118b357507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b84145b611925576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f64732d63686965662d696e76616c69642d736c6174650000000000000000000081525060200191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119b281600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d5565b84600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a3f81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612909565b5081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b6000611af9846123fd565b80611b0a5750611b098383610fb7565b5b15611b185760019050611b41565b6000611b2385610eaa565b90506000611b318585610f1e565b90508082166000801b1415925050505b9392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528160005260406000208181548110611b8657fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be6336000357fffffffff000000000000000000000000000000000000000000000000000000001661254d565b611c58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600080fd5b60076020528060005260406000206000915090505481565b600080600060043592506024359150349050600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544311611d7d57600080fd5b611dc6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612a3d565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e5284600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d5565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b753a98c33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611fbc57600080fd5b505af1158015611fd0573d6000803e3d6000fd5b5050505081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b60008060006004359250602435915034905043600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2d5d56b33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561224257600080fd5b505af1158015612256573d6000803e3d6000fd5b505050506122a3600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612ac0565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232f84600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612909565b81833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b6000806123e983611210565b90506123f48161185a565b80915050919050565b6000600f60009054906101000a900460ff1680156124685750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60096020528060005260406000206000915090505481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000815114806124be575060018151145b156124c85761254a565b60008090505b6001825103811015612548578160018201815181106124e957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1682828151811061251357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161061253b57600080fd5b80806001019150506124ce565b505b50565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258c57600190506127a0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125eb57600190506127a0565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561264a57600090506127a0565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561276257600080fd5b505afa158015612776573d6000803e3d6000fd5b505050506040513d602081101561278c57600080fd5b810190808051906020019092919050505090505b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b82189050919050565b600060066000838152602001908152602001600020905060008090505b81805490508110156129035761287d6008600084848154811061281157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612a3d565b6008600084848154811061288d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506127f2565b50505050565b600060066000838152602001908152602001600020905060008090505b8180549050811015612a37576129b16008600084848154811061294557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612ac0565b600860008484815481106129c157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612926565b50505050565b6000828284039150811115612aba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612b3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b828054828255906000526020600020908101928215612bbc579160200282015b82811115612bbb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612b63565b5b509050612bc99190612bcd565b5090565b612c0d91905b80821115612c0957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612bd3565b5090565b9056fea265627a7a7231582052686cb231139f00c5c7a17779cbf18779e619650b4f98996c72c2b88ad81c1664736f6c634300050c00320000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2000000000000000000000000a618e54de493ec29432ebd2ca7f14efbf6ac17f70000000000000000000000000000000000000000000000000000000000000005
diff --git a/chief_keeper/makerdao_utils/abi/DSEthToken.abi b/chief_keeper/makerdao_utils/abi/DSEthToken.abi
new file mode 100644
index 0000000..869e5dc
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSEthToken.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[],"name":"wrap","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"unwrap","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"tryWithdraw","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSEthToken.bin b/chief_keeper/makerdao_utils/abi/DSEthToken.bin
new file mode 100644
index 0000000..ea71fef
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSEthToken.bin
@@ -0,0 +1 @@
+606060405260005b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000819055505b505b611044806100646000396000f300606060405236156100ce576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100df578063095ea7b31461016e57806318160ddd146101c857806323b872dd146101f15780632e1a7d4d1461026a578063313ce5671461028d57806370a08231146102b657806395d89b4114610303578063a9059cbb14610392578063d0e30db0146103ec578063d46eb119146103f6578063dd62ed3e14610400578063de0e9a3e1461046c578063e3fa58821461048f575b6100dd5b6100da6104ca565b5b565b005b34156100ea57600080fd5b6100f26105b9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101335780820151818401525b602081019050610117565b50505050905090810190601f1680156101605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017957600080fd5b6101ae600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105f2565b604051808215151515815260200191505060405180910390f35b34156101d357600080fd5b6101db6106e5565b6040518082815260200191505060405180910390f35b34156101fc57600080fd5b610250600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106ef565b604051808215151515815260200191505060405180910390f35b341561027557600080fd5b61028b6004808035906020019091905050610a53565b005b341561029857600080fd5b6102a0610a68565b6040518082815260200191505060405180910390f35b34156102c157600080fd5b6102ed600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a6d565b6040518082815260200191505060405180910390f35b341561030e57600080fd5b610316610ab7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103575780820151818401525b60208101905061033b565b50505050905090810190601f1680156103845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039d57600080fd5b6103d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610af0565b604051808215151515815260200191505060405180910390f35b6103f46104ca565b005b6103fe610cc5565b005b341561040b57600080fd5b610456600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cd0565b6040518082815260200191505060405180910390f35b341561047757600080fd5b61048d6004808035906020019091905050610d58565b005b341561049a57600080fd5b6104b06004808035906020019091905050610d65565b604051808215151515815260200191505060405180910390f35b610513600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610f18565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061056260005434610f18565b6000819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b565b6040805190810160405280600b81526020017f577261707065642045544800000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b6000805490505b90565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561073c57fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156107c457fe5b61084a600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f32565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610913600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f32565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061099f600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f18565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b610a5c81610d65565b1515610a6457fe5b5b50565b601281565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b6040805190810160405280600581526020017f572d45544800000000000000000000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610b3d57fe5b610b86600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f32565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c12600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f18565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b610ccd6104ca565b5b565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b610d6181610a53565b5b50565b6000610db0600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f32565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dff60005483610f32565b600081905550610e0f3383610f4c565b15610e6b573373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65836040518082815260200191505060405180910390a260019050610f13565b610eb4600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f18565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f0360005483610f18565b60008190555060009050610f13565b5b919050565b60008282840191508110151515610f2b57fe5b5b92915050565b60008282840391508111151515610f4557fe5b5b92915050565b6000610f56611004565b610f61848285610f6b565b91505b5092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16828460405180828051906020019080838360005b83811015610fb45780820151818401525b602081019050610f98565b50505050905090810190601f168015610fe15780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505090505b9392505050565b6020604051908101604052806000815250905600a165627a7a723058206707b7b2a0293c72b2f902efd8b3ab89ca3259aaad69e524200d18b103a7f5120029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSGuard.abi b/chief_keeper/makerdao_utils/abi/DSGuard.abi
new file mode 100644
index 0000000..25da9a3
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSGuard.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"sig","type":"bytes32"}],"name":"forbid","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"bytes32"},{"name":"dst","type":"bytes32"},{"name":"sig","type":"bytes32"}],"name":"forbid","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ANY","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src_","type":"address"},{"name":"dst_","type":"address"},{"name":"sig","type":"bytes4"}],"name":"canCall","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"sig","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"bytes32"},{"name":"dst","type":"bytes32"},{"name":"sig","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"bytes32"},{"indexed":true,"name":"dst","type":"bytes32"},{"indexed":true,"name":"sig","type":"bytes32"}],"name":"LogPermit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"bytes32"},{"indexed":true,"name":"dst","type":"bytes32"},{"indexed":true,"name":"sig","type":"bytes32"}],"name":"LogForbid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSGuard.bin b/chief_keeper/makerdao_utils/abi/DSGuard.bin
new file mode 100644
index 0000000..c86b7a8
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSGuard.bin
@@ -0,0 +1 @@
+60606040525b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b5b6110508061009a6000396000f300606060405236156100a2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313af4035146100a75780632bc3217d146100e057806379d88d87146101455780637a9e5e4b146101865780638da5cb5b146101bf578063a8542f6614610214578063b700961314610245578063bf7e214f146102dd578063cbeea68c14610332578063f0217ce514610397575b600080fd5b34156100b257600080fd5b6100de600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506103d8565b005b34156100eb57600080fd5b610143600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506104b9565b005b341561015057600080fd5b61018460048080356000191690602001909190803560001916906020019091908035600019169060200190919050506104fc565b005b341561019157600080fd5b6101bd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105da565b005b34156101ca57600080fd5b6101d26106b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561021f57600080fd5b6102276106df565b60405180826000191660001916815260200191505060405180910390f35b341561025057600080fd5b6102c3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019091905050610706565b604051808215151515815260200191505060405180910390f35b34156102e857600080fd5b6102f0610c68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033d57600080fd5b610395600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050610c8d565b005b34156103a257600080fd5b6103d66004808035600019169060200190919080356000191690602001909190803560001916906020019091905050610cd0565b005b61040e610409336000357fffffffff0000000000000000000000000000000000000000000000000000000016610dae565b611014565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b5b50565b6104f68373ffffffffffffffffffffffffffffffffffffffff166001028373ffffffffffffffffffffffffffffffffffffffff16600102836104fc565b5b505050565b61053261052d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610dae565b611014565b6000600260008560001916600019168152602001908152602001600020600084600019166000191681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508060001916826000191684600019167f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a45b5b505050565b61061061060b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610dae565b611014565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a25b5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60010281565b60008060008573ffffffffffffffffffffffffffffffffffffffff1660010291508473ffffffffffffffffffffffffffffffffffffffff166001029050600260008360001916600019168152602001908152602001600020600082600019166000191681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660001916815260200190815260200160002060009054906101000a900460ff168061083e57506002600083600019166000191681526020019081526020016000206000826000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060009054906101000a900460ff165b806108de575060026000836000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600102600019166000191681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660001916815260200190815260200160002060009054906101000a900460ff165b80610986575060026000836000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060009054906101000a900460ff165b80610a265750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60010260001916600019168152602001908152602001600020600082600019166000191681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660001916815260200190815260200160002060009054906101000a900460ff165b80610ace5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600102600019166000191681526020019081526020016000206000826000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060009054906101000a900460ff165b80610b915750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600102600019166000191681526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660001916815260200190815260200160002060009054906101000a900460ff165b80610c5c5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001026000191660001916815260200190815260200160002060009054906101000a900460ff165b92505b50509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cca8373ffffffffffffffffffffffffffffffffffffffff166001028373ffffffffffffffffffffffffffffffffffffffff1660010283610cd0565b5b505050565b610d06610d01336000357fffffffff0000000000000000000000000000000000000000000000000000000016610dae565b611014565b6001600260008560001916600019168152602001908152602001600020600084600019166000191681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508060001916826000191684600019167f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a45b5b505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ded576001905061100e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e4c576001905061100e565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eab576000905061100e565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b1515610fe957600080fd5b6102c65a03f11515610ffa57600080fd5b50505060405180519050905061100e565b5b5b5b92915050565b80151561102057600080fd5b5b505600a165627a7a723058200f2066c0728b15b3e5f724d8d6969aadb8c362291037b6c4b61569888cd845400029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSPause.abi b/chief_keeper/makerdao_utils/abi/DSPause.abi
new file mode 100644
index 0000000..c269156
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSPause.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"usr","type":"address"},{"name":"fax","type":"bytes"},{"name":"era","type":"uint256"}],"name":"drop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"usr","type":"address"},{"name":"fax","type":"bytes"},{"name":"era","type":"uint256"}],"name":"plan","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"plans","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"usr","type":"address"},{"name":"fax","type":"bytes"},{"name":"era","type":"uint256"}],"name":"exec","outputs":[{"name":"response","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"delay_","type":"uint256"},{"name":"owner_","type":"address"},{"name":"authority_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"usr","type":"address"},{"indexed":false,"name":"fax","type":"bytes"},{"indexed":false,"name":"era","type":"uint256"}],"name":"Plan","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"usr","type":"address"},{"indexed":false,"name":"fax","type":"bytes"},{"indexed":false,"name":"era","type":"uint256"}],"name":"Drop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"usr","type":"address"},{"indexed":false,"name":"fax","type":"bytes"},{"indexed":false,"name":"era","type":"uint256"}],"name":"Exec","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSPause.bin b/chief_keeper/makerdao_utils/abi/DSPause.bin
new file mode 100644
index 0000000..ebd936a
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSPause.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506040516060806115508339810180604052606081101561003057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a28260038190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506113dd806101736000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146102235780639d6eff301461026d578063aa4f265314610352578063ad8d5f4814610398578063bf7e214f146104f657610093565b806313af40351461009857806368fc5156146100dc5780636a42b8f8146101c15780637a9e5e4b146101df575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610540565b005b6101bf600480360360608110156100f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012f57600080fd5b82018360208201111561014157600080fd5b8035906020019184600183028401116401000000008311171561016357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506105d0565b005b6101c9610783565b6040518082815260200191505060405180910390f35b610221600480360360208110156101f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610789565b005b61022b610819565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103506004803603606081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460018302840111640100000000831117156102f457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061083f565b005b61037e6004803603602081101561036857600080fd5b8101908080359060200190929190505050610a73565b604051808215151515815260200191505060405180910390f35b61047b600480360360608110156103ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103eb57600080fd5b8201836020820111156103fd57600080fd5b8035906020019184600183028401116401000000008311171561041f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610a93565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104bb5780820151818401526020810190506104a0565b50505050905090810190601f1680156104e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104fe610d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b6105cd81610d2c565b50565b6105fe336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e75565b610670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260006106818686866110ce565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f500211f888a49b8148c8b5c696f23f45bbf3da07b72b1dc5889910305743f30e838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610742578082015181840152602081019050610727565b50505050905090810190601f16801561076f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b60035481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061136c6023913960400191505060405180910390fd5b610816816111a1565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61086d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e75565b6108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6108eb426003546112e8565b811015610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f64732d70617573652d64656c61792d6e6f742d7265737065637465640000000081525060200191505060405180910390fd5b6001600260006109718686866110ce565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507fabee3e8aec010a7fccb40b3147ab980dd5e02a457e6284b6d430f829ed242719838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610a32578082015181840152602081019050610a17565b50505050905090810190601f168015610a5f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b60026020528060005260406000206000915054906101000a900460ff1681565b606081421015610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f64732d70617573652d657865637574696f6e2d746f6f2d736f6f6e000000000081525060200191505060405180910390fd5b60026000610b1a8686866110ce565b815260200190815260200160002060009054906101000a900460ff16610ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f64732d70617573652d756e706c616e6e65642d657865637574696f6e0000000081525060200191505060405180910390fd5b600060026000610bb98787876110ce565b815260200190815260200160002060006101000a81548160ff021916908315150217905550600080845160208601876113885a03f43d6040519250601f19601f6020830101168301604052808352806000602085013e811560018114610c1e57610c25565b8160208501fd5b5050507f838b6f9a74b504e7fb5f227802ada41d3445509443f531ee9279fb1b66103d12848484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610cc4578082015181840152602081019050610ca9565b50505050905090810190601f168015610cf15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a19392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d5a336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e75565b610dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eb457600190506110c8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f1357600190506110c8565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f7257600090506110c8565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561108a57600080fd5b505afa15801561109e573d6000803e3d6000fd5b505050506040513d60208110156110b457600080fd5b810190808051906020019092919050505090505b92915050565b6000838383604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561114e578082015181840152602081019050611133565b50505050905090810190601f16801561117b5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012090509392505050565b6111cf336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e75565b611241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000818301905082811015611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f64732d70617573652d6164646974696f6e2d6f766572666c6f7700000000000081525060200191505060405180910390fd5b9291505056fe64732d70617573652d756e64656c617965642d617574686f726974792d6368616e676564732d70617573652d756e64656c617965642d6f776e6572736869702d6368616e6765a165627a7a723058208fcaea5ac81a678983a3791c7a2374f85339c3bc728d3df0464b4093639ce0be0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxy.abi b/chief_keeper/makerdao_utils/abi/DSProxy.abi
new file mode 100644
index 0000000..b6f832b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxy.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"response","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"target","type":"address"},{"name":"response","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"cache","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cacheAddr","type":"address"}],"name":"setCache","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_cacheAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxy.bin b/chief_keeper/makerdao_utils/abi/DSProxy.bin
new file mode 100644
index 0000000..f7fcc84
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxy.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051602080610b37833981016040819052905160018054600160a060020a03191633600160a060020a031690811790915590917fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a261007d8164010000000061008e810204565b151561008857600080fd5b506102ac565b60006100c6337fffffffff00000000000000000000000000000000000000000000000000000000833516640100000000610180810204565b15156100d157600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a031693600080357fffffffff0000000000000000000000000000000000000000000000000000000016949092606082018484808284376040519201829003965090945050505050a4600160a060020a038416151561015857600080fd5b60028054600160a060020a038616600160a060020a0319909116179055600192505050919050565b600030600160a060020a031683600160a060020a031614156101a4575060016102a6565b600154600160a060020a03848116911614156101c2575060016102a6565b600054600160a060020a031615156101dc575060006102a6565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015230811660248301527fffffffff00000000000000000000000000000000000000000000000000000000871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505190505b92915050565b61087c806102bb6000396000f30060806040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af4035811461008f5780631cff79cd146100b05780631f6a1eb91461011c57806360c7d295146101c95780637a9e5e4b146101fa5780638da5cb5b1461021b578063948f507614610230578063bf7e214f14610265575b005b34801561009b57600080fd5b5061008d600160a060020a036004351661027a565b60408051602060046024803582810135601f810185900485028601850190965285855261010a958335600160a060020a03169536956044949193909101919081908401838280828437509497506102f89650505050505050565b60408051918252519081900360200190f35b6040805160206004803580820135601f81018490048402850184019095528484526101a694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506103be9650505050505050565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156101d557600080fd5b506101de6105ce565b60408051600160a060020a039092168252519081900360200190f35b34801561020657600080fd5b5061008d600160a060020a03600435166105dd565b34801561022757600080fd5b506101de610657565b34801561023c57600080fd5b50610251600160a060020a0360043516610666565b604080519115158252519081900360200190f35b34801561027157600080fd5b506101de61072d565b61029033600035600160e060020a03191661073c565b151561029b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600061031033600035600160e060020a03191661073c565b151561031b57600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a038516151561038a57600080fd5b60206000855160208701886113885a03f460005193508015600181146103af576103b4565b600080fd5b5050505092915050565b6002546040517f8bf4515c0000000000000000000000000000000000000000000000000000000081526020600482018181528551602484015285516000948594600160a060020a0390911693638bf4515c93899390928392604490910191908501908083838b5b8381101561043d578181015183820152602001610425565b50505050905090810190601f16801561046a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050506040513d60208110156104b357600080fd5b50519150600160a060020a03821615156105bb576002546040517f7ed0c3b2000000000000000000000000000000000000000000000000000000008152602060048201818152875160248401528751600160a060020a0390941693637ed0c3b293899383926044909201919085019080838360005b83811015610540578181015183820152602001610528565b50505050905090810190601f16801561056d5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561058c57600080fd5b505af11580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505191505b6105c582846102f8565b90509250929050565b600254600160a060020a031681565b6105f333600035600160e060020a03191661073c565b15156105fe57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b600061067e33600035600160e060020a03191661073c565b151561068957600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a03841615156106f857600080fd5b60028054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116179055600192505050919050565b600054600160a060020a031681565b600030600160a060020a031683600160a060020a031614156107605750600161084a565b600154600160a060020a038481169116141561077e5750600161084a565b600054600160a060020a031615156107985750600061084a565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523081166024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561081b57600080fd5b505af115801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b505190505b929150505600a165627a7a72305820e498874c9ba9e75028e0c84f1b1d83b2dad5de910c59b837b32e5a190794c5e10029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxyCache.abi b/chief_keeper/makerdao_utils/abi/DSProxyCache.abi
new file mode 100644
index 0000000..c5278a1
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxyCache.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"_code","type":"bytes"}],"name":"write","outputs":[{"name":"target","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_code","type":"bytes"}],"name":"read","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxyCache.bin b/chief_keeper/makerdao_utils/abi/DSProxyCache.bin
new file mode 100644
index 0000000..abbf83e
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxyCache.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5061029c806100206000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416637ed0c3b281146100505780638bf4515c146100d2575b600080fd5b34801561005c57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a994369492936024939284019190819084018382808284375094975061012b9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100de57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a99436949293602493928401919081908401838280828437509497506101e79650505050505050565b6000808251602084016000f09150813b156001811461004b5750826040518082805190602001908083835b602083106101755780518252601f199092019160209182019101610156565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529081905291909120805473ffffffffffffffffffffffffffffffffffffffff191673ffffffffffffffffffffffffffffffffffffffff87161790555092949350505050565b600080826040518082805190602001908083835b6020831061021a5780518252601f1990920191602091820191016101fb565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815290819052919091205473ffffffffffffffffffffffffffffffffffffffff1696955050505050505600a165627a7a72305820105083b62f0f9cd6be84fcbd3c7208d0d48d7235d9538890eac2369f4864414d0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxyFactory.abi b/chief_keeper/makerdao_utils/abi/DSProxyFactory.abi
new file mode 100644
index 0000000..550ce0d
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxyFactory.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isProxy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cache","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"proxy","type":"address"},{"indexed":false,"name":"cache","type":"address"}],"name":"Created","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSProxyFactory.bin b/chief_keeper/makerdao_utils/abi/DSProxyFactory.bin
new file mode 100644
index 0000000..20198b1
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSProxyFactory.bin
@@ -0,0 +1 @@
+608060405261000c61005b565b604051809103906000f080158015610028573d6000803e3d6000fd5b5060018054600160a060020a031916600160a060020a039290921691909117905534801561005557600080fd5b5061006b565b6040516102bc80610e7183390190565b610df78061007a6000396000f3006080604052600436106100615763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166329710388811461006657806360c7d2951461009b5780638e1a55fc146100cc578063f3701da2146100e1575b600080fd5b34801561007257600080fd5b50610087600160a060020a0360043516610102565b604080519115158252519081900360200190f35b3480156100a757600080fd5b506100b0610117565b60408051600160a060020a039092168252519081900360200190f35b3480156100d857600080fd5b506100b0610126565b3480156100ed57600080fd5b506100b0600160a060020a0360043516610136565b60006020819052908152604090205460ff1681565b600154600160a060020a031681565b600061013133610136565b905090565b600154600090600160a060020a031661014d610284565b600160a060020a03909116815260405190819003602001906000f08015801561017a573d6000803e3d6000fd5b5060015460408051600160a060020a038085168252928316602082015281519394508286169333909316927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b929181900390910190a380600160a060020a03166313af4035836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561024457600080fd5b505af1158015610258573d6000803e3d6000fd5b505050600160a060020a0382166000908152602081905260409020805460ff1916600117905550919050565b604051610b3780610295833901905600608060405234801561001057600080fd5b50604051602080610b37833981016040819052905160018054600160a060020a03191633600160a060020a031690811790915590917fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a261007d8164010000000061008e810204565b151561008857600080fd5b506102ac565b60006100c6337fffffffff00000000000000000000000000000000000000000000000000000000833516640100000000610180810204565b15156100d157600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a031693600080357fffffffff0000000000000000000000000000000000000000000000000000000016949092606082018484808284376040519201829003965090945050505050a4600160a060020a038416151561015857600080fd5b60028054600160a060020a038616600160a060020a0319909116179055600192505050919050565b600030600160a060020a031683600160a060020a031614156101a4575060016102a6565b600154600160a060020a03848116911614156101c2575060016102a6565b600054600160a060020a031615156101dc575060006102a6565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015230811660248301527fffffffff00000000000000000000000000000000000000000000000000000000871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b505190505b92915050565b61087c806102bb6000396000f30060806040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af4035811461008f5780631cff79cd146100b05780631f6a1eb91461011c57806360c7d295146101c95780637a9e5e4b146101fa5780638da5cb5b1461021b578063948f507614610230578063bf7e214f14610265575b005b34801561009b57600080fd5b5061008d600160a060020a036004351661027a565b60408051602060046024803582810135601f810185900485028601850190965285855261010a958335600160a060020a03169536956044949193909101919081908401838280828437509497506102f89650505050505050565b60408051918252519081900360200190f35b6040805160206004803580820135601f81018490048402850184019095528484526101a694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506103be9650505050505050565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156101d557600080fd5b506101de6105ce565b60408051600160a060020a039092168252519081900360200190f35b34801561020657600080fd5b5061008d600160a060020a03600435166105dd565b34801561022757600080fd5b506101de610657565b34801561023c57600080fd5b50610251600160a060020a0360043516610666565b604080519115158252519081900360200190f35b34801561027157600080fd5b506101de61072d565b61029033600035600160e060020a03191661073c565b151561029b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600061031033600035600160e060020a03191661073c565b151561031b57600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a038516151561038a57600080fd5b60206000855160208701886113885a03f460005193508015600181146103af576103b4565b600080fd5b5050505092915050565b6002546040517f8bf4515c0000000000000000000000000000000000000000000000000000000081526020600482018181528551602484015285516000948594600160a060020a0390911693638bf4515c93899390928392604490910191908501908083838b5b8381101561043d578181015183820152602001610425565b50505050905090810190601f16801561046a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050506040513d60208110156104b357600080fd5b50519150600160a060020a03821615156105bb576002546040517f7ed0c3b2000000000000000000000000000000000000000000000000000000008152602060048201818152875160248401528751600160a060020a0390941693637ed0c3b293899383926044909201919085019080838360005b83811015610540578181015183820152602001610528565b50505050905090810190601f16801561056d5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561058c57600080fd5b505af11580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b505191505b6105c582846102f8565b90509250929050565b600254600160a060020a031681565b6105f333600035600160e060020a03191661073c565b15156105fe57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b600061067e33600035600160e060020a03191661073c565b151561068957600080fd5b6040805134808252602082018381523693830184905260043593602435938493869333600160a060020a03169360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4600160a060020a03841615156106f857600080fd5b60028054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116179055600192505050919050565b600054600160a060020a031681565b600030600160a060020a031683600160a060020a031614156107605750600161084a565b600154600160a060020a038481169116141561077e5750600161084a565b600054600160a060020a031615156107985750600061084a565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523081166024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561081b57600080fd5b505af115801561082f573d6000803e3d6000fd5b505050506040513d602081101561084557600080fd5b505190505b929150505600a165627a7a72305820e498874c9ba9e75028e0c84f1b1d83b2dad5de910c59b837b32e5a190794c5e10029a165627a7a72305820583da87befec91670514c2984973aa6bbcc670389d3ee030432bc23618ea96b20029608060405234801561001057600080fd5b5061029c806100206000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416637ed0c3b281146100505780638bf4515c146100d2575b600080fd5b34801561005c57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a994369492936024939284019190819084018382808284375094975061012b9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100de57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a99436949293602493928401919081908401838280828437509497506101e79650505050505050565b6000808251602084016000f09150813b156001811461004b5750826040518082805190602001908083835b602083106101755780518252601f199092019160209182019101610156565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529081905291909120805473ffffffffffffffffffffffffffffffffffffffff191673ffffffffffffffffffffffffffffffffffffffff87161790555092949350505050565b600080826040518082805190602001908083835b6020831061021a5780518252601f1990920191602091820191016101fb565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815290819052919091205473ffffffffffffffffffffffffffffffffffffffff1696955050505050505600a165627a7a72305820105083b62f0f9cd6be84fcbd3c7208d0d48d7235d9538890eac2369f4864414d0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSRoles.abi b/chief_keeper/makerdao_utils/abi/DSRoles.abi
new file mode 100644
index 0000000..c5e95d8
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSRoles.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"getUserRoles","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"code","type":"address"},{"name":"sig","type":"bytes4"}],"name":"getCapabilityRoles","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"code","type":"address"},{"name":"sig","type":"bytes4"}],"name":"isCapabilityPublic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"who","type":"address"},{"name":"role","type":"uint8"},{"name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"role","type":"uint8"},{"name":"code","type":"address"},{"name":"sig","type":"bytes4"},{"name":"enabled","type":"bool"}],"name":"setRoleCapability","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"},{"name":"role","type":"uint8"}],"name":"hasUserRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"caller","type":"address"},{"name":"code","type":"address"},{"name":"sig","type":"bytes4"}],"name":"canCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"code","type":"address"},{"name":"sig","type":"bytes4"},{"name":"enabled","type":"bool"}],"name":"setPublicCapability","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"who","type":"address"},{"name":"enabled","type":"bool"}],"name":"setRootUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"isUserRoot","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSRoles.bin b/chief_keeper/makerdao_utils/abi/DSRoles.bin
new file mode 100644
index 0000000..3e14c63
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSRoles.bin
@@ -0,0 +1 @@
+608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26114db806100976000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bf7e214f11610066578063bf7e214f14610510578063c6b0263e1461055a578063d381ba7c146105d3578063fbf8077314610623576100ea565b80638da5cb5b146103b8578063a078f73714610402578063b70096131461046b576100ea565b80632f47571f116100c85780632f47571f1461020c57806367aff484146102915780637a9e5e4b146102ee5780637d40583d14610332576100ea565b806306a36aee146100ef57806313af40351461014757806327538e901461018b575b600080fd5b6101316004803603602081101561010557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061067f565b6040518082815260200191505060405180910390f35b6101896004803603602081101561015d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c8565b005b6101f6600480360360408110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610811565b6040518082815260200191505060405180910390f35b6102776004803603604081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506108aa565b604051808215151515815260200191505060405180910390f35b6102ec600480360360608110156102a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803515159060200190929190505050610950565b005b6103306004803603602081101561030457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae9565b005b6103b66004803603608081101561034857600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050610c30565b005b6103c0610eb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104516004803603604081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610edd565b604051808215151515815260200191505060405180910390f35b6104f66004803603606081101561048157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f0c565b604051808215151515815260200191505060405180910390f35b610518610f66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105d16004803603606081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050610f8b565b005b610621600480360360408110156105e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110d6565b005b6106656004803603602081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d1565b604051808215151515815260200191505060405180910390f35b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b610768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16905092915050565b61097e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b6109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008360ff1660020a60001b90508215610a9357808217600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ae2565b610a9c81611480565b8216600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050565b610b17336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b610b89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b610c5e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b610cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008560ff1660020a60001b90508215610e1157808217600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550610eaf565b610e1a81611480565b8216600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ee98461067f565b905060008360ff1660020a60001b90508082166000801b14159250505092915050565b6000610f17846111d1565b80610f285750610f2783836108aa565b5b15610f365760019050610f5f565b6000610f418561067f565b90506000610f4f8585610811565b90508082166000801b1415925050505b9392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fb9336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b61102b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b611104336000357fffffffff0000000000000000000000000000000000000000000000000000000016611227565b611176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611266576001905061147a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112c5576001905061147a565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611324576000905061147a565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d602081101561146657600080fd5b810190808051906020019092919050505090505b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8218905091905056fea165627a7a72305820b9961351c1de36f35dff1158ebbe8b19fa9ee4c281e0856a5f9d45568ad9904a0029
\ No newline at end of file
diff --git a/chief_keeper/abi/DSSSpell.abi b/chief_keeper/makerdao_utils/abi/DSSSpell.abi
similarity index 100%
rename from chief_keeper/abi/DSSSpell.abi
rename to chief_keeper/makerdao_utils/abi/DSSSpell.abi
diff --git a/chief_keeper/abi/DSSSpell.bin b/chief_keeper/makerdao_utils/abi/DSSSpell.bin
similarity index 100%
rename from chief_keeper/abi/DSSSpell.bin
rename to chief_keeper/makerdao_utils/abi/DSSSpell.bin
diff --git a/chief_keeper/makerdao_utils/abi/DSToken.abi b/chief_keeper/makerdao_utils/abi/DSToken.abi
new file mode 100644
index 0000000..1d19966
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSToken.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name_","type":"bytes32"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"symbol_","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"dst","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Transfer","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSToken.bin b/chief_keeper/makerdao_utils/abi/DSToken.bin
new file mode 100644
index 0000000..18dc4ef
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSToken.bin
@@ -0,0 +1 @@
+606060405260126006556000600755341561001957600080fd5b604051602080610dd283398101604052808051600160a060020a03331660008181526001602052604080822082905590805560048054600160a060020a0319168317905591935091507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed94905160405180910390a2600555610d338061009f6000396000f3006060604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014d57806307da68f514610172578063095ea7b31461018757806313af4035146101bd57806318160ddd146101dc57806323b872dd146101ef578063313ce5671461021757806340c10f191461022a57806342966c681461024c5780635ac801fe1461026257806370a082311461027857806375f12b21146102975780637a9e5e4b146102aa5780638da5cb5b146102c957806395d89b41146102f85780639dc29fac1461030b578063a0712d681461032d578063a9059cbb14610343578063b753a98c14610365578063bb35783b14610387578063be9a6555146103af578063bf7e214f146103c2578063daea85c5146103d5578063dd62ed3e146103f4578063f2d5d56b14610419575b600080fd5b341561015857600080fd5b61016061043b565b60405190815260200160405180910390f35b341561017d57600080fd5b610185610441565b005b341561019257600080fd5b6101a9600160a060020a03600435166024356104e0565b604051901515815260200160405180910390f35b34156101c857600080fd5b610185600160a060020a036004351661050d565b34156101e757600080fd5b61016061058c565b34156101fa57600080fd5b6101a9600160a060020a0360043581169060243516604435610592565b341561022257600080fd5b610160610707565b341561023557600080fd5b610185600160a060020a036004351660243561070d565b341561025757600080fd5b6101856004356107d3565b341561026d57600080fd5b6101856004356107e0565b341561028357600080fd5b610160600160a060020a0360043516610806565b34156102a257600080fd5b6101a9610821565b34156102b557600080fd5b610185600160a060020a0360043516610831565b34156102d457600080fd5b6102dc6108b0565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b6101606108bf565b341561031657600080fd5b610185600160a060020a03600435166024356108c5565b341561033857600080fd5b610185600435610a33565b341561034e57600080fd5b6101a9600160a060020a0360043516602435610a3d565b341561037057600080fd5b610185600160a060020a0360043516602435610a4a565b341561039257600080fd5b610185600160a060020a0360043581169060243516604435610a5a565b34156103ba57600080fd5b610185610a6b565b34156103cd57600080fd5b6102dc610b04565b34156103e057600080fd5b6101a9600160a060020a0360043516610b13565b34156103ff57600080fd5b610160600160a060020a0360043581169060243516610b39565b341561042457600080fd5b610185600160a060020a0360043516602435610b64565b60075481565b61045733600035600160e060020a031916610b6f565b151561046257600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b60045460009060a060020a900460ff16156104fa57600080fd5b6105048383610c7b565b90505b92915050565b61052333600035600160e060020a031916610b6f565b151561052e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60005490565b60045460009060a060020a900460ff16156105ac57600080fd5b33600160a060020a031684600160a060020a0316141580156105f65750600160a060020a038085166000908152600260209081526040808320339094168352929052205460001914155b1561065457600160a060020a038085166000908152600260209081526040808320339094168352929052205461062c9083610ce7565b600160a060020a03808616600090815260026020908152604080832033909416835292905220555b600160a060020a0384166000908152600160205260409020546106779083610ce7565b600160a060020a0380861660009081526001602052604080822093909355908516815220546106a69083610cf7565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60065481565b61072333600035600160e060020a031916610b6f565b151561072e57600080fd5b60045460a060020a900460ff161561074557600080fd5b600160a060020a0382166000908152600160205260409020546107689082610cf7565b600160a060020a0383166000908152600160205260408120919091555461078f9082610cf7565b600055600160a060020a0382167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405190815260200160405180910390a25050565b6107dd33826108c5565b50565b6107f633600035600160e060020a031916610b6f565b151561080157600080fd5b600755565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1681565b61084733600035600160e060020a031916610b6f565b151561085257600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600454600160a060020a031681565b60055481565b6108db33600035600160e060020a031916610b6f565b15156108e657600080fd5b60045460a060020a900460ff16156108fd57600080fd5b33600160a060020a031682600160a060020a0316141580156109475750600160a060020a038083166000908152600260209081526040808320339094168352929052205460001914155b156109a557600160a060020a038083166000908152600260209081526040808320339094168352929052205461097d9082610ce7565b600160a060020a03808416600090815260026020908152604080832033909416835292905220555b600160a060020a0382166000908152600160205260409020546109c89082610ce7565b600160a060020a038316600090815260016020526040812091909155546109ef9082610ce7565b600055600160a060020a0382167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a25050565b6107dd338261070d565b6000610504338484610592565b610a55338383610592565b505050565b610a65838383610592565b50505050565b610a8133600035600160e060020a031916610b6f565b1515610a8c57600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff000000000000000000000000000000000000000019169055565b600354600160a060020a031681565b60045460009060a060020a900460ff1615610b2d57600080fd5b61050782600019610c7b565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b610a55823383610592565b600030600160a060020a031683600160a060020a03161415610b9357506001610507565b600454600160a060020a0384811691161415610bb157506001610507565b600354600160a060020a03161515610bcb57506000610507565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515610c5957600080fd5b6102c65a03f11515610c6a57600080fd5b505050604051805190509050610507565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b8082038281111561050757600080fd5b8082018281101561050757600080fd00a165627a7a7230582045cdaebb4eab1feb85ca7970ca46d799fe473a643a17fbb010d1095dfd9019260029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSValue.abi b/chief_keeper/makerdao_utils/abi/DSValue.abi
new file mode 100644
index 0000000..cbbcba2
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSValue.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wut","type":"bytes32"}],"name":"poke","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"read","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"name":"","type":"bytes32"},{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"void","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSValue.bin b/chief_keeper/makerdao_utils/abi/DSValue.bin
new file mode 100644
index 0000000..066134c
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSValue.bin
@@ -0,0 +1 @@
+60606040525b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405180905060405180910390a25b5b6109468061009d6000396000f3006060604052361561008c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313af40351461008e5780631504460f146100c457806357de26a4146100e857806359e02dd7146101165780637a9e5e4b1461014f5780638da5cb5b14610185578063ac4c25b2146101d7578063bf7e214f146101e9575bfe5b341561009657fe5b6100c2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061023b565b005b34156100cc57fe5b6100e660048080356000191690602001909190505061031f565b005b34156100f057fe5b6100f861042f565b60405180826000191660001916815260200191505060405180910390f35b341561011e57fe5b610126610453565b604051808360001916600019168152602001821515151581526020019250505060405180910390f35b341561015757fe5b610183600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610473565b005b341561018d57fe5b610195610557565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101df57fe5b6101e761057d565b005b34156101f157fe5b6101f9610681565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027161026c336000357fffffffff00000000000000000000000000000000000000000000000000000000166106a7565b610909565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405180905060405180910390a25b5b50565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46104016103fc336000357fffffffff00000000000000000000000000000000000000000000000000000000166106a7565b610909565b82600281600019169055506001600160146101000a81548160ff0219169083151502179055505b5b5b505050565b60006000600061043d610453565b9150915061044a81610909565b8192505b505090565b60006000600254600160149054906101000a900460ff16915091505b9091565b6104a96104a4336000357fffffffff00000000000000000000000000000000000000000000000000000000166106a7565b610909565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405180905060405180910390a25b5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461065f61065a336000357fffffffff00000000000000000000000000000000000000000000000000000000166106a7565b610909565b6000600160146101000a81548160ff0219169083151502179055505b5b5b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106e65760019050610903565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107455760019050610903565b600073ffffffffffffffffffffffffffffffffffffffff16600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107a55760009050610903565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b15156108e157fe5b6102c65a03f115156108ef57fe5b505050604051805190509050610903565b5b5b5b92915050565b8015156109165760006000fd5b5b505600a165627a7a72305820292aabf74b75fe25876be4f6f343233807cf218d971ce0ecde7ca25a03c31a2f0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSVault.abi b/chief_keeper/makerdao_utils/abi/DSVault.abi
new file mode 100644
index 0000000..834d0df
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSVault.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"token_","type":"address"}],"name":"swap","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint128"}],"name":"push","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint128"}],"name":"push","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"}],"name":"pull","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"src","type":"address"}],"name":"pull","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"mint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"src","type":"address"},{"name":"wad","type":"uint128"}],"name":"pull","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"wad","type":"uint128"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"wad","type":"uint128"}],"name":"pull","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"push","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint128"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"dst","type":"address"}],"name":"push","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"wad","type":"uint128"}],"name":"mint","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DSVault.bin b/chief_keeper/makerdao_utils/abi/DSVault.bin
new file mode 100644
index 0000000..5ea1ad4
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DSVault.bin
@@ -0,0 +1 @@
+60606040525b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405180905060405180910390a25b5b6114b18061009d6000396000f30060606040523615610110576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303438dd01461011257806313af4035146101485780633452f51d1461017e5780633c71a7c7146101cf57806344df8e701461023f57806352d112381461025157806366b3bcb01461028757806369d3e20e146102dc5780636b2113cd1461030e5780637261e4691461037e5780637a9e5e4b146103cf5780638402181f1461040557806389afcb441461045657806389b09de71461048c5780638da5cb5b146104c257806390bc169314610514578063b716ba6714610546578063be29184f1461059b578063bf7e214f146105ec578063fc0c546a1461063e575bfe5b341561011a57fe5b610146600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610690565b005b341561015057fe5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061070c565b005b341561018657fe5b6101cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff169060200190919050506107f0565b005b34156101d757fe5b61023d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610822565b005b341561024757fe5b61024f610939565b005b341561025957fe5b610285600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610967565b005b341561028f57fe5b6102da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610997565b005b34156102e457fe5b61030c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610a66565b005b341561031657fe5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a96565b005b341561038657fe5b6103cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610be1565b005b34156103d757fe5b610403600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cbd565b005b341561040d57fe5b610454600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da1565b005b341561045e57fe5b61048a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610dd3565b005b341561049457fe5b6104c0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f6d565b005b34156104ca57fe5b6104d2610f9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051c57fe5b61054460048080356fffffffffffffffffffffffffffffffff16906020019091905050610fc3565b005b341561054e57fe5b610599600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ff3565b005b34156105a357fe5b6105ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff169060200190919050506110c2565b005b34156105f457fe5b6105fc61119e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561064657fe5b61064e6111c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c66106c1336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b61074261073d336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405180905060405180910390a25b5b50565b61081d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383610822565b5b5050565b610858610853336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b6109328373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561091557fe5b6102c65a03f1151561092357fe5b5050506040518051905061144c565b5b5b505050565b610964600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dd3565b5b565b610993600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610997565b5b50565b610a618282610a5c8573ffffffffffffffffffffffffffffffffffffffff166370a08231866000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610a3f57fe5b6102c65a03f11515610a4d57fe5b5050506040518051905061145d565b610a96565b5b5050565b610a92600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826110c2565b5b50565b610acc610ac7336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b610bda8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1515610bbd57fe5b6102c65a03f11515610bcb57fe5b5050506040518051905061144c565b5b5b505050565b610c17610c12336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b8173ffffffffffffffffffffffffffffffffffffffff166390bc1693826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610ca657fe5b6102c65a03f11515610cb457fe5b5050505b5b5050565b610cf3610cee336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405180905060405180910390a25b5b50565b610dce600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383610a96565b5b5050565b610e09610e04336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b8073ffffffffffffffffffffffffffffffffffffffff166390bc1693610ee58373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610ec857fe5b6102c65a03f11515610ed657fe5b5050506040518051905061145d565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610f5757fe5b6102c65a03f11515610f6557fe5b5050505b5b50565b610f99600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610ff3565b5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fef600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610be1565b5b50565b6110bd82826110b88573ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561109b57fe5b6102c65a03f115156110a957fe5b5050506040518051905061145d565b610822565b5b5050565b6110f86110f3336000357fffffffff00000000000000000000000000000000000000000000000000000000166111ea565b61144c565b8173ffffffffffffffffffffffffffffffffffffffff166369d3e20e826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561118757fe5b6102c65a03f1151561119557fe5b5050505b5b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112295760019050611446565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112885760019050611446565b600073ffffffffffffffffffffffffffffffffffffffff16600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112e85760009050611446565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561142457fe5b6102c65a03f1151561143257fe5b505050604051805190509050611446565b5b5b5b92915050565b8015156114595760006000fd5b5b50565b600061147f82839250826fffffffffffffffffffffffffffffffff161461144c565b5b9190505600a165627a7a72305820b7e395800eda0353bccfb687267a3713db9b0f8d60687170739c3fad89c8c4e20029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/DaiJoin.abi b/chief_keeper/makerdao_utils/abi/DaiJoin.abi
new file mode 100644
index 0000000..6a54205
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DaiJoin.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"dai_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dai","outputs":[{"internalType":"contract DSTokenLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/DaiJoin.bin b/chief_keeper/makerdao_utils/abi/DaiJoin.bin
new file mode 100644
index 0000000..81c2603
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DaiJoin.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051610c91380380610c918339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160038190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610b648061012d6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063957aa58c11610066578063957aa58c1461017e5780639c52a7f11461019c578063bf353dbb146101e0578063ef693bed14610238578063f4b9fa751461028657610093565b806336569e77146100985780633b4da69f146100e257806365fae35e146101305780636924500914610174575b600080fd5b6100a06102d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012e600480360360408110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102f6565b005b6101726004803603602081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f8565b005b61017c610626565b005b610186610717565b6040518082815260200191505060405180910390f35b6101de600480360360208110156101b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061071d565b005b610222600480360360208110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084b565b6040518082815260200191505060405180910390f35b6102846004803603604081101561024e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610863565b005b61028e610add565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b308461034c6b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156103e857600080fd5b505af11580156103fc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104a957600080fd5b505af11580156104bd573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146105ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600354146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4461694a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306109316b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080821480610b205750828283850292508281610b1d57fe5b04145b610b2957600080fd5b9291505056fea265627a7a723158208c932023d4aee5f95beccf8a507b0a7583709acfd8b924c4d0f21d07c4e3c45964736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Dog.abi b/chief_keeper/makerdao_utils/abi/Dog.abi
new file mode 100644
index 0000000..2a0455e
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Dog.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"address","name":"urn","type":"address"},{"indexed":false,"internalType":"uint256","name":"ink","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"art","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"due","type":"uint256"},{"indexed":false,"internalType":"address","name":"clip","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Bark","type":"event"},{"anonymous":false,"inputs":[],"name":"Cage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rad","type":"uint256"}],"name":"Digs","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"clip","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"inputs":[],"name":"Dirt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Hole","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"address","name":"kpr","type":"address"}],"name":"bark","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"chop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"digs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"clip","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"address","name":"clip","type":"address"},{"internalType":"uint256","name":"chop","type":"uint256"},{"internalType":"uint256","name":"hole","type":"uint256"},{"internalType":"uint256","name":"dirt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vow","outputs":[{"internalType":"contract VowLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Dog.bin b/chief_keeper/makerdao_utils/abi/Dog.bin
new file mode 100644
index 0000000..a2f4ce9
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Dog.bin
@@ -0,0 +1 @@
+60a060405234801561001057600080fd5b50604051611f92380380611f928339818101604052602081101561003357600080fd5b81019080805190602001909291905050508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160038190555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a25060805160601c611e5b610137600039806109485280611414528061158d52806119bc5250611e5b6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063af7cfeb1116100a2578063d792653811610071578063d79265381461039e578063d9638d36146103e0578063ebecb39d1461044d578063ed998908146104a5578063eda6e121146105275761010b565b8063af7cfeb1146102a2578063bf353dbb146102c0578063c87193f414610318578063d4e8be83146103505761010b565b806365fae35e116100de57806365fae35e146101f25780636924500914610236578063957aa58c146102405780639c52a7f11461025e5761010b565b80631a0b287e1461011057806329ae81141461015257806336569e771461018a578063626cb3c5146101be575b600080fd5b6101506004803603606081101561012657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610545565b005b6101886004803603604081101561016857600080fd5b8101908080359060200190929190803590602001909291905050506107b4565b005b610192610946565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c661096a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102346004803603602081101561020857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610990565b005b61023e610ace565b005b610248610bb8565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bbe565b005b6102aa610cfc565b6040518082815260200191505060405180910390f35b610302600480360360208110156102d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d02565b6040518082815260200191505060405180910390f35b61034e6004803603604081101561032e57600080fd5b810190808035906020019092919080359060200190929190505050610d1a565b005b61039c6004803603604081101561036657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e56565b005b6103ca600480360360208110156103b457600080fd5b8101908080359060200190929190505050611038565b6040518082815260200191505060405180910390f35b61040c600480360360208110156103f657600080fd5b8101908080359060200190929190505050611058565b604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b6104a36004803603606081101561046357600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b610511600480360360608110156104bb57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611395565b6040518082815260200191505060405180910390f35b61052f611d3d565b6040518082815260200191505060405180910390f35b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f63686f70000000000000000000000000000000000000000000000000000000008214156106bf57670de0b6b3a764000081101561069f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f446f672f66696c652d63686f702d6c742d57414400000000000000000000000081525060200191505060405180910390fd5b806001600085815260200190815260200160002060010181905550610776565b7f686f6c650000000000000000000000000000000000000000000000000000000082141561070757806001600085815260200190815260200160002060020181905550610775565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b81837f851aa1caf4888170ad8875449d18f0f512fd6deb2a6571ea1a41fb9f95acbcd1836040518082815260200191505060405180910390a3505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f486f6c650000000000000000000000000000000000000000000000000000000082141561089c578060048190555061090a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040518082815260200191505060405180910390a25050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003819055507f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda60405160405180910390a1565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60045481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b610dda60055482611d43565b600581905550610e00600160008481526020019081526020016000206003015482611d43565b6001600084815260200190815260200160002060030181905550817f54f095dc7308776bf01e8580e4dd40fd959ea4bf50b069975768320ef8d77d8a826040518082815260200191505060405180910390a25050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f770000000000000000000000000000000000000000000000000000000000821415610f785780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fe6565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600060016000838152602001908152602001600020600101549050919050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f446f672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f636c6970000000000000000000000000000000000000000000000000000000008214156112d3578073ffffffffffffffffffffffffffffffffffffffff1663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ca57600080fd5b505afa1580156111de573d6000803e3d6000fd5b505050506040513d60208110156111f457600080fd5b81019080805190602001909291905050508314611279576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f446f672f66696c652d696c6b2d6e65712d636c69702e696c6b0000000000000081525060200191505060405180910390fd5b806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611341565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b81837f4ff2caaa972a7c6629ea01fae9c93d73cc307d13ea4c369f9bbbb7f9b7e9461d83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a3505050565b600060016003541461140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f446f672f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632424be5c87876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156114a057600080fd5b505afa1580156114b4573d6000803e3d6000fd5b505050506040513d60408110156114ca57600080fd5b810190808051906020019092919080519060200190929190505050915091506114f1611dbd565b600160008881526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d9638d368c6040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d60a081101561162657600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929350905080945081935082955050505060008111801561169357506116878684611d5d565b6116918883611d5d565b105b611705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f446f672f6e6f742d756e7361666500000000000000000000000000000000000081525060200191505060405180910390fd5b60055460045411801561171f575084606001518560400151115b611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f446f672f6c69717569646174696f6e2d6c696d69742d6869740000000000000081525060200191505060405180910390fd5b60006117ad600554600454038760600151886040015103611d89565b90506117e0878760200151866117cb85670de0b6b3a7640000611d5d565b816117d257fe5b04816117da57fe5b04611d89565b94508487111561186957826117f786890386611d5d565b101561180557869450611868565b826118108686611d5d565b1015611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611dfc602a913960400191505060405180910390fd5b5b5b50506000856118788886611d5d565b8161187f57fe5b049050600081116118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f446f672f6e756c6c2d61756374696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000841115801561194857507f80000000000000000000000000000000000000000000000000000000000000008111155b6119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f446f672f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637bab3f408c8c8860000151600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000038a6000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b505050506000611ae78585611d5d565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697efb78826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b5e57600080fd5b505af1158015611b72573d6000803e3d6000fd5b505050506000670de0b6b3a7640000611b8f838960200151611d5d565b81611b9657fe5b049050611ba560055482611da3565b600581905550611bb9876060015182611da3565b600160008f815260200190815260200160002060030181905550866000015173ffffffffffffffffffffffffffffffffffffffff1663898eb26782858f8f6040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001945050505050602060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b8101908080519060200190929190505050995050888b73ffffffffffffffffffffffffffffffffffffffff168d7f85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c8589868c60000151604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a450505050505050509392505050565b60055481565b6000828284039150811115611d5757600080fd5b92915050565b600080821480611d7a5750828283850292508281611d7757fe5b04145b611d8357600080fd5b92915050565b600081831115611d995781611d9b565b825b905092915050565b6000828284019150811015611db757600080fd5b92915050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152509056fe446f672f64757374792d61756374696f6e2d66726f6d2d7061727469616c2d6c69717569646174696f6ea26469706673582212200eb4be7ac6be839c06ac4ff93c6491faefb0d37d6744acba155eb76477d3938564736f6c634300060c0033
diff --git a/chief_keeper/makerdao_utils/abi/DsrManager.abi b/chief_keeper/makerdao_utils/abi/DsrManager.abi
new file mode 100644
index 0000000..0e3d6e3
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DsrManager.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"pot_","type":"address"},{"internalType":"address","name":"daiJoin_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Exit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Join","type":"event"},{"constant":true,"inputs":[],"name":"dai","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"daiBalance","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"daiJoin","outputs":[{"internalType":"contract JoinLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"}],"name":"exitAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pieOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pot","outputs":[{"internalType":"contract PotLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/DsrManager.bin b/chief_keeper/makerdao_utils/abi/DsrManager.bin
new file mode 100644
index 0000000..5ff5a41
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DsrManager.bin
@@ -0,0 +1 @@
+60806040523480156200001157600080fd5b5060405162001add38038062001add833981810160405260408110156200003757600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013c57600080fd5b505afa15801562000151573d6000803e3d6000fd5b505050506040513d60208110156200016857600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022357600080fd5b505afa15801562000238573d6000803e3d6000fd5b505050506040513d60208110156200024f57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200030457600080fd5b505af115801562000319573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a3b22fc46000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620003be57600080fd5b505af1158015620003d3573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015620004c357600080fd5b505af1158015620004d8573d6000803e3d6000fd5b505050506040513d6020811015620004ef57600080fd5b8101908080519060200190929190505050505050506115c980620005146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063c11645bc11610066578063c11645bc146101a6578063d7f7098f146101f0578063eb0dff6614610248578063ef693bed1461028c578063f4b9fa75146102da57610093565b8063047fc9aa146100985780633b4da69f146100b65780634ba2363a1461010457806388787f2b1461014e575b600080fd5b6100a0610324565b6040518082815260200191505060405180910390f35b610102600480360360408110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061032a565b005b61010c610888565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101906004803603602081101561016457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ad565b6040518082815260200191505060405180910390f35b6101ae6108c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102326004803603602081101561020657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108eb565b6040518082815260200191505060405180910390f35b61028a6004803603602081101561025e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b35565b005b6102d8600480360360408110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f77565b005b6102e2611480565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039357600080fd5b505afa1580156103a7573d6000803e3d6000fd5b505050506040513d60208110156103bd57600080fd5b8101908080519060200190929190505050421161047b576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b815260040160206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d602081101561046557600080fd5b8101908080519060200190929190505050610520565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b505050506040513d602081101561050e57600080fd5b81019080805190602001909291905050505b9050600061052e83836114a6565b9050610579600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826114cf565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105c8600354826114cf565b600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156106ab57600080fd5b505af11580156106bf573d6000803e3d6000fd5b505050506040513d60208110156106d557600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b4da69f30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663049878f3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca95846040518082815260200191505060405180910390a250505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561095557600080fd5b505afa158015610969573d6000803e3d6000fd5b505050506040513d602081101561097f57600080fd5b81019080805190602001909291905050504211610a3d576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b815260040160206040518083038186803b1580156109fd57600080fd5b505afa158015610a11573d6000803e3d6000fd5b505050506040513d6020811015610a2757600080fd5b8101908080519060200190929190505050610ae2565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610aa657600080fd5b505af1158015610aba573d6000803e3d6000fd5b505050506040513d6020811015610ad057600080fd5b81019080805190602001909291905050505b9050610b2d81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e9565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9e57600080fd5b505afa158015610bb2573d6000803e3d6000fd5b505050506040513d6020811015610bc857600080fd5b81019080805190602001909291905050504211610c86576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d6020811015610c7057600080fd5b8101908080519060200190929190505050610d2b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b505050506040513d6020811015610d1957600080fd5b81019080805190602001909291905050505b90506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc260035482611512565b6003819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505050506000610e6083836114e9565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef693bed85836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b299631826040518082815260200191505060405180910390a250505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d602081101561100a57600080fd5b810190808051906020019092919050505042116110c8576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b815260040160206040518083038186803b15801561108857600080fd5b505afa15801561109c573d6000803e3d6000fd5b505050506040513d60208110156110b257600080fd5b810190808051906020019092919050505061116d565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b505050506040513d602081101561115b57600080fd5b81019080805190602001909291905050505b9050600061117b838361152c565b905080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e73756666696369656e742d62616c616e636500000000000000000000000081525060200191505060405180910390fd5b61127b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611512565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ca60035482611512565b6003819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561134457600080fd5b505af1158015611358573d6000803e3d6000fd5b50505050600061136883836114e9565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef693bed86836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b299631826040518082815260200191505060405180910390a25050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816114bf846b033b2e3c9fd0803ce8000000611568565b816114c657fe5b04905092915050565b60008282840191508110156114e357600080fd5b92915050565b60006b033b2e3c9fd0803ce80000006115028484611568565b8161150957fe5b04905092915050565b600082828403915081111561152657600080fd5b92915050565b600081611558611548856b033b2e3c9fd0803ce8000000611568565b611553856001611512565b6114cf565b8161155f57fe5b04905092915050565b600080821480611585575082828385029250828161158257fe5b04145b61158e57600080fd5b9291505056fea265627a7a7231582029c8250bc4d7e96ab90d13e68fe2e94574c70e36f11c1127358277c7e4c7921164736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/DssCdpManager.abi b/chief_keeper/makerdao_utils/abi/DssCdpManager.abi
new file mode 100644
index 0000000..ee7ead5
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DssCdpManager.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"own","type":"address"},{"indexed":true,"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"NewCdp","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"cdpAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"cdpCan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cdpi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ilks","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"last","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"list","outputs":[{"internalType":"uint256","name":"prev","type":"uint256"},{"internalType":"uint256","name":"next","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"}],"name":"open","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owns","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"quit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpDst","type":"uint256"}],"name":"shift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"urnAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"urnCan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"urns","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/DssCdpManager.bin b/chief_keeper/makerdao_utils/abi/DssCdpManager.bin
new file mode 100644
index 0000000..e7d84c6
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DssCdpManager.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051613bf1380380613bf18339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613b5d806100946000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806380c9419e116100b8578063b3d178f21161007c578063b3d178f2146106f4578063b68f400414610712578063e50322a214610760578063f9f30db614610798578063fc73d771146107f0578063fcafcc681461084857610142565b806380c9419e146105155780638161b1201461055e5780639a816f7d146105cc5780639bb8f83814610624578063b2b192e61461067c57610142565b80632c2cb9fd1161010a5780632c2cb9fd1461031557806336569e771461035757806345e6bdcd146103a15780635aebb460146103e35780636090dec5146104655780637e348b7d146104c757610142565b806305d85eda146101475780630b63fb621461019f57806318af4d60146101f75780631b0dbf72146102595780632726b073146102a7575b600080fd5b6101896004803603602081101561015d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610896565b6040518082815260200191505060405180910390f35b6101f5600480360360608110156101b557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ae565b005b6102576004803603608081101561020d57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b19565b005b6102a56004803603604081101561026f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e22565b005b6102d3600480360360208110156102bd57600080fd5b81019080803590602001909291905050506113b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103416004803603602081101561032b57600080fd5b81019080803590602001909291905050506113ea565b6040518082815260200191505060405180910390f35b61035f611402565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e1600480360360608110156103b757600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611427565b005b61044f600480360360608110156103f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611784565b6040518082815260200191505060405180910390f35b6104b16004803603604081101561047b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b6565b6040518082815260200191505060405180910390f35b610513600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cac565b005b6105416004803603602081101561052b57600080fd5b810190808035906020019092919050505061220e565b604051808381526020018281526020019250505060405180910390f35b61058a6004803603602081101561057457600080fd5b8101908080359060200190929190505050612232565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060e600480360360208110156105e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612265565b6040518082815260200191505060405180910390f35b61067a6004803603606081101561063a57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061227d565b005b6106de6004803603604081101561069257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612598565b6040518082815260200191505060405180910390f35b6106fc6125bd565b6040518082815260200191505060405180910390f35b61075e6004803603604081101561072857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125c3565b005b6107966004803603604081101561077657600080fd5b810190808035906020019092919080359060200190929190505050612648565b005b6107ee600480360360608110156107ae57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d22565b005b6108326004803603602081101561080657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613022565b6040518082815260200191505060405180910390f35b6108946004803603604081101561085e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061303a565b005b60086020528060005260406000206000915090505481565b826004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109dc57506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b81600960006004600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b826004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c4757506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e866002600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015610dd057600080fd5b505af1158015610de4573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050505050565b816004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f5057506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b818073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061107957506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6110eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75726e2d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c6005600089815260200190815260200160002054600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156111d957600080fd5b505afa1580156111ed573d6000803e3d6000fd5b505050506040513d604081101561120357600080fd5b810190808051906020019092919080519060200190929190505050915091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663870c616d6005600089815260200190815260200160002054600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886112b1876139ab565b6112ba876139ab565b6040518663ffffffff1660e01b8152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b15801561136457600080fd5b505af1158015611378573d6000803e3d6000fd5b50505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b826004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061155557506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b60006002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376088703600560008881526020019081526020016000205483848589896040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561173257600080fd5b505af1158015611746573d6000803e3d6000fd5b5050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600960205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f7573722d616464726573732d300000000000000000000000000000000000000081525060200191505060405180910390fd5b61186760015460016139c3565b6001819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161189b906139f7565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156118ed573d6000803e3d6000fd5b5060026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160046000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006001548152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a3e57600154600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b3e57600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060015481526020019081526020016000206000018190555060015460036000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020600101819055505b600154600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bce600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016139c3565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6be0bc178658a382ff4f91c8c68b542aa6b71685b8fe427966b87745c3ea7a260405160405180910390a460015490505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45092915050565b818073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d6357506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75726e2d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b816004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611f0357506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b611f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c6005600088815260200190815260200160002054886040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561203057600080fd5b505afa158015612044573d6000803e3d6000fd5b505050506040513d604081101561205a57600080fd5b810190808051906020019092919080519060200190929190505050915091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663870c616d600560008881526020019081526020016000205488600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612108876139ab565b612111876139ab565b6040518663ffffffff1660e01b8152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b50505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60036020528060005260406000206000915090508060000154908060010154905082565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915090505481565b826004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806123ab57506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b61241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e60056000878152602001908152602001600020546002600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561254757600080fd5b505af115801561255b573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600a602052816000526040600020602052806000526040600020600091509150505481565b60015481565b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b816004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061277657506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6127e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b816004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061291657506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6005600084815260200190815260200160002054600560008681526020019081526020016000205414612a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f6e2d6d61746368696e672d6364707300000000000000000000000000000081525060200191505060405180910390fd5b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c6005600089815260200190815260200160002054600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015612b1157600080fd5b505afa158015612b25573d6000803e3d6000fd5b505050506040513d6040811015612b3b57600080fd5b810190808051906020019092919080519060200190929190505050915091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663870c616d6005600089815260200190815260200160002054600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612c1c876139ab565b612c25876139ab565b6040518663ffffffff1660e01b8152600401808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015612ccf57600080fd5b505af1158015612ce3573d6000803e3d6000fd5b50505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b826004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e5057506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b612ec2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b6002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612fd157600080fd5b505af1158015612fe5573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60066020528060005260406000206000915090505481565b816004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061316857506001600960006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6131da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6364702d6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561327d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6473742d616464726573732d300000000000000000000000000000000000000081525060200191505060405180910390fd5b6004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6473742d616c72656164792d6f776e657200000000000000000000000000000081525060200191505060405180910390fd5b60006003600085815260200190815260200160002060000154146133b85760036000848152602001908152602001600020600101546003600060036000878152602001908152602001600020600001548152602001908152602001600020600101819055505b60006003600085815260200190815260200160002060010154146134225760036000848152602001908152602001600020600001546003600060036000878152602001908152602001600020600101548152602001908152602001600020600001819055506134b0565b6003600084815260200190815260200160002060000154600760006004600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600660006004600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135b8576003600084815260200190815260200160002060010154600660006004600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613635600860006004600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016139dd565b600860006004600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600085815260200190815260200160002060000181905550600060036000858152602001908152602001600020600101819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613815578260036000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020600101819055505b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156138a25782600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613930600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016139c3565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600081905060008112156139be57600080fd5b919050565b60008282840191508110156139d757600080fd5b92915050565b60008282840391508111156139f157600080fd5b92915050565b61012480613a058339019056fe6080604052348015600f57600080fd5b5060405161012438038061012483398181016040526020811015603157600080fd5b81019080805190602001909291905050508073ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801560c057600080fd5b505af115801560d3573d6000803e3d6000fd5b5050505050603e806100e66000396000f3fe6080604052600080fdfea265627a7a7231582067a742420eb66b03e4cad4003e5b631b7d931bd4df27b38fce6be50e01d88b5a64736f6c634300050c0032a265627a7a72315820271d4b4d5a9e210280cb3bfdea2bdab87f16cacfc1e5060521d6d3636b4a80a164736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.abi b/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.abi
new file mode 100644
index 0000000..427a6d3
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"daiJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"address","name":"pot","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"address","name":"pot","type":"address"}],"name":"exitAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"address","name":"pot","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.bin b/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.bin
new file mode 100644
index 0000000..1d33e27
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/DssProxyActionsDsr.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506112e4806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806371006c09146100515780639f6c3dbd146100bf578063c56167c61461012d578063c77843b31461019b575b600080fd5b6100bd6004803603606081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101ff565b005b61012b600480360360608110156100d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610746565b005b6101996004803603606081101561014357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7b565b005b6101fd600480360360408110156101b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d95565b005b60008373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561024957600080fd5b505af115801561025d573d6000803e3d6000fd5b505050506040513d602081101561027357600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156102d057600080fd5b505af11580156102e4573d6000803e3d6000fd5b505050506040513d60208110156102fa57600080fd5b81019080805190602001909291905050509050600081610326856b033b2e3c9fd0803ce800000061121a565b8161032d57fe5b0490508473ffffffffffffffffffffffffffffffffffffffff16637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561038357600080fd5b505af1158015610397573d6000803e3d6000fd5b5050505060008673ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b505050506040513d602081101561040f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561049c57600080fd5b505afa1580156104b0573d6000803e3d6000fd5b505050506040513d60208110156104c657600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff16634538c4eb308a6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561058c57600080fd5b505afa1580156105a0573d6000803e3d6000fd5b505050506040513d60208110156105b657600080fd5b81019080805190602001909291905050501415610665578373ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561064c57600080fd5b505af1158015610660573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff1663ef693bed33610698886b033b2e3c9fd0803ce800000061121a565b8410156106ba576b033b2e3c9fd0803ce800000084816106b457fe5b046106bc565b875b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050505050565b60008373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050506040513d60208110156107ba57600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561081757600080fd5b505af115801561082b573d6000803e3d6000fd5b505050506040513d602081101561084157600080fd5b8101908080519060200190929190505050905061085f853085610a7b565b60008273ffffffffffffffffffffffffffffffffffffffff16634538c4eb30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d602081101561093c57600080fd5b810190808051906020019092919050505014156109eb578173ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff1663049878f382610a1e866b033b2e3c9fd0803ce800000061121a565b81610a2557fe5b046040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ac357600080fd5b505af1158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bb857600080fd5b505af1158015610bcc573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610d7857600080fd5b505af1158015610d8c573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506040513d6020811015610e0957600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050506040513d6020811015610e9057600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16630bebac86306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d6020811015610f4c57600080fd5b810190808051906020019092919050505090508373ffffffffffffffffffffffffffffffffffffffff16637f8661a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505060008373ffffffffffffffffffffffffffffffffffffffff16634538c4eb30886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561107d57600080fd5b505afa158015611091573d6000803e3d6000fd5b505050506040513d60208110156110a757600080fd5b81019080805190602001909291905050501415611156578273ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561113d57600080fd5b505af1158015611151573d6000803e3d6000fd5b505050505b8473ffffffffffffffffffffffffffffffffffffffff1663ef693bed336b033b2e3c9fd0803ce800000061118a868661121a565b8161119157fe5b046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156111fb57600080fd5b505af115801561120f573d6000803e3d6000fd5b505050505050505050565b600080821480611237575082828385029250828161123457fe5b04145b6112a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d756c2d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a72315820c013e50fcd3a5db55310fa7af3b5c20c7eb2c50f1b5a90789e9c7f6cc2c8a12a64736f6c634300050c0032
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ERC20Token.abi b/chief_keeper/makerdao_utils/abi/ERC20Token.abi
new file mode 100644
index 0000000..7a32407
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ERC20Token.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ESM.abi b/chief_keeper/makerdao_utils/abi/ESM.abi
new file mode 100644
index 0000000..9466a3b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ESM.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"gem_","type":"address"},{"internalType":"address","name":"end_","type":"address"},{"internalType":"address","name":"proxy_","type":"address"},{"internalType":"uint256","name":"min_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Fire","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Join","type":"event"},{"inputs":[],"name":"Sum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"end","outputs":[{"internalType":"contract EndLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revokesGovernanceAccess","outputs":[{"internalType":"bool","name":"ret","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/ESM.bin b/chief_keeper/makerdao_utils/abi/ESM.bin
new file mode 100644
index 0000000..41ec8ed
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ESM.bin
@@ -0,0 +1 @@
+61010060405234801561001157600080fd5b50604051610e2c380380610e2c8339818101604052608081101561003457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508060e081815250505050505060805160601c60a05160601c60c05160601c60e051610c9e61018e600039806107905280610aa85280610c2c5250806105fe528061084052806109385280610b5c5280610be4525080610288528061087c52806109be5280610c085250806104385280610642528061067e5280610a6c5250610c9e6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637bd2bea7116100715780637bd2bea71461012e5780637e459c60146101625780639c52a7f1146101ba578063ec556889146101fe578063efbe1c1c14610232578063f889794514610266576100a9565b8063049878f3146100ae57806314c7bbd5146100dc57806337be827d146100fc57806344df8e701461011a578063457094cc14610124575b600080fd5b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610284565b005b6100e46105e3565b60405180821515815260200191505060405180910390f35b61010461063a565b6040518082815260200191505060405180910390f35b610122610640565b005b61012c61078e565b005b610136610a6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a46004803603602081101561017857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a8e565b6040518082815260200191505060405180910390f35b6101fc600480360360208110156101d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aa6565b005b610206610be2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023a610c06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61026e610c2a565b6040518082815260200191505060405180910390f35b60017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663957aa58c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d602081101561031657600080fd5b81019080805190602001909291905050501461039a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45534d2f73797374656d2d616c72656164792d73687574646f776e000000000081525060200191505060405180910390fd5b6103e26000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610c4e565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061043060015482610c4e565b6001819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156104e557600080fd5b505af11580156104f9573d6000803e3d6000fd5b505050506040513d602081101561050f57600080fd5b8101908080519060200190929190505050610592576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f45534d2f7472616e736665722d6661696c65640000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca95826040518082815260200191505060405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161415905090565b60015481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c687f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561070357600080fd5b505afa158015610717573d6000803e3d6000fd5b505050506040513d602081101561072d57600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001541015610826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f45534d2f6d696e2d6e6f742d726561636865640000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109bc577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16639c52a7f17f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156109a357600080fd5b505af11580156109b7573d6000803e3d6000fd5b505050505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b505050507f14c539ef1ff6ef515371448cd46419fd75ebb8698b7f6644c4f66b03b032708560405160405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006020528060005260406000206000915090505481565b7f00000000000000000000000000000000000000000000000000000000000000006001541015610b3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f45534d2f6d696e2d6e6f742d726561636865640000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16639c52a7f17f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000818301905082811015610c6257600080fd5b9291505056fea2646970667358221220d4b2e76fae4fc13e055cf4ce19c9ffbf943fd9ab30dadc6d71e41a0c352208c764736f6c634300060c0033
diff --git a/chief_keeper/makerdao_utils/abi/End.abi b/chief_keeper/makerdao_utils/abi/End.abi
new file mode 100644
index 0000000..caf5fcc
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/End.abi
@@ -0,0 +1 @@
+[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Cage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"Cage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Cash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"Flow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"ink","type":"uint256"}],"name":"Free","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Pack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"address","name":"urn","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"art","type":"uint256"}],"name":"Skim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"art","type":"uint256"}],"name":"Skip","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"art","type":"uint256"}],"name":"Snip","type":"event"},{"anonymous":false,"inputs":[],"name":"Thaw","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"Art","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"cage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"cash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cat","outputs":[{"internalType":"contract CatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dog","outputs":[{"internalType":"contract DogLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"fix","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"flow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"free","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"gap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"out","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"pack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pot","outputs":[{"internalType":"contract PotLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"urn","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"snip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spot","outputs":[{"internalType":"contract SpotLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"tag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thaw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vow","outputs":[{"internalType":"contract VowLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"when","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/End.bin b/chief_keeper/makerdao_utils/abi/End.bin
new file mode 100644
index 0000000..8894a41
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/End.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016007819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a261413f806100af6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806389ea45d31161010f578063d4e8be83116100a2578063e488181311610071578063e488181314610794578063e6ee62aa146107c8578063ee6447b51461080a578063fe8507c61461084c576101e5565b8063d4e8be83146106b8578063e1340a3d14610706578063e2702fdc14610748578063e2b0caef14610776576101e5565b8063bf353dbb116100de578063bf353dbb1461059c578063c3b3ad7f146105f4578063c83062c614610628578063c939ebfc14610656576101e5565b806389ea45d3146104945780639255f809146104e2578063957aa58c1461053a5780639c52a7f114610558576101e5565b80635920375c1161018757806365fae35e1161015657806365fae35e146103e457806369245009146104285780636ea42555146104325780636f265b9314610460576101e5565b80635920375c14610346578063626cb3c51461035057806363fad85e1461038457806364bd7013146103c6576101e5565b806338c6de40116101c357806338c6de40146102745780634a10eaa6146102ac5780634ba2363a146102da578063503ecf061461030e576101e5565b80630dca59c1146101ea57806329ae81141461020857806336569e7714610240575b600080fd5b6101f2610884565b6040518082815260200191505060405180910390f35b61023e6004803603604081101561021e57600080fd5b81019080803590602001909291908035906020019092919050505061088a565b005b610248610a94565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102aa6004803603604081101561028a57600080fd5b810190808035906020019092919080359060200190929190505050610aba565b005b6102d8600480360360208110156102c257600080fd5b810190808035906020019092919050505061118c565b005b6102e2611431565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103446004803603604081101561032457600080fd5b810190808035906020019092919080359060200190929190505050611457565b005b61034e611cc7565b005b61035861206e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b06004803603602081101561039a57600080fd5b8101908080359060200190929190505050612094565b6040518082815260200191505060405180910390f35b6103ce6120ac565b6040518082815260200191505060405180910390f35b610426600480360360208110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b2565b005b6104306121f0565b005b61045e6004803603602081101561044857600080fd5b8101908080359060200190929190505050612665565b005b6104686128bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e0600480360360408110156104aa57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128e1565b005b610524600480360360208110156104f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ddf565b6040518082815260200191505060405180910390f35b610542612df7565b6040518082815260200191505060405180910390f35b61059a6004803603602081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfd565b005b6105de600480360360208110156105b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f3b565b6040518082815260200191505060405180910390f35b6105fc612f53565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106546004803603602081101561063e57600080fd5b8101908080359060200190929190505050612f79565b005b6106a26004803603604081101561066c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061334c565b6040518082815260200191505060405180910390f35b610704600480360360408110156106ce57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613371565b005b6107326004803603602081101561071c57600080fd5b81019080803590602001909291905050506137f6565b6040518082815260200191505060405180910390f35b6107746004803603602081101561075e57600080fd5b810190808035906020019092919050505061380e565b005b61077e613c3f565b6040518082815260200191505060405180910390f35b61079c613c45565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107f4600480360360208110156107de57600080fd5b8101908080359060200190929190505050613c6b565b6040518082815260200191505060405180910390f35b6108366004803603602081101561082057600080fd5b8101908080359060200190929190505050613c83565b6040518082815260200191505060405180910390f35b6108826004803603604081101561086257600080fd5b810190808035906020019092919080359060200190929190505050613c9b565b005b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461093e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600754146109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f77616974000000000000000000000000000000000000000000000000000000008214156109ea5780600981905550610a58565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c7826040518082815260200191505060405180910390a25050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b6000848152602001908152602001600020541415610b44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050608060405180830381600087803b158015610bbb57600080fd5b505af1158015610bcf573d6000803e3d6000fd5b505050506040513d6080811015610be557600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b505050506040513d60a0811015610cbf57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060008060008473ffffffffffffffffffffffffffffffffffffffff1663b5f522f7886040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b158015610d5457600080fd5b505afa158015610d68573d6000803e3d6000fd5b505050506040513d60c0811015610d7e57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505093509350935050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166326e027f1886040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b505050506000848481610f4d57fe5b049050610f6d600d60008b81526020019081526020016000205482614018565b600d60008b81526020019081526020016000208190555060008312158015610f96575060008112155b611008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408a8430600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561110957600080fd5b505af115801561111d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16888a7ffc67e20caaffa015d51f696df8ea5c273ba269c69bdc2ec31c1334d01286eaa487878660405180848152602001838152602001828152602001935050505060405180910390a4505050505050505050565b6000600a541415611205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e6000838152602001908152602001600020541461128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f6669782d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561130557600080fd5b505af1158015611319573d6000803e3d6000fd5b505050506040513d60a081101561132f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060006113a9611390600d60008681526020019081526020016000205484614032565b600b600086815260200190815260200160002054614032565b90506113e86113e06113ce83600c60008881526020019081526020016000205461405b565b6b033b2e3c9fd0803ce8000000614075565b600a546140a1565b600e600085815260200190815260200160002081905550827f8d1d5ae676a6db1f6f14414f8a6c78941bbfb700fe3f3be6d3245f26c2f2d55060405160405180910390a2505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008481526020019081526020016000205414156114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505050506040513d606081101561158257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561162757600080fd5b505af115801561163b573d6000803e3d6000fd5b505050506040513d60a081101561165157600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000806000808573ffffffffffffffffffffffffffffffffffffffff16634423c5f1896040518263ffffffff1660e01b8152600401808281526020019150506101006040518083038186803b1580156116e857600080fd5b505afa1580156116fc573d6000803e3d6000fd5b505050506040513d61010081101561171357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050975050965050505093509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561186b57600080fd5b505af115801561187f573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166326e027f1896040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a6457600080fd5b505af1158015611a78573d6000803e3d6000fd5b505050506000858281611a8757fe5b049050611aa7600d60008c81526020019081526020016000205482614018565b600d60008c81526020019081526020016000208190555060008412158015611ad0575060008112155b611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408b8530600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611c4357600080fd5b505af1158015611c57573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16898b7fbfa2310a8897203a59922debd0db38279196d8de5050df84608e2bb3e7790f6985888660405180848152602001838152602001828152602001935050505060405180910390a450505050505050505050565b600060075414611d3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a5414611db7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e642f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e6457600080fd5b505afa158015611e78573d6000803e3d6000fd5b505050506040513d6020811015611e8e57600080fd5b810190808051906020019092919050505014611f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f456e642f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b611f20600854600954614018565b421015611f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f456e642f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611fff57600080fd5b505af1158015612013573d6000803e3d6000fd5b505050506040513d602081101561202957600080fd5b8101908080519060200190929190505050600a819055507f4df15159e645ba7d02cadde0bc937abef5ad0134623c00de50a31750b85978b960405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915090505481565b60095481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612166576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146122a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016007541461231c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060078190555042600881905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561239557600080fd5b505af11580156123a9573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561259d57600080fd5b505af11580156125b1573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b505050507f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda60405160405180910390a1565b6000600a5414156126de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612756856b033b2e3c9fd0803ce8000000614075565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156127c657600080fd5b505af11580156127da573d6000803e3d6000fd5b50505050612827600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614018565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f47a981d8cbc0f6df64c9be4ce0a423071a088bd46c549bbd11a4d566e031fe0c826040518082815260200191505060405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b600084815260200190815260200160002054141561296b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b1580156129e257600080fd5b505af11580156129f6573d6000803e3d6000fd5b505050506040513d60a0811015612a0c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050915050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c86866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b158015612ae057600080fd5b505af1158015612af4573d6000803e3d6000fd5b505050506040513d6040811015612b0a57600080fd5b810190808051906020019092919080519060200190929190505050915091506000612b51612b388386614032565b600b600089815260200190815260200160002054614032565b90506000612b5f84836140ca565b9050612b87600c600089815260200190815260200160002054612b82848461405b565b614018565b600c6000898152602001908152602001600020819055507f80000000000000000000000000000000000000000000000000000000000000008111158015612bee57507f80000000000000000000000000000000000000000000000000000000000000008311155b612c60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40888830600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003896000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff16877fa05b7b56166c25efbac063da905f9ea6aa1dc5101f95b43c7a838aace979ab598386604051808381526020018281526020019250505060405180910390a350505050505050565b600f6020528060005260406000206000915090505481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612eb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60006020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060075414612ff1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c84336040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561308657600080fd5b505af115801561309a573d6000803e3d6000fd5b505050506040513d60408110156130b057600080fd5b8101908080519060200190929190805190602001909291905050509150915060008114613145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f456e642f6172742d6e6f742d7a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b7f80000000000000000000000000000000000000000000000000000000000000008211156131db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40843333600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000360006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b1580156132e057600080fd5b505af11580156132f4573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16837ff26f2b994a5e16f0960958e62541681f9e3e84d4caac2e487d25e0c75243f0d8846040518082815260200191505060405180910390a3505050565b6010602052816000526040600020602052806000526040600020600091509150505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414613425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016007541461349d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f766174000000000000000000000000000000000000000000000000000000000082141561350b5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506137a4565b7f63617400000000000000000000000000000000000000000000000000000000008214156135795780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506137a3565b7f646f6700000000000000000000000000000000000000000000000000000000008214156135e75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506137a2565b7f766f7700000000000000000000000000000000000000000000000000000000008214156136555780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506137a1565b7f706f7400000000000000000000000000000000000000000000000000000000008214156136c35780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506137a0565b7f73706f74000000000000000000000000000000000000000000000000000000008214156137315780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061379f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600d6020528060005260406000206000915090505481565b600060075414613886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b6000838152602001908152602001600020541461390f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f7461672d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36826040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b505050506040513d60a08110156139ae57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250909150905050600d600083815260200190815260200160002060008291905055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b158015613a8057600080fd5b505afa158015613a94573d6000803e3d6000fd5b505050506040513d6040811015613aaa57600080fd5b810190808051906020019092919080519060200190929190505050509050613bf7600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b3357600080fd5b505afa158015613b47573d6000803e3d6000fd5b505050506040513d6020811015613b5d57600080fd5b81019080805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b158015613bb457600080fd5b505afa158015613bc8573d6000803e3d6000fd5b505050506040513d6020811015613bde57600080fd5b810190808051906020019092919050505060001c6140e4565b600b600084815260200190815260200160002081905550817f4a9efa0a0e3f548761a6924fe06ac5cb94ecdbc08b10d855bbcc04e37c4910db60405160405180910390a25050565b60085481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915090505481565b600b6020528060005260406000206000915090505481565b6000600e6000848152602001908152602001600020541415613d25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f6669782d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e833033613d8386600e60008a815260200190815260200160002054614032565b6040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015613dfa57600080fd5b505af1158015613e0e573d6000803e3d6000fd5b50505050613e6c6010600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614018565b6010600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115613fc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f456e642f696e73756666696369656e742d6261672d62616c616e63650000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16827f888c7c01b06fd8004523e2bc9a274be1feaa9f03579ae5f568061dac078793c9836040518082815260200191505060405180910390a35050565b600081830190508281101561402c57600080fd5b92915050565b60006b033b2e3c9fd0803ce800000061404b8484614075565b8161405257fe5b04905092915050565b600082828403915081111561406f57600080fd5b92915050565b600080821480614092575082828385029250828161408f57fe5b04145b61409b57600080fd5b92915050565b6000816140ba846b033b2e3c9fd0803ce8000000614075565b816140c157fe5b04905092915050565b6000818311156140da57816140dc565b825b905092915050565b6000816140f984670de0b6b3a7640000614075565b8161410057fe5b0490509291505056fea2646970667358221220fe33bbde0a66cfac6acc0048e900fd622e790dfbfb8c799ba3fbc690e3efe85464736f6c634300060c0033
diff --git a/chief_keeper/makerdao_utils/abi/EtherDelta.abi b/chief_keeper/makerdao_utils/abi/EtherDelta.abi
new file mode 100644
index 0000000..1d45b36
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/EtherDelta.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"order","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"cancelOrder","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"amountFilled","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"feeMake_","type":"uint256"}],"name":"changeFeeMake","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"feeMake","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"feeRebate_","type":"uint256"}],"name":"changeFeeRebate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"feeAccount","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"},{"name":"sender","type":"address"}],"name":"testTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"feeAccount_","type":"address"}],"name":"changeFeeAccount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"feeRebate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"feeTake_","type":"uint256"}],"name":"changeFeeTake","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"admin_","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orders","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"feeTake","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"accountLevelsAddr_","type":"address"}],"name":"changeAccountLevelsAddr","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"accountLevelsAddr","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"availableVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"admin_","type":"address"},{"name":"feeAccount_","type":"address"},{"name":"accountLevelsAddr_","type":"address"},{"name":"feeMake_","type":"uint256"},{"name":"feeTake_","type":"uint256"},{"name":"feeRebate_","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"user","type":"address"}],"name":"Order","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"r","type":"bytes32"},{"indexed":false,"name":"s","type":"bytes32"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"get","type":"address"},{"indexed":false,"name":"give","type":"address"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/EtherDelta.bin b/chief_keeper/makerdao_utils/abi/EtherDelta.bin
new file mode 100644
index 0000000..83da159
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/EtherDelta.bin
@@ -0,0 +1 @@
+6060604052341561000c57fe5b60405160c080611a7983398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b60008054600160a060020a03808916600160a060020a0319928316179092556001805488841690831617905560028054928716929091169190911790556003839055600482905560058190555b5050505050505b6119d5806100a46000396000f300606060405236156101385763ffffffff60e060020a6000350416630a19b14a811461014d5780630b9276661461019957806319774d43146101ca578063278b8c0e146101fb5780632e1a7d4d14610239578063338b5dea1461024e57806346be96c31461026f578063508493bc146102c757806354d03b5c146102fb57806357786394146103105780635e1d7ae41461033257806365e17c9d146103475780636c86888b1461037357806371ffcb16146103dc578063731c2f81146103fa5780638823a9c01461041c5780638f283970146104315780639e281a981461044f578063bb5f462914610470578063c281309e146104a3578063d0e30db0146104c5578063e8f6bc2e146104cf578063f3412942146104ed578063f7888aec14610519578063f851a4401461054d578063fb6e155f14610579575b341561014057fe5b61014b5b610000565b565b005b341561015557fe5b61014b600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e435166101043561012435610144356105d1565b005b34156101a157fe5b61014b600160a060020a03600435811690602435906044351660643560843560a435610896565b005b34156101d257fe5b6101e9600160a060020a03600435166024356109a7565b60408051918252519081900360200190f35b341561020357fe5b61014b600160a060020a03600435811690602435906044351660643560843560a43560ff60c4351660e435610104356109c4565b005b341561024157fe5b61014b600435610bd4565b005b341561025657fe5b61014b600160a060020a0360043516602435610cf2565b005b341561027757fe5b6101e9600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e435166101043561012435610e46565b60408051918252519081900360200190f35b34156102cf57fe5b6101e9600160a060020a0360043581169060243516610f33565b60408051918252519081900360200190f35b341561030357fe5b61014b600435610f50565b005b341561031857fe5b6101e9610f83565b60408051918252519081900360200190f35b341561033a57fe5b61014b600435610f89565b005b341561034f57fe5b610357610fc8565b60408051600160a060020a039092168252519081900360200190f35b341561037b57fe5b6103c8600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43581169060ff60e43516906101043590610124359061014435906101643516610fd7565b604080519115158252519081900360200190f35b34156103e457fe5b61014b600160a060020a0360043516611042565b005b341561040257fe5b6101e961107c565b60408051918252519081900360200190f35b341561042457fe5b61014b600435611082565b005b341561043957fe5b61014b600160a060020a03600435166110c1565b005b341561045757fe5b61014b600160a060020a03600435166024356110fb565b005b341561047857fe5b6103c8600160a060020a0360043516602435611299565b604080519115158252519081900360200190f35b34156104ab57fe5b6101e96112b9565b60408051918252519081900360200190f35b61014b6112bf565b005b34156104d757fe5b61014b600160a060020a0360043516611361565b005b34156104f557fe5b61035761139b565b60408051600160a060020a039092168252519081900360200190f35b341561052157fe5b6101e9600160a060020a03600435811690602435166113aa565b60408051918252519081900360200190f35b341561055557fe5b6103576113d7565b60408051600160a060020a039092168252519081900360200190f35b341561058157fe5b6101e9600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e4351661010435610124356113e6565b60408051918252519081900360200190f35b60006002308d8d8d8d8d8d6000604051602001526040518088600160a060020a0316600160a060020a0316606060020a02815260140187600160a060020a0316600160a060020a0316606060020a02815260140186815260200185600160a060020a0316600160a060020a0316606060020a0281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f1151561067e57fe5b50506040805151600160a060020a0388166000908152600760209081528382208383529052919091205490915060ff16806107625750604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052815190819003603c018120600082815260208381018552928401819052835191825260ff891682840152818401889052606082018790529251600160a060020a038a16936001936080808501949193601f198101939281900390910191866161da5a03f1151561074e57fe5b505060206040510351600160a060020a0316145b801561076e5750874311155b80156107a85750600160a060020a03861660009081526008602090815260408083208484529091529020548b906107a5908461162d565b11155b15156107b357610000565b6107c18c8c8c8c8a87611655565b600160a060020a03861660009081526008602090815260408083208484529091529020546107ef908361162d565b600160a060020a03871660009081526008602090815260408083208584529091529020557f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e8d830281151561084457fe5b60408051600160a060020a039687168152602081019590955292851684840152046060830152828a166080830152339290921660a082015290519081900360c00190a15b505050505050505050505050565b60408051600060209182018190528251606060020a600160a060020a0330811682028352808c1682026014840152602883018b90528916026048820152605c8101879052607c8101869052609c81018590529251909260029260bc808301939192829003018186866161da5a03f1151561090c57fe5b5050604080518051600160a060020a03338116600081815260076020908152868220858352815290869020805460ff191660011790558c8316855284018b905290891683850152606083018890526080830187905260a0830186905260c083015291519192507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e85919081900360e00190a15b50505050505050565b600860209081526000928352604080842090915290825290205481565b60408051600060209182018190528251606060020a600160a060020a0330811682028352808f1682026014840152602883018e90528c16026048820152605c81018a9052607c8101899052609c81018890529251909260029260bc808301939192829003018186866161da5a03f11515610a3a57fe5b50506040805151600160a060020a0333166000908152600760209081528382208383529052919091205490915060ff1680610b1e5750604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052815190819003603c018120600082815260208381018552928401819052835191825260ff881682840152818401879052606082018690529251600160a060020a033316936001936080808501949193601f198101939281900390910191866161da5a03f11515610b0a57fe5b505060206040510351600160a060020a0316145b1515610b2957610000565b600160a060020a0333811660008181526008602090815260408083208684528252918290208d905581518e851681529081018d9052928b1683820152606083018a90526080830189905260a0830188905260c083019190915260ff861660e083015261010082018590526101208201849052517f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b0918190036101400190a15b50505050505050505050565b33600160a060020a0316600090815260008051602061198a833981519152602052604090205481901015610c0757610000565b33600160a060020a0316600090815260008051602061198a8339815191526020526040902054610c379082611931565b33600160a060020a0316600081815260008051602061198a8339815191526020526040808220939093559151909183919081818185876185025a03f1925050501515610c8257610000565b600160a060020a033316600081815260008051602061198a8339815191526020908152604080832054815193845291830193909352818301849052606082015290517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a15b50565b600160a060020a0382161515610d0757610000565b604080516000602091820181905282517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301523081166024830152604482018690529351938616936323b872dd9360648084019491938390030190829087803b1515610d7f57fe5b60325a03f11515610d8c57fe5b50506040515115159050610d9f57610000565b600160a060020a0380831660009081526006602090815260408083203390941683529290522054610dd0908261162d565b600160a060020a038381166000818152600660209081526040808320339095168084529482529182902085905581519283528201929092528082018490526060810192909252517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a15b5050565b600060006002308d8d8d8d8d8d6000604051602001526040518088600160a060020a0316600160a060020a0316606060020a02815260140187600160a060020a0316600160a060020a0316606060020a02815260140186815260200185600160a060020a0316600160a060020a0316606060020a0281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f11515610ef557fe5b50506040805151600160a060020a03881660009081526008602090815283822083835290529190912054925090505b509a9950505050505050505050565b600660209081526000928352604080842090915290825290205481565b60005433600160a060020a03908116911614610f6b57610000565b600354811115610f7a57610000565b60038190555b50565b60035481565b60005433600160a060020a03908116911614610fa457610000565b600554811080610fb5575060045481115b15610fbf57610000565b60058190555b50565b600154600160a060020a031681565b600160a060020a03808d16600090815260066020908152604080832093851683529290529081205483901080159061102057508261101d8e8e8e8e8e8e8e8e8e8e6113e6565b10155b151561102e57506000611032565b5060015b9c9b505050505050505050505050565b60005433600160a060020a0390811691161461105d57610000565b60018054600160a060020a031916600160a060020a0383161790555b50565b60055481565b60005433600160a060020a0390811691161461109d57610000565b6004548111806110ae575060055481105b156110b857610000565b60048190555b50565b60005433600160a060020a039081169116146110dc57610000565b60008054600160a060020a031916600160a060020a0383161790555b50565b600160a060020a038216151561111057610000565b600160a060020a03808316600090815260066020908152604080832033909416835292905220548190101561114457610000565b600160a060020a03808316600090815260066020908152604080832033909416835292905220546111759082611931565b600160a060020a03808416600081815260066020908152604080832033909516808452948252808320959095558451810182905284517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018690529351919363a9059cbb936044808201949293918390030190829087803b151561120257fe5b60325a03f1151561120f57fe5b5050604051511515905061122257610000565b600160a060020a03808316600081815260066020908152604080832033959095168084529482529182902054825193845290830193909352818101849052606082019290925290517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a15b5050565b600760209081526000928352604080842090915290825290205460ff1681565b60045481565b33600160a060020a0316600090815260008051602061198a83398151915260205260409020546112ef903461162d565b33600160a060020a0316600081815260008051602061198a8339815191526020908152604080832085905580519283529082019290925234818301526060810192909252517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a15b565b60005433600160a060020a0390811691161461137c57610000565b60028054600160a060020a031916600160a060020a0383161790555b50565b600254600160a060020a031681565b600160a060020a038083166000908152600660209081526040808320938516835292905220545b92915050565b600054600160a060020a031681565b60006000600060006002308f8f8f8f8f8f6000604051602001526040518088600160a060020a0316600160a060020a0316606060020a02815260140187600160a060020a0316600160a060020a0316606060020a02815260140186815260200185600160a060020a0316600160a060020a0316606060020a0281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f1151561149957fe5b50506040805151600160a060020a038a166000908152600760209081528382208383529052919091205490935060ff168061157d5750604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101859052815190819003603c018120600082815260208381018552928401819052835191825260ff8b16828401528184018a9052606082018990529251600160a060020a038c16936001936080808501949193601f198101939281900390910191866161da5a03f1151561156957fe5b505060206040510351600160a060020a0316145b80156115895750894311155b1515611598576000935061161c565b600160a060020a03881660009081526008602090815260408083208684529091529020546115c7908e90611931565b600160a060020a03808e166000908152600660209081526040808320938d16835292905220549092508b906115fc908f61194a565b81151561160557fe5b049050808210156116185781935061161c565b8093505b5050509a9950505050505050505050565b600082820161164a8482108015906116455750838210155b611979565b8091505b5092915050565b6000600060006000670de0b6b3a76400006116728660035461194a565b81151561167b57fe5b049350670de0b6b3a76400006116938660045461194a565b81151561169c57fe5b600254919004935060009250600160a060020a03161561177257600254604080516000602091820181905282517f1cbd0519000000000000000000000000000000000000000000000000000000008152600160a060020a038b8116600483015293519390941693631cbd0519936024808301949391928390030190829087803b151561172457fe5b60325a03f1151561173157fe5b505060405151915050600181141561176557670de0b6b3a76400006117588660055461194a565b81151561176157fe5b0491505b8060021415611772578291505b5b600160a060020a03808b16600090815260066020908152604080832033909416835292905220546117ad906117a8878661162d565b611931565b600160a060020a038b81166000908152600660209081526040808320338516845290915280822093909355908816815220546117fb906117f66117f0888661162d565b87611931565b61162d565b600160a060020a038b811660009081526006602090815260408083208b85168452909152808220939093556001549091168152205461184c906117f6611841878761162d565b85611931565b61162d565b600160a060020a03808c166000908152600660208181526040808420600154861685528252808420959095558c84168352908152838220928a1682529190915220546118ac908a61189d8a8961194a565b8115156118a657fe5b04611931565b600160a060020a0389811660009081526006602090815260408083208b851684529091528082209390935533909116815220546118fd908a6118ee8a8961194a565b8115156118f757fe5b0461162d565b600160a060020a03808a16600090815260066020908152604080832033909416835292905220555b50505050505050505050565b600061193f83831115611979565b508082035b92915050565b600082820261164a841580611645575083858381151561196657fe5b04145b611979565b8091505b5092915050565b801515610cef57610000565b5b50560054cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8a165627a7a723058201f5c6afd64915184f48f2f470649fb4e2cba0d79c31de45410dc1c0b6fc0a62f0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/EtherToken.abi b/chief_keeper/makerdao_utils/abi/EtherToken.abi
new file mode 100644
index 0000000..e2e1d2b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/EtherToken.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/EtherToken.bin b/chief_keeper/makerdao_utils/abi/EtherToken.bin
new file mode 100644
index 0000000..c51fc38
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/EtherToken.bin
@@ -0,0 +1 @@
+6060604052341561000c57fe5b5b610d928061001c6000396000f300606060405236156100ad576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100be578063095ea7b31461015757806318160ddd146101ae57806323b872dd146101d45780632e1a7d4d1461024a578063313ce5671461026a57806370a082311461029657806395d89b41146102e0578063a9059cbb14610379578063d0e30db0146103d0578063dd62ed3e146103da575b6100bc5b6100b9610443565b5b565b005b34156100c657fe5b6100ce6104e4565b604051808060200182810382528381815181526020019150805190602001908083836000831461011d575b80518252602083111561011d576020820191506020810190506020830392506100f9565b505050905090810190601f1680156101495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015f57fe5b610194600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061051e565b604051808215151515815260200191505060405180910390f35b34156101b657fe5b6101be610611565b6040518082815260200191505060405180910390f35b34156101dc57fe5b610230600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610617565b604051808215151515815260200191505060405180910390f35b341561025257fe5b6102686004808035906020019091905050610947565b005b341561027257fe5b61027a610a2d565b604051808260ff1660ff16815260200191505060405180910390f35b341561029e57fe5b6102ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a32565b6040518082815260200191505060405180910390f35b34156102e857fe5b6102f0610a7c565b604051808060200182810382528381815181526020019150805190602001908083836000831461033f575b80518252602083111561033f5760208201915060208101905060208303925061031b565b505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561038157fe5b6103b6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ab6565b604051808215151515815260200191505060405180910390f35b6103d8610443565b005b34156103e257fe5b61042d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca4565b6040518082815260200191505060405180910390f35b61048c600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610d2c565b600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104db60025434610d2c565b6002819055505b565b604060405190810160405280600b81526020017f457468657220546f6b656e00000000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60025481565b60006000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106e95750828110155b80156107755750600060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b156109355782600060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156108c75782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915061093f565b6000915061093f565b5b509392505050565b610990600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d4c565b600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109df60025482610d4c565b6002819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f193505050501515610a295760006000fd5b5b50565b601281565b6000600060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b604060405190810160405280600481526020017f574554480000000000000000000000000000000000000000000000000000000081525081565b600081600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610b875750600060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610c945781600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610c9e565b60009050610c9e565b5b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600060008284019050838110151515610d4157fe5b8091505b5092915050565b6000828211151515610d5a57fe5b81830390505b929150505600a165627a7a72305820197b06eae7be68ba129f01685b2c2fa836d9873b2de1861bdab047f4333beb7b0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Exchange.abi b/chief_keeper/makerdao_utils/abi/Exchange.abi
new file mode 100644
index 0000000..5857634
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Exchange.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"},{"name":"target","type":"uint256"}],"name":"isRoundingError","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"filled","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"cancelled","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5][]"},{"name":"orderValues","type":"uint256[6][]"},{"name":"fillTakerTokenAmount","type":"uint256"},{"name":"shouldThrowOnInsufficientBalanceOrAllowance","type":"bool"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"fillOrdersUpTo","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5]"},{"name":"orderValues","type":"uint256[6]"},{"name":"cancelTakerTokenAmount","type":"uint256"}],"name":"cancelOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ZRX_TOKEN_CONTRACT","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5][]"},{"name":"orderValues","type":"uint256[6][]"},{"name":"fillTakerTokenAmounts","type":"uint256[]"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"batchFillOrKillOrders","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5]"},{"name":"orderValues","type":"uint256[6]"},{"name":"fillTakerTokenAmount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"fillOrKillOrder","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"orderHash","type":"bytes32"}],"name":"getUnavailableTakerTokenAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"signer","type":"address"},{"name":"hash","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"isValidSignature","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"},{"name":"target","type":"uint256"}],"name":"getPartialAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_TRANSFER_PROXY_CONTRACT","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5][]"},{"name":"orderValues","type":"uint256[6][]"},{"name":"fillTakerTokenAmounts","type":"uint256[]"},{"name":"shouldThrowOnInsufficientBalanceOrAllowance","type":"bool"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"batchFillOrders","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5][]"},{"name":"orderValues","type":"uint256[6][]"},{"name":"cancelTakerTokenAmounts","type":"uint256[]"}],"name":"batchCancelOrders","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"orderAddresses","type":"address[5]"},{"name":"orderValues","type":"uint256[6]"},{"name":"fillTakerTokenAmount","type":"uint256"},{"name":"shouldThrowOnInsufficientBalanceOrAllowance","type":"bool"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"fillOrder","outputs":[{"name":"filledTakerTokenAmount","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"orderAddresses","type":"address[5]"},{"name":"orderValues","type":"uint256[6]"}],"name":"getOrderHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"EXTERNAL_QUERY_GAS_LIMIT","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[{"name":"_zrxToken","type":"address"},{"name":"_tokenTransferProxy","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"maker","type":"address"},{"indexed":false,"name":"taker","type":"address"},{"indexed":true,"name":"feeRecipient","type":"address"},{"indexed":false,"name":"makerToken","type":"address"},{"indexed":false,"name":"takerToken","type":"address"},{"indexed":false,"name":"filledMakerTokenAmount","type":"uint256"},{"indexed":false,"name":"filledTakerTokenAmount","type":"uint256"},{"indexed":false,"name":"paidMakerFee","type":"uint256"},{"indexed":false,"name":"paidTakerFee","type":"uint256"},{"indexed":true,"name":"tokens","type":"bytes32"},{"indexed":false,"name":"orderHash","type":"bytes32"}],"name":"LogFill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"maker","type":"address"},{"indexed":true,"name":"feeRecipient","type":"address"},{"indexed":false,"name":"makerToken","type":"address"},{"indexed":false,"name":"takerToken","type":"address"},{"indexed":false,"name":"cancelledMakerTokenAmount","type":"uint256"},{"indexed":false,"name":"cancelledTakerTokenAmount","type":"uint256"},{"indexed":true,"name":"tokens","type":"bytes32"},{"indexed":false,"name":"orderHash","type":"bytes32"}],"name":"LogCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"errorId","type":"uint8"},{"indexed":true,"name":"orderHash","type":"bytes32"}],"name":"LogError","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Exchange.bin b/chief_keeper/makerdao_utils/abi/Exchange.bin
new file mode 100644
index 0000000..fbfbc54
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Exchange.bin
@@ -0,0 +1 @@
+6060604052341561000f57600080fd5b604051604080612c4d833981016040528080519060200190919080519060200190919050505b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505b612b84806100c96000396000f300606060405236156100fa576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee146100ff578063288cdc911461014c5780632ac1262214610187578063363349be146101c2578063394c21e7146103bc5780633b30ba591461044b5780634f150787146104a0578063741bcc93146106b25780637e9abb50146107535780638163681e1461078e57806398024a8b14610812578063add1cbc51461085b578063b7b2c7d6146108b0578063baa0181d14610acd578063bc61394a14610c1f578063cfc4d0ec14610cdf578063f06bbf7514610d6d578063ffa1ad7414610d9e575b600080fd5b341561010a57600080fd5b6101326004808035906020019091908035906020019091908035906020019091905050610e2d565b604051808215151515815260200191505060405180910390f35b341561015757600080fd5b610171600480803560001916906020019091905050610e7c565b6040518082815260200191505060405180910390f35b341561019257600080fd5b6101ac600480803560001916906020019091905050610e94565b6040518082815260200191505060405180910390f35b34156101cd57600080fd5b6103a660048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561024857848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610203565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102c457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061027f565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610eac565b6040518082815260200191505060405180910390f35b34156103c757600080fd5b6104356004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091905050611013565b6040518082815260200191505060405180910390f35b341561045657600080fd5b61045e6114fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104ab57600080fd5b6106b060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561052657848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104e1565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156105a257848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061055d565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611520565b005b34156106bd57600080fd5b6107516004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115df565b005b341561075e57600080fd5b610778600480803560001916906020019091905050611605565b6040518082815260200191505060405180910390f35b341561079957600080fd5b6107f8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061164f565b604051808215151515815260200191505060405180910390f35b341561081d57600080fd5b6108456004808035906020019091908035906020019091908035906020019091905050611757565b6040518082815260200191505060405180910390f35b341561086657600080fd5b61086e611776565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108bb57600080fd5b610acb60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561093657848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108f1565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109b257848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061096d565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035151590602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061179c565b005b3415610ad857600080fd5b610c1d60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b5357848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610b0e565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610bcf57848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b8a565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061185e565b005b3415610c2a57600080fd5b610cc96004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118d3565b6040518082815260200191505060405180910390f35b3415610cea57600080fd5b610d4f6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091905050612073565b60405180826000191660001916815260200191505060405180910390f35b3415610d7857600080fd5b610d8061231f565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610da957600080fd5b610db1612325565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df25780820151818401525b602081019050610dd6565b50505050905090810190601f168015610e1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008486850991506000821415610e4a5760009250610e73565b610e69610e5a83620f424061235e565b610e64888761235e565b612392565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b6000806000809150600090505b895181101561100257896000815181101515610ed157fe5b906020019060200201516003600581101515610ee957fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610f1257fe5b906020019060200201516003600581101515610f2a57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f5157600080fd5b610fe582610fe08c84815181101515610f6657fe5b906020019060200201518c85815181101515610f7e57fe5b90602001906020020151610f928d886123ae565b8c8c88815181101515610fa157fe5b906020019060200201518c89815181101515610fb957fe5b906020019060200201518c8a815181101515610fd157fe5b906020019060200201516118d3565b6123c8565b915087821415610ff457611002565b5b8080600101915050610eb9565b8192505b5050979650505050505050565b600061101d612a8c565b6000806101606040519081016040528088600060058110151561103c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561106b57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600260058110151561109a57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110c957fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860046005811015156110f857fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561112757fe5b6020020151815260200187600160068110151561114057fe5b6020020151815260200187600260068110151561115957fe5b6020020151815260200187600360068110151561117257fe5b6020020151815260200187600460068110151561118b57fe5b6020020151815260200161119f8989612073565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111e657600080fd5b60008360a001511180156111fe575060008360c00151115b801561120a5750600085115b151561121557600080fd5b8261012001514210151561127257826101400151600019166000600381111561123a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f1565b61128d8360c00151611288856101400151611605565b6123ae565b915061129985836123e7565b905060008114156112f35782610140015160001916600160038111156112bb57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f1565b61131d600360008561014001516000191660001916815260200190815260200160002054826123c8565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b0458713186604001518760600151611455878a60c001518b60a00151611757565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b86518110156115d5576115c7878281518110151561154057fe5b90602001906020020151878381518110151561155857fe5b90602001906020020151878481518110151561157057fe5b90602001906020020151878581518110151561158857fe5b9060200190602002015187868151811015156115a057fe5b9060200190602002015187878151811015156115b857fe5b906020019060200201516115df565b5b8080600101915050611526565b5b50505050505050565b836115f087878760008888886118d3565b1415156115fc57600080fd5b5b505050505050565b600061164760026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123c8565b90505b919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561171457600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490505b95945050505050565b600061176c611766858461235e565b84612392565b90505b9392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b87518110156118535761184488828151811015156117bc57fe5b9060200190602002015188838151811015156117d457fe5b9060200190602002015188848151811015156117ec57fe5b9060200190602002015188888681518110151561180557fe5b90602001906020020151888781518110151561181d57fe5b90602001906020020151888881518110151561183557fe5b906020019060200201516118d3565b505b80806001019150506117a2565b5b5050505050505050565b60008090505b83518110156118cc576118bd848281518110151561187e57fe5b90602001906020020151848381518110151561189657fe5b9060200190602002015184848151811015156118ae57fe5b90602001906020020151611013565b505b8080600101915050611864565b5b50505050565b60006118dd612a8c565b600080600080610160604051908101604052808e60006005811015156118ff57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561192e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561195d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561198c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119bb57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119ea57fe5b602002015181526020018d6001600681101515611a0357fe5b602002015181526020018d6002600681101515611a1c57fe5b602002015181526020018d6003600681101515611a3557fe5b602002015181526020018d6004600681101515611a4e57fe5b60200201518152602001611a628f8f612073565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611ad957503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611ae457600080fd5b60008560a00151118015611afc575060008560c00151115b8015611b08575060008b115b1515611b1357600080fd5b611b2985600001518661014001518b8b8b61164f565b1515611b3457600080fd5b84610120015142101515611b91578461014001516000191660006003811115611b5957fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612063565b611bac8560c00151611ba7876101400151611605565b6123ae565b9350611bb88b856123e7565b95506000861415611c12578461014001516000191660016003811115611bda57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612063565b611c25868660c001518760a00151610e2d565b15611c79578461014001516000191660026003811115611c4157fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612063565b89158015611c8e5750611c8c8587612401565b155b15611ce15784610140015160001916600380811115611ca957fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612063565b611cf4868660c001518760a00151611757565b9250611d20600260008761014001516000191660001916815260200190815260200160002054876123c8565b600260008761014001516000191660001916815260200190815260200160002081905550611d58856040015186600001513386612751565b1515611d6357600080fd5b611d77856060015133876000015189612751565b1515611d8257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e815760008560e001511115611e1f57611ddc868660c001518760e00151611757565b9150611e136000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660000151876080015185612751565b1515611e1e57600080fd5b5b60008561010001511115611e8057611e41868660c00151876101000151611757565b9050611e746000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633876080015184612751565b1515611e7f57600080fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561208557fe5b602002015184600160058110151561209957fe5b60200201518560026005811015156120ad57fe5b60200201518660036005811015156120c157fe5b60200201518760046005811015156120d557fe5b60200201518760006006811015156120e957fe5b60200201518860016006811015156120fd57fe5b602002015189600260068110151561211157fe5b60200201518a600360068110151561212557fe5b60200201518b600460068110151561213957fe5b60200201518c600560068110151561214d57fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c50505050505050505050505050604051809103902090505b92915050565b61138781565b6040805190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6000808284029050600084148061237f575082848281151561237c57fe5b04145b151561238757fe5b8091505b5092915050565b60008082848115156123a057fe5b0490508091505b5092915050565b60008282111515156123bc57fe5b81830390505b92915050565b60008082840190508381101515156123dc57fe5b8091505b5092915050565b60008183106123f657816123f8565b825b90505b92915050565b60008060008060008060008060003397506124258a8c60c001518d60a00151611757565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126d2576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff161495506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff161494506125208a8c60c001518d60e00151611757565b93506125368a8c60c001518d6101000151611757565b925085612543578361254e565b61254d87856123c8565b5b91508461255b5782612566565b6125658a846123c8565b5b9050816125986000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d600001516128ae565b10806125d15750816125cf6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d60000151612972565b105b806126055750806126036000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6128ae565b105b806126395750806126376000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a612972565b105b156126475760009850612743565b851580156126805750866126638c604001518d600001516128ae565b108061267f57508661267d8c604001518d60000151612972565b105b5b1561268e5760009850612743565b841580156126bf5750896126a68c606001518a6128ae565b10806126be5750896126bc8c606001518a612972565b105b5b156126cd5760009850612743565b61273e565b866126e58c604001518d600001516128ae565b10806127015750866126ff8c604001518d60000151612972565b105b806127185750896127168c606001518a6128ae565b105b8061272f57508961272d8c606001518a612972565b105b1561273d5760009850612743565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561288857600080fd5b6102c65a03f1151561289957600080fd5b5050506040518051905090505b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561295157600080fd5b87f1151561295e57600080fd5b505050506040518051905090505b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a6b57600080fd5b87f11515612a7857600080fd5b505050506040518051905090505b92915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000801916815250905600a165627a7a72305820df5cabdc3a116e993e10bfb14823d18d9b798038d4c463a1703f9a584c456b7e0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.abi b/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.abi
new file mode 100644
index 0000000..15b9208
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.abi
@@ -0,0 +1,181 @@
+[
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "target",
+ "type": "address"
+ }
+ ],
+ "name": "addAuthorizedAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "authorities",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "target",
+ "type": "address"
+ }
+ ],
+ "name": "removeAuthorizedAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeAuthorizedAddressAtIndex",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getProxyId",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bytes4"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "authorized",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getAuthorizedAddresses",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "caller",
+ "type": "address"
+ }
+ ],
+ "name": "AuthorizedAddressAdded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "target",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "caller",
+ "type": "address"
+ }
+ ],
+ "name": "AuthorizedAddressRemoved",
+ "type": "event"
+ }
+ ]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.bin b/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.bin
new file mode 100644
index 0000000..44eff13
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ExchangeV2-ERC20Proxy.bin
@@ -0,0 +1 @@
+608060405260008054600160a060020a03191633179055610f4a806100256000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166342f1181e8114610248578063494503d41461027857806370712939146102b95780638da5cb5b146102e75780639ad26744146102fc578063ae25532e1461032d578063b918161114610377578063d39de6e9146103b9578063f2fde38b1461041e575b3480156100a457600080fd5b507fffffffff00000000000000000000000000000000000000000000000000000000600035167fa85e59e40000000000000000000000000000000000000000000000000000000081141561024357604080513381526001602082015290812054151561017b577f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c1553454e4445525f4e4f545f415554484f52495a454400000000000000604052600060605260646000fd5b602860043501357f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080855af1600080511160203d14163d15178116905080156101d257005b7f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f5452414e534645525f4641494c454400000000000000000000000000604052600060605260646000fd5b600080fd5b34801561025457600080fd5b5061027673ffffffffffffffffffffffffffffffffffffffff6004351661044c565b005b34801561028457600080fd5b50610290600435610638565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102c557600080fd5b5061027673ffffffffffffffffffffffffffffffffffffffff6004351661066d565b3480156102f357600080fd5b50610290610966565b34801561030857600080fd5b5061027673ffffffffffffffffffffffffffffffffffffffff60043516602435610982565b34801561033957600080fd5b50610342610d37565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561038357600080fd5b506103a573ffffffffffffffffffffffffffffffffffffffff60043516610d6d565b604080519115158252519081900360200190f35b3480156103c557600080fd5b506103ce610d82565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561040a5781810151838201526020016103f2565b505050509050019250505060405180910390f35b34801561042a57600080fd5b5061027673ffffffffffffffffffffffffffffffffffffffff60043516610df1565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561056757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5441524745545f414c52454144595f415554484f52495a454400000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600280548290811061064657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000805473ffffffffffffffffffffffffffffffffffffffff1633146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16151561078a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60025481101561091f578173ffffffffffffffffffffffffffffffffffffffff1660028281548110151561080757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561091757600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061085f57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061089257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906109119082610ed7565b5061091f565b6001016107d7565b604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a0857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff161515610a9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5441524745545f4e4f545f415554484f52495a45440000000000000000000000604482015290519081900360640190fd5b6002548110610b0e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e4445585f4f55545f4f465f424f554e445300000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16600282815481101515610b3457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610bc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f415554484f52495a45445f414444524553535f4d49534d415443480000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610c3d57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610c7057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190610cef9082610ed7565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b604080517f4552433230546f6b656e28616464726573732900000000000000000000000000815290519081900360130190205b90565b60016020526000908152604090205460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610de757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dbc575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615610ed457600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b815481835581811115610efb57600083815260209020610efb918101908301610f00565b505050565b610d6a91905b80821115610f1a5760008155600101610f06565b50905600a165627a7a72305820f6b2cadda0be9b47f37ed4a850b096e49b5e2e8bb7446d65481adecf980824a00029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ExchangeV2.abi b/chief_keeper/makerdao_utils/abi/ExchangeV2.abi
new file mode 100644
index 0000000..d002fdd
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ExchangeV2.abi
@@ -0,0 +1,1962 @@
+[
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "filled",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "takerAssetFillAmounts",
+ "type": "uint256[]"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "batchFillOrders",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "cancelled",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "hash",
+ "type": "bytes32"
+ },
+ {
+ "name": "signerAddress",
+ "type": "address"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "preSign",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "leftOrder",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "rightOrder",
+ "type": "tuple"
+ },
+ {
+ "name": "leftSignature",
+ "type": "bytes"
+ },
+ {
+ "name": "rightSignature",
+ "type": "bytes"
+ }
+ ],
+ "name": "matchOrders",
+ "outputs": [
+ {
+ "components": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "left",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "right",
+ "type": "tuple"
+ },
+ {
+ "name": "leftMakerAssetSpreadAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "matchedFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "order",
+ "type": "tuple"
+ },
+ {
+ "name": "takerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "fillOrderNoThrow",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "fillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "bytes4"
+ }
+ ],
+ "name": "assetProxies",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "batchCancelOrders",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "takerAssetFillAmounts",
+ "type": "uint256[]"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "batchFillOrKillOrders",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "targetOrderEpoch",
+ "type": "uint256"
+ }
+ ],
+ "name": "cancelOrdersUpTo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "takerAssetFillAmounts",
+ "type": "uint256[]"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "batchFillOrdersNoThrow",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "assetProxyId",
+ "type": "bytes4"
+ }
+ ],
+ "name": "getAssetProxy",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "transactions",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "order",
+ "type": "tuple"
+ },
+ {
+ "name": "takerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "fillOrKillOrder",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "fillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "validatorAddress",
+ "type": "address"
+ },
+ {
+ "name": "approval",
+ "type": "bool"
+ }
+ ],
+ "name": "setSignatureValidatorApproval",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "allowedValidators",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "takerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "marketSellOrders",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "getOrdersInfo",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "orderStatus",
+ "type": "uint8"
+ },
+ {
+ "name": "orderHash",
+ "type": "bytes32"
+ },
+ {
+ "name": "orderTakerAssetFilledAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "bytes32"
+ },
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "preSigned",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "hash",
+ "type": "bytes32"
+ },
+ {
+ "name": "signerAddress",
+ "type": "address"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "isValidSignature",
+ "outputs": [
+ {
+ "name": "isValid",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "makerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "marketBuyOrdersNoThrow",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "order",
+ "type": "tuple"
+ },
+ {
+ "name": "takerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "fillOrder",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "fillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "signerAddress",
+ "type": "address"
+ },
+ {
+ "name": "data",
+ "type": "bytes"
+ },
+ {
+ "name": "signature",
+ "type": "bytes"
+ }
+ ],
+ "name": "executeTransaction",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "assetProxy",
+ "type": "address"
+ }
+ ],
+ "name": "registerAssetProxy",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "order",
+ "type": "tuple"
+ }
+ ],
+ "name": "getOrderInfo",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "orderStatus",
+ "type": "uint8"
+ },
+ {
+ "name": "orderHash",
+ "type": "bytes32"
+ },
+ {
+ "name": "orderTakerAssetFilledAmount",
+ "type": "uint256"
+ }
+ ],
+ "name": "orderInfo",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "order",
+ "type": "tuple"
+ }
+ ],
+ "name": "cancelOrder",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "orderEpoch",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "ZRX_ASSET_DATA",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "takerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "marketSellOrdersNoThrow",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "EIP712_DOMAIN_HASH",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "components": [
+ {
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "name": "makerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFee",
+ "type": "uint256"
+ },
+ {
+ "name": "expirationTimeSeconds",
+ "type": "uint256"
+ },
+ {
+ "name": "salt",
+ "type": "uint256"
+ },
+ {
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "orders",
+ "type": "tuple[]"
+ },
+ {
+ "name": "makerAssetFillAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "signatures",
+ "type": "bytes[]"
+ }
+ ],
+ "name": "marketBuyOrders",
+ "outputs": [
+ {
+ "components": [
+ {
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "name": "takerFeePaid",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalFillResults",
+ "type": "tuple"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "currentContextAddress",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "VERSION",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "signerAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "validatorAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "name": "SignatureValidatorApproval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "takerAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "makerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "name": "takerAssetFilledAmount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "name": "makerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "name": "takerFeePaid",
+ "type": "uint256"
+ },
+ {
+ "indexed": true,
+ "name": "orderHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": false,
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "Fill",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "feeRecipientAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "orderHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": false,
+ "name": "makerAssetData",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "name": "takerAssetData",
+ "type": "bytes"
+ }
+ ],
+ "name": "Cancel",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "makerAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "senderAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "orderEpoch",
+ "type": "uint256"
+ }
+ ],
+ "name": "CancelUpTo",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "name": "id",
+ "type": "bytes4"
+ },
+ {
+ "indexed": false,
+ "name": "assetProxy",
+ "type": "address"
+ }
+ ],
+ "name": "AssetProxyRegistered",
+ "type": "event"
+ }
+ ]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ExchangeV2.bin b/chief_keeper/makerdao_utils/abi/ExchangeV2.bin
new file mode 100644
index 0000000..f91b477
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ExchangeV2.bin
@@ -0,0 +1 @@
+60806040526000805460ff191690553480156200001b57600080fd5b50604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f2900000000000000000000000000000000000000000000000000000000000000606183015282516042818403018152606290920192839052815191929182918401908083835b60208310620001245780518252601f19909201916020918201910162000103565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208285018552600b8084527f30782050726f746f636f6c000000000000000000000000000000000000000000928401928352945190965091945090928392508083835b60208310620001ae5780518252601f1990920191602091820191016200018d565b51815160209384036101000a600019018019909216911617905260408051929094018290038220828501855260018084527f3200000000000000000000000000000000000000000000000000000000000000928401928352945190965091945090928392508083835b60208310620002385780518252601f19909201916020918201910162000217565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019890985281840196909652606081019690965250306080808701919091528151808703909101815260a09095019081905284519093849350850191508083835b60208310620002c35780518252601f199092019160209182019101620002a2565b5181516000196020949094036101000a939093019283169219169190911790526040519201829003909120600155505060028054600160a060020a03191633179055506158b380620003166000396000f3006080604052600436106101b65763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663288cdc9181146101bb578063297bb70b146101f15780632ac126221461021e5780633683ef8e1461024b5780633c28d8611461026d5780633e228bae1461029a5780633fd3c997146102ba5780634ac14782146102e75780634d0ae546146103075780634f9559b11461032757806350dde190146103475780636070410814610367578063642f2eaf1461039457806364a3bc15146103b457806377fcce68146103d45780637b8e3514146103f45780637e1d9808146104145780637e9d74dc1461043457806382c174d0146104615780638da5cb5b146104815780639363470214610496578063a3e20380146104b6578063b4be83d5146104d6578063bfc8bfce146104f6578063c585bb9314610516578063c75e0a8114610536578063d46b02c314610563578063d9bfa73e14610583578063db123b1a146105a3578063dd1c7d18146105c5578063e306f779146105e5578063e5fa431b146105fa578063eea086ba1461061a578063f2fde38b1461062f578063ffa1ad741461064f575b600080fd5b3480156101c757600080fd5b506101db6101d6366004614800565b610664565b6040516101e89190615425565b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614723565b610676565b6040516101e891906156ff565b34801561022a57600080fd5b5061023e610239366004614800565b6107a1565b6040516101e89190615417565b34801561025757600080fd5b5061026b61026636600461483d565b6107b6565b005b34801561027957600080fd5b5061028d610288366004614971565b6108a3565b6040516101e8919061570d565b3480156102a657600080fd5b506102116102b5366004614a31565b610a3a565b3480156102c657600080fd5b506102da6102d5366004614900565b610a90565b6040516101e891906154e1565b3480156102f357600080fd5b5061026b6103023660046146ee565b610ab8565b34801561031357600080fd5b50610211610322366004614723565b610b85565b34801561033357600080fd5b5061026b610342366004614800565b610c75565b34801561035357600080fd5b50610211610362366004614723565b610e2a565b34801561037357600080fd5b50610387610382366004614900565b610ebe565b6040516101e89190615337565b3480156103a057600080fd5b5061023e6103af366004614800565b610f0c565b3480156103c057600080fd5b506102116103cf366004614a31565b610f21565b3480156103e057600080fd5b5061026b6103ef3660046146be565b610fcc565b34801561040057600080fd5b5061023e61040f366004614684565b611106565b34801561042057600080fd5b5061021161042f3660046147b7565b611126565b34801561044057600080fd5b5061045461044f3660046146ee565b61128a565b6040516101e89190615406565b34801561046d57600080fd5b5061023e61047c36600461481e565b61131f565b34801561048d57600080fd5b5061038761133f565b3480156104a257600080fd5b5061023e6104b13660046148a5565b61135b565b3480156104c257600080fd5b506102116104d13660046147b7565b6118de565b3480156104e257600080fd5b506102116104f1366004614a31565b6119f1565b34801561050257600080fd5b5061026b610511366004614a7a565b611a6c565b34801561052257600080fd5b5061026b610531366004614666565b611d05565b34801561054257600080fd5b5061055661055136600461493c565b611f30565b6040516101e8919061571c565b34801561056f57600080fd5b5061026b61057e36600461493c565b61202a565b34801561058f57600080fd5b506101db61059e366004614684565b6120c6565b3480156105af57600080fd5b506105b86120e3565b6040516101e891906154d0565b3480156105d157600080fd5b506102116105e03660046147b7565b612143565b3480156105f157600080fd5b506101db612218565b34801561060657600080fd5b506102116106153660046147b7565b61221e565b34801561062657600080fd5b50610387612390565b34801561063b57600080fd5b5061026b61064a366004614666565b6123ac565b34801561065b57600080fd5b506105b861245d565b60036020526000908152604090205481565b61067e614298565b600080610689614298565b60005460ff16156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781558751935091505b81831461076f57610758878381518110151561071957fe5b90602001906020020151878481518110151561073157fe5b90602001906020020151878581518110151561074957fe5b90602001906020020151612494565b90506107648482612532565b600190910190610701565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055509392505050565b60046020526000908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff831633146108465761080e848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375061135b945050505050565b1515610846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155af565b5050600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff9093168452919052902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6108ab6142c1565b6108b36142f0565b6108bb6142f0565b6000805460ff16156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561016080890151610140808a01919091528901519088015261094588611f30565b925061095087611f30565b915061095a612594565b9050610968888483896125c6565b610974878383886125c6565b61097e888861275e565b6109928888856040015185604001516127be565b8051602081015190519195506109ad918a9186918190612945565b6020808501519081015190516109c99189918591908190612945565b6109e28882856020015186604001518860000151612a5e565b6109fb8782846020015185604001518860200151612a5e565b610a0788888387612b0a565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550949350505050565b610a42614298565b6060610a4f858585612c92565b9050608081825160208401305af48015610a8657815183526020820151602084015260408201516040840152606082015160608401525b505b509392505050565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60008054819060ff1615610af8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781558151905b808214610b5857610b508382815181101515610b4157fe5b90602001906020020151612e64565b600101610b29565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b610b8d614298565b600080610b98614298565b60005460ff1615610bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781558751935091505b81831461076f57610c5e8783815181101515610c1f57fe5b906020019060200201518784815181101515610c3757fe5b906020019060200201518785815181101515610c4f57fe5b90602001906020020151612e8f565b9050610c6a8482612532565b600190910190610c07565b6000805481908190819060ff1615610cb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610cec612594565b935073ffffffffffffffffffffffffffffffffffffffff84163314610d115733610d14565b60005b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600560209081526040808320938516835292905220549093506001860192509050808211610d8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061563f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526005602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610df3908690615425565b60405180910390a35050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050565b610e32614298565b600080610e3d614298565b86519250600091505b818314610eb457610e9d8783815181101515610e5e57fe5b906020019060200201518784815181101515610e7657fe5b906020019060200201518785815181101515610e8e57fe5b90602001906020020151610a3a565b9050610ea98482612532565b600190910190610e46565b5050509392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b60086020526000908152604090205460ff1681565b610f29614298565b60005460ff1615610f66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f9c848484612e8f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055949350505050565b6000805460ff161561100a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561103d612594565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600760209081526040808320948916808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba891906110d1908690615417565b60405180910390a35050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b600760209081526000928352604080842090915290825290205460ff1681565b61112e614298565b6060600080600061113d614298565b60005460ff161561117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815589518a919081106111b257fe5b906020019060200201516101600151945088519350600092505b828414611255578489848151811015156111e257fe5b906020019060200201516101600181905250611202888760200151612ee2565b915061122e898481518110151561121557fe5b9060200190602002015183898681518110151561074957fe5b905061123a8682612532565b6020860151881161124a57611255565b6001909201916111cc565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055509195945050505050565b606060006060600084519250826040519080825280602002602001820160405280156112d057816020015b6112bd6142f0565b8152602001906001900390816112b55790505b509150600090505b808314610a88576112ff85828151811015156112f057fe5b90602001906020020151611f30565b828281518110151561130d57fe5b602090810290910101526001016112d8565b600660209081526000928352604080842090915290825290205460ff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600089511115156113a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061562f565b6113ad89612f29565b7f010000000000000000000000000000000000000000000000000000000000000090049650600760ff88161061140f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061554f565b8660ff16600781111561141e57fe5b9550600086600781111561142e57fe5b1415611466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061561f565b600186600781111561147457fe5b14156114bc578851156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156ef565b600097506118d0565b60028660078111156114ca57fe5b141561160557885160411461150b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906154ef565b88600081518110151561151a57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204945061155a89600163ffffffff612fed16565b935061156d89602163ffffffff612fed16565b925060018b868686604051600081526020016040526040516115929493929190615480565b60206040516020810390808403906000865af11580156115b6573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8c811690821614995092506118d09050565b600386600781111561161357fe5b14156117b9578851604114611654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906154ef565b88600081518110151561166357fe5b01602001517f01000000000000000000000000000000000000000000000000000000000000009081900481020494506116a389600163ffffffff612fed16565b93506116b689602163ffffffff612fed16565b925060018b60405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061175757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161171a565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018290038220600083529101928390526115929450925089918991508890615480565b60048660078111156117c757fe5b14156117df576117d88b8b8b613038565b97506118d0565b60058660078111156117ed57fe5b1415611850576117fc8961318d565b73ffffffffffffffffffffffffffffffffffffffff808c1660009081526007602090815260408083209385168352929052205490915060ff16151561184457600097506118d0565b6117d8818c8c8c613206565b600686600781111561185e57fe5b141561189e5760008b815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e16845290915290205460ff1697506118d0565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061554f565b505050505050509392505050565b6118e6614298565b60606000806000806118f6614298565b89600081518110151561190557fe5b906020019060200201516101400151955089519450600093505b8385146119e457858a8581518110151561193557fe5b6020908102909101015161014001528651611951908a90612ee2565b92506119948a8581518110151561196457fe5b9060200190602002015160a001518b8681518110151561198057fe5b906020019060200201516080015185613362565b91506119c08a858151811015156119a757fe5b90602001906020020151838a87815181101515610e8e57fe5b90506119cc8782612532565b865189116119d9576119e4565b60019093019261191f565b5050505050509392505050565b6119f9614298565b60005460ff1615611a36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f9c848484612494565b60095460009073ffffffffffffffffffffffffffffffffffffffff1615611abf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b611b02611afd888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437506133b8945050505050565b6135f9565b60008181526008602052604090205490915060ff1615611b4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061559f565b73ffffffffffffffffffffffffffffffffffffffff86163314611c1f57611ba6818785858080601f0160208091040260200160405190810160405280939291908181526020018383808284375061135b945050505050565b1515611bde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156df565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555b6000818152600860205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555130908690869080838380828437820191505092505050600060405180830381855af49150501515611cb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155cf565b73ffffffffffffffffffffffffffffffffffffffff86163314611cfc57600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b50505050505050565b6002546000908190819073ffffffffffffffffffffffffffffffffffffffff163314611d5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061568f565b8392508273ffffffffffffffffffffffffffffffffffffffff1663ae25532e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611dc457600080fd5b505af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dfc919081019061491e565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152600a602052604090205490925073ffffffffffffffffffffffffffffffffffffffff1690508015611e81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061552f565b7fffffffff0000000000000000000000000000000000000000000000000000000082166000908152600a60205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c0319490611f2290849087906154b5565b60405180910390a150505050565b611f386142f0565b611f4182613639565b6020808301829052600091825260039052604090819020549082015260808201511515611f755760015b60ff168152610f07565b60a08201511515611f87576002611f6b565b60a0820151604082015110611f9d576005611f6b565b6101008201514210611fb0576004611f6b565b60208082015160009081526004909152604090205460ff1615611fd4576006611f6b565b610120820151825173ffffffffffffffffffffffffffffffffffffffff90811660009081526005602090815260408083206060880151909416835292905220541115612021576006611f6b565b60038152919050565b60005460ff1615612067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561209b81612e64565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600560209081526000928352604080842090915290825290205481565b606060405190810160405280602481526020017ff47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f81526020017f4699f4980000000000000000000000000000000000000000000000000000000081525081565b61214b614298565b6060600080600061215a614298565b88600081518110151561216957fe5b906020019060200201516101600151945088519350600092505b82841461220c5784898481518110151561219957fe5b9060200190602002015161016001819052506121b9888760200151612ee2565b91506121e589848151811015156121cc57fe5b90602001906020020151838986815181101515610e8e57fe5b90506121f18682612532565b602086015188116122015761220c565b600190920191612183565b50505050509392505050565b60015481565b612226614298565b6060600080600080612236614298565b60005460ff1615612273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061567f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781558a518b919081106122ab57fe5b906020019060200201516101400151955089519450600093505b83851461235a57858a858151811015156122db57fe5b60209081029091010151610140015286516122f7908a90612ee2565b925061230a8a8581518110151561196457fe5b91506123368a8581518110151561231d57fe5b90602001906020020151838a8781518110151561074957fe5b90506123428782612532565b8651891161234f5761235a565b6001909301926122c5565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550929695505050505050565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061568f565b73ffffffffffffffffffffffffffffffffffffffff81161561245a57600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b60408051808201909152600581527f322e302e30000000000000000000000000000000000000000000000000000000602082015281565b61249c614298565b6124a46142f0565b60008060006124b288611f30565b93506124bc612594565b92506124ca888585896125c6565b6124dc8860a001518560400151612ee2565b91506124e88783613647565b90506124fb888589848960000151612945565b612505888261365d565b945061251c88848660200151876040015189612a5e565b6125278884876136be565b505050509392505050565b815181516125409190613776565b8252602080830151908201516125569190613776565b60208301526040808301519082015161256f9190613776565b6040830152606080830151908201516125889190613776565b60609092019190915250565b60095460009073ffffffffffffffffffffffffffffffffffffffff168181156125bd57816125bf565b335b9392505050565b825160ff16600314612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156af565b606084015173ffffffffffffffffffffffffffffffffffffffff161561267757606084015173ffffffffffffffffffffffffffffffffffffffff163314612677576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156bf565b602084015173ffffffffffffffffffffffffffffffffffffffff1615612702578173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff16141515612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906154ff565b6040830151151561275857612720836020015185600001518361135b565b1515612758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061556f565b50505050565b6127708260a001518260a001516137c0565b612782836080015183608001516137c0565b10156127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156cf565b5050565b6127c66142c1565b6000806000806127da8960a0015188612ee2565b93506127ef89608001518a60a001518661381b565b92506127ff8860a0015187612ee2565b915061281488608001518960a001518461381b565b90508084106128575760208086018051839052805182018490525151865182015260808a015160a08b015187519092015161284f929061381b565b855152612894565b845183905284516020908101859052855181015190860180519190915260a089015160808a015191515161288b9290613898565b60208087015101525b84515160208087015101516128a99190612ee2565b604086015284515160808a015160c08b01516128c692919061381b565b85516040015284516020015160a08a015160e08b01516128e792919061381b565b855160600152602085015151608089015160c08a015161290892919061381b565b856020015160400181815250506129308560200151602001518960a001518a60e0015161381b565b60208601516060015250505050949350505050565b82151561297e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155ef565b828211156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155df565b8460a001516129cb856040015184613776565b1115612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061550f565b612a118560800151836137c0565b612a1f828760a001516137c0565b1115612a57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061566f565b5050505050565b612a6c828260200151613776565b600084815260036020908152604091829020929092558681015187518451938501518584015160608701516101408c01516101608d015196518b9873ffffffffffffffffffffffffffffffffffffffff9788169897909616967f0bcc4c97732e47d9946f229edb95f5b6323f601300e4690de719993f3c37112996612afb968f96339692959194909390615345565b60405180910390a45050505050565b60608060405190810160405280602481526020017ff47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f81526020017f4699f498000000000000000000000000000000000000000000000000000000008152509050612b8b85610140015186600001518660000151856020015160200151613935565b61014084015184518651845160200151612ba793929190613935565b612bc08561014001518660000151858560400151613935565b612bdc8186600001518760400151856000015160400151613935565b612bf88185600001518660400151856020015160400151613935565b836040015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff161415612c6257612c5d81848760400151612c58866000015160600151876020015160600151613776565b613935565b612a57565b612c7a81848760400151856000015160600151613935565b612a5781848660400151856020015160600151613935565b604080517fb4be83d5000000000000000000000000000000000000000000000000000000006020808301919091526060602483018181528751608485019081528884015160a48601529488015160c48501529087015160e4840152608087015161010484015260a087015161012484015260c087015161014484015260e08701516101648401526101008701516101848401526101208701516101a4840152610140870180516101c485019081526101608901516101e4860152610180905251805161020485018190529394919384936044870192849261022489019291820191601f82010460005b81811015612d99578351855260209485019490930192600101612d7b565b50505050818103610160808401919091528a0151805180835260209283019291820191601f82010460005b81811015612de2578351855260209485019490930192600101612dc4565b50505089845250848103602093840190815288518083529093918201918981019190601f82010460005b81811015612e2a578351855260209485019490930192600101612e0c565b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08883030188525060405250505050509392505050565b612e6c6142f0565b612e7582611f30565b9050612e818282613aff565b6127ba828260200151613c16565b612e97614298565b612ea2848484612494565b602081015190915083146125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061565f565b600082821115612f1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061551f565b508082035b92915050565b6000808251111515612f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061560f565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612f9757fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b60008160200183511015151561302f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061553f565b50016020015190565b6040516000906060907f1626ba7e00000000000000000000000000000000000000000000000000000000906130739087908690602401615460565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093178352815191935090829081885afa808015613110576001811461318157612527565b7f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0c57414c4c45545f4552524f5200000000000000000000000000000000604052600060605260646000fd5b50505195945050505050565b600060148251101515156131cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061569f565b6131db826014845103613cbd565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec019092525090565b6040516000906060907f93634702000000000000000000000000000000000000000000000000000000009061324390879087908790602401615433565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931783528151919350908290818a5afa8080156132e0576001811461335157613356565b7f08c379a0000000000000000000000000000000000000000000000000000000006000527c20000000000000000000000000000000000000000000000000000000006020527c0f56414c494441544f525f4552524f5200000000000000000000000000604052600060605260646000fd5b825194505b50505050949350505050565b600080831161339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061555f565b6133b06133aa85846137c0565b84613d1e565b949350505050565b604080517f5a65726f45785472616e73616374696f6e2800000000000000000000000000006020808301919091527f75696e743235362073616c742c0000000000000000000000000000000000000060328301527f61646472657373207369676e6572416464726573732c00000000000000000000603f8301527f627974657320646174610000000000000000000000000000000000000000000060558301527f2900000000000000000000000000000000000000000000000000000000000000605f830152825180830384018152606090920192839052815160009384938493909282918401908083835b602083106134e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016134a4565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260405191909301819003812089519097508995509093508392850191508083835b6020831061357757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161353a565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040805192909401829003822097825281019a909a525073ffffffffffffffffffffffffffffffffffffffff97909716968801969096525050606085015250506080909120919050565b6001546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b6000612f23611afd83613d35565b600081831061365657816125bf565b5090919050565b613665614298565b6020810182905260a0830151608084015161368191849161381b565b808252608084015160c085015161369992919061381b565b604082015260a083015160e08401516136b391849161381b565b606082015292915050565b60408051606081018252602481527ff47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f60208201527f4699f4980000000000000000000000000000000000000000000000000000000091810191909152610140840151845183516137319291908690613935565b61374a8461016001518486600001518560200151613935565b61376281856000015186604001518560400151613935565b612758818486604001518560600151613935565b6000828201838110156137b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061558f565b8091505b5092915050565b6000808315156137d357600091506137b9565b508282028284828115156137e357fe5b04146137b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061558f565b6000808311613856576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061555f565b61386184848461418e565b1561339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155bf565b60008083116138d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061555f565b6138de848484614213565b15613915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155bf565b6133b06133aa61392586856137c0565b613930866001612ee2565b613776565b60008060008311801561397457508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613af75785516003106139b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061564f565b50506020848101517fffffffff00000000000000000000000000000000000000000000000000000000166000818152600a90925260409091205473ffffffffffffffffffffffffffffffffffffffff16801515613a3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906155ff565b604051660fffffffffffe0603f885101168060840182017fa85e59e40000000000000000000000000000000000000000000000000000000083526080600484015273ffffffffffffffffffffffffffffffffffffffff8816602484015273ffffffffffffffffffffffffffffffffffffffff87166044840152856064840152608483015b81811015613ad957895181526020998a019901613ac1565b61020084858403866000895af1801515613af1573d85fd5b50505050505b505050505050565b805160009060ff16600314613b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156af565b606083015173ffffffffffffffffffffffffffffffffffffffff1615613bb357606083015173ffffffffffffffffffffffffffffffffffffffff163314613bb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c6906156bf565b613bbb612594565b835190915073ffffffffffffffffffffffffffffffffffffffff808316911614613c11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061557f565b505050565b6000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558281015183516101408501516101608601519351859473ffffffffffffffffffffffffffffffffffffffff9485169493909316927fdc47b3613d9fe400085f6dbdc99453462279057e6207385042827ed6b1a62cf792613cb1923392906153c9565b60405180910390a45050565b600081601401835110151515613cff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061569f565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6000808284811515613d2c57fe5b04949350505050565b604080517f4f726465722800000000000000000000000000000000000000000000000000006020808301919091527f61646472657373206d616b6572416464726573732c000000000000000000000060268301527f616464726573732074616b6572416464726573732c0000000000000000000000603b8301527f6164647265737320666565526563697069656e74416464726573732c0000000060508301527f616464726573732073656e646572416464726573732c00000000000000000000606c8301527f75696e74323536206d616b65724173736574416d6f756e742c0000000000000060828301527f75696e743235362074616b65724173736574416d6f756e742c00000000000000609b8301527f75696e74323536206d616b65724665652c00000000000000000000000000000060b48301527f75696e743235362074616b65724665652c00000000000000000000000000000060c58301527f75696e743235362065787069726174696f6e54696d655365636f6e64732c000060d68301527f75696e743235362073616c742c0000000000000000000000000000000000000060f48301527f6279746573206d616b65724173736574446174612c00000000000000000000006101018301527f62797465732074616b65724173736574446174610000000000000000000000006101168301527f290000000000000000000000000000000000000000000000000000000000000061012a830152825161010b81840301815261012b90920192839052815160009384938493849391929182918401908083835b60208310613fbd57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613f80565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930181900381206101408b0151805191995095509093508392850191508083835b6020831061405857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161401b565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930181900381206101608b0151805191985095509093508392850191508083835b602083106140f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016140b6565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909116921691909117905260405192018290039091207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0890180516101408b018051610160909c0180519a84529881529288526101a0822091529890525050509190525090919050565b6000808084116141ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061555f565b8215806141d5575084155b156141e35760009150610a88565b838015156141ed57fe5b85840990506141fc85846137c0565b6142086103e8836137c0565b101595945050505050565b60008080841161424f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c69061555f565b82158061425a575084155b156142685760009150610a88565b8380151561427257fe5b8584099050836142828583612ee2565b81151561428b57fe5b0690506141fc85846137c0565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b610120604051908101604052806142d6614298565b81526020016142e3614298565b8152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60006125bf82356157c2565b6000601f8201831361432d57600080fd5b813561434061433b82615751565b61572a565b81815260209384019390925082018360005b8381101561437e578135860161436888826144ce565b8452506020928301929190910190600101614352565b5050505092915050565b6000601f8201831361439957600080fd5b81356143a761433b82615751565b81815260209384019390925082018360005b8381101561437e57813586016143cf888261451d565b84525060209283019291909101906001016143b9565b6000601f820183136143f657600080fd5b813561440461433b82615751565b9150818183526020840193506020810190508385602084028201111561442957600080fd5b60005b8381101561437e578161443f8882614461565b845250602092830192919091019060010161442c565b60006125bf82356157db565b60006125bf82356157e0565b60006125bf82356157e3565b60006125bf82516157e3565b600080601f8301841361449757600080fd5b50813567ffffffffffffffff8111156144af57600080fd5b6020830191508360018202830111156144c757600080fd5b9250929050565b6000601f820183136144df57600080fd5b81356144ed61433b82615772565b9150808252602083016020830185838301111561450957600080fd5b614514838284615819565b50505092915050565b6000610180828403121561453057600080fd5b61453b61018061572a565b905060006145498484614310565b825250602061455a84848301614310565b602083015250604061456e84828501614310565b604083015250606061458284828501614310565b606083015250608061459684828501614461565b60808301525060a06145aa84828501614461565b60a08301525060c06145be84828501614461565b60c08301525060e06145d284828501614461565b60e0830152506101006145e784828501614461565b610100830152506101206145fd84828501614461565b6101208301525061014082013567ffffffffffffffff81111561461f57600080fd5b61462b848285016144ce565b6101408301525061016082013567ffffffffffffffff81111561464d57600080fd5b614659848285016144ce565b6101608301525092915050565b60006020828403121561467857600080fd5b60006133b08484614310565b6000806040838503121561469757600080fd5b60006146a38585614310565b92505060206146b485828601614310565b9150509250929050565b600080604083850312156146d157600080fd5b60006146dd8585614310565b92505060206146b485828601614455565b60006020828403121561470057600080fd5b813567ffffffffffffffff81111561471757600080fd5b6133b084828501614388565b60008060006060848603121561473857600080fd5b833567ffffffffffffffff81111561474f57600080fd5b61475b86828701614388565b935050602084013567ffffffffffffffff81111561477857600080fd5b614784868287016143e5565b925050604084013567ffffffffffffffff8111156147a157600080fd5b6147ad8682870161431c565b9150509250925092565b6000806000606084860312156147cc57600080fd5b833567ffffffffffffffff8111156147e357600080fd5b6147ef86828701614388565b935050602061478486828701614461565b60006020828403121561481257600080fd5b60006133b08484614461565b6000806040838503121561483157600080fd5b60006146a38585614461565b6000806000806060858703121561485357600080fd5b600061485f8787614461565b945050602061487087828801614310565b935050604085013567ffffffffffffffff81111561488d57600080fd5b61489987828801614485565b95989497509550505050565b6000806000606084860312156148ba57600080fd5b60006148c68686614461565b93505060206148d786828701614310565b925050604084013567ffffffffffffffff8111156148f457600080fd5b6147ad868287016144ce565b60006020828403121561491257600080fd5b60006133b0848461446d565b60006020828403121561493057600080fd5b60006133b08484614479565b60006020828403121561494e57600080fd5b813567ffffffffffffffff81111561496557600080fd5b6133b08482850161451d565b6000806000806080858703121561498757600080fd5b843567ffffffffffffffff81111561499e57600080fd5b6149aa8782880161451d565b945050602085013567ffffffffffffffff8111156149c757600080fd5b6149d38782880161451d565b935050604085013567ffffffffffffffff8111156149f057600080fd5b6149fc878288016144ce565b925050606085013567ffffffffffffffff811115614a1957600080fd5b614a25878288016144ce565b91505092959194509250565b600080600060608486031215614a4657600080fd5b833567ffffffffffffffff811115614a5d57600080fd5b614a698682870161451d565b93505060206148d786828701614461565b60008060008060008060808789031215614a9357600080fd5b6000614a9f8989614461565b9650506020614ab089828a01614310565b955050604087013567ffffffffffffffff811115614acd57600080fd5b614ad989828a01614485565b9450945050606087013567ffffffffffffffff811115614af857600080fd5b614b0489828a01614485565b92509250509295509295509295565b614b1c816157c2565b82525050565b6000614b2d826157be565b808452602084019350614b3f836157b8565b60005b82811015614b6f57614b558683516152f7565b614b5e826157b8565b606096909601959150600101614b42565b5093949350505050565b614b1c816157db565b614b1c816157e0565b614b1c816157e3565b6000614b9f826157be565b808452614bb3816020860160208601615825565b614bbc81615851565b9093016020019392505050565b614b1c8161580e565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b600d81527f494e56414c49445f54414b455200000000000000000000000000000000000000602082015260400190565b600e81527f4f524445525f4f56455246494c4c000000000000000000000000000000000000602082015260400190565b601181527f55494e543235365f554e444552464c4f57000000000000000000000000000000602082015260400190565b601a81527f41535345545f50524f58595f414c52454144595f455849535453000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b601081527f4449564953494f4e5f42595f5a45524f00000000000000000000000000000000602082015260400190565b601781527f494e56414c49445f4f524445525f5349474e4154555245000000000000000000602082015260400190565b600d81527f494e56414c49445f4d414b455200000000000000000000000000000000000000602082015260400190565b601081527f55494e543235365f4f564552464c4f5700000000000000000000000000000000602082015260400190565b600f81527f494e56414c49445f54585f484153480000000000000000000000000000000000602082015260400190565b601181527f494e56414c49445f5349474e4154555245000000000000000000000000000000602082015260400190565b600e81527f524f554e44494e475f4552524f52000000000000000000000000000000000000602082015260400190565b601081527f4641494c45445f455845435554494f4e00000000000000000000000000000000602082015260400190565b600d81527f54414b45525f4f56455250415900000000000000000000000000000000000000602082015260400190565b601481527f494e56414c49445f54414b45525f414d4f554e54000000000000000000000000602082015260400190565b601a81527f41535345545f50524f58595f444f45535f4e4f545f4558495354000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b601781527f494e56414c49445f4e45575f4f524445525f45504f4348000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f335f52455155495245440000602082015260400190565b601481527f434f4d504c4554455f46494c4c5f4641494c4544000000000000000000000000602082015260400190565b601281527f494e56414c49445f46494c4c5f50524943450000000000000000000000000000602082015260400190565b601281527f5245454e5452414e43595f494c4c4547414c0000000000000000000000000000602082015260400190565b601381527f4f4e4c595f434f4e54524143545f4f574e455200000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f32305f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601081527f4f524445525f554e46494c4c41424c4500000000000000000000000000000000602082015260400190565b600e81527f494e56414c49445f53454e444552000000000000000000000000000000000000602082015260400190565b601881527f4e454741544956455f5350524541445f52455155495245440000000000000000602082015260400190565b601481527f494e56414c49445f54585f5349474e4154555245000000000000000000000000602082015260400190565b601181527f4c454e4754485f305f5245515549524544000000000000000000000000000000602082015260400190565b805160808301906152858482614b82565b5060208201516152986020850182614b82565b5060408201516152ab6040850182614b82565b5060608201516127586060850182614b82565b80516101208301906152d08482615274565b5060208201516152e36080850182615274565b506040820151612758610100850182614b82565b80516060830190615308848261532e565b50602082015161531b6020850182614b82565b5060408201516127586040850182614b82565b614b1c81615808565b60208101612f238284614b13565b6101008101615354828b614b13565b615361602083018a614b13565b61536e6040830189614b82565b61537b6060830188614b82565b6153886080830187614b82565b61539560a0830186614b82565b81810360c08301526153a78185614b94565b905081810360e08301526153bb8184614b94565b9a9950505050505050505050565b606081016153d78286614b13565b81810360208301526153e98185614b94565b905081810360408301526153fd8184614b94565b95945050505050565b602080825281016125bf8184614b22565b60208101612f238284614b79565b60208101612f238284614b82565b606081016154418286614b82565b61544e6020830185614b13565b81810360408301526153fd8184614b94565b6040810161546e8285614b82565b81810360208301526133b08184614b94565b6080810161548e8287614b82565b61549b602083018661532e565b6154a86040830185614b82565b6153fd6060830184614b82565b604081016154c38285614b8b565b6125bf6020830184614b13565b602080825281016125bf8184614b94565b60208101612f238284614bc9565b60208082528101612f2381614bd2565b60208082528101612f2381614c02565b60208082528101612f2381614c32565b60208082528101612f2381614c62565b60208082528101612f2381614c92565b60208082528101612f2381614cc2565b60208082528101612f2381614d18565b60208082528101612f2381614d48565b60208082528101612f2381614d78565b60208082528101612f2381614da8565b60208082528101612f2381614dd8565b60208082528101612f2381614e08565b60208082528101612f2381614e38565b60208082528101612f2381614e68565b60208082528101612f2381614e98565b60208082528101612f2381614ec8565b60208082528101612f2381614ef8565b60208082528101612f2381614f28565b60208082528101612f2381614f58565b60208082528101612f2381614fae565b60208082528101612f2381614fde565b60208082528101612f238161500e565b60208082528101612f238161503e565b60208082528101612f238161506e565b60208082528101612f238161509e565b60208082528101612f23816150ce565b60208082528101612f23816150fe565b60208082528101612f238161512e565b60208082528101612f2381615184565b60208082528101612f23816151b4565b60208082528101612f23816151e4565b60208082528101612f2381615214565b60208082528101612f2381615244565b60808101612f238284615274565b6101208101612f2382846152be565b60608101612f2382846152f7565b60405181810167ffffffffffffffff8111828210171561574957600080fd5b604052919050565b600067ffffffffffffffff82111561576857600080fd5b5060209081020190565b600067ffffffffffffffff82111561578957600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b73ffffffffffffffffffffffffffffffffffffffff1690565b151590565b90565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b60ff1690565b6000612f23826157c2565b82818337506000910152565b60005b83811015615840578181015183820152602001615828565b838111156127585750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905600a265627a7a72305820b19c92201032603398c007dccf80930c626ef89fa6c848c8b7ef5267d07cd4ed6c6578706572696d656e74616cf50037
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Flapper.abi b/chief_keeper/makerdao_utils/abi/Flapper.abi
new file mode 100644
index 0000000..ee7f840
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flapper.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"gem_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"}],"name":"Kick","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"beg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bids","outputs":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint48","name":"tic","type":"uint48"},{"internalType":"uint48","name":"end","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"deal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"kick","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tau","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"tend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tick","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ttl","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"yank","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Flapper.bin b/chief_keeper/makerdao_utils/abi/Flapper.bin
new file mode 100644
index 0000000..d09f94a
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flapper.bin
@@ -0,0 +1 @@
+6080604052670e92596fd6290000600455612a30600560006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a300600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060065534801561007057600080fd5b506040516124dd3803806124dd8339818101604052604081101561009357600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160078190555050506123508061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063957aa58c116100a2578063c959c42b11610071578063c959c42b14610479578063ca40c419146104a7578063cfc4af55146104f3578063cfdd330214610521578063fc7b6aee1461053f57610116565b8063957aa58c146103915780639c52a7f1146103af578063a2f91af2146103f3578063bf353dbb1461042157610116565b80634b43ed12116100e95780634b43ed12146102755780634e8b1dd5146102b757806365fae35e146102e55780637bd2bea7146103295780637d780d821461037357610116565b806326e027f11461011b57806329ae81141461014957806336569e77146101815780634423c5f1146101cb575b600080fd5b6101476004803603602081101561013157600080fd5b810190808035906020019092919050505061056d565b005b61017f6004803603604081101561015f57600080fd5b8101908080359060200190929190803590602001909291905050506108b4565b005b610189610ae7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f7600480360360208110156101e157600080fd5b8101908080359060200190929190505050610b0d565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b6102b56004803603606081101561028b57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610b87565b005b6102bf6113d1565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b610327600480360360208110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e9565b005b610331611517565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037b61153d565b6040518082815260200191505060405180910390f35b610399611543565b6040518082815260200191505060405180910390f35b6103f1600480360360208110156103c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611549565b005b61041f6004803603602081101561040957600080fd5b8101908080359060200190929190505050611677565b005b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185e565b6040518082815260200191505060405180910390f35b6104a56004803603602081101561048f57600080fd5b8101908080359060200190929190505050611876565b005b6104dd600480360360408110156104bd57600080fd5b810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b6104fb6120d0565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105296120e8565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b81019080803590602001909291905050506120ee565b005b6000600754146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c61707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f626567000000000000000000000000000000000000000000000000000000000082141561099c5780600481905550610ab0565b7f74746c00000000000000000000000000000000000000000000000000000000008214156109ee5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aaf565b7f7461750000000000000000000000000000000000000000000000000000000000821415610a405780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aae565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c61707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600160075414610bff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610d46575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548214610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c61707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111610f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b610f9560045460016000868152602001908152602001600020600001546122c5565b610fa782670de0b6b3a76400006122c5565b101561101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c61707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b5050505080600160008581526020019081526020016000206000018190555061136142600560009054906101000a900465ffffffffffff166122f1565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461172b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600781905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600754146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16141580156119985750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108061199757504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600101546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac3060016000858152602001908152602001600020600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160075414611e05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410611e9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f5642600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b505050507fe6dde59cbc017becba89714a037778d234a84ce7f0a137487142a007e580d60981848460405180848152602001838152602001828152602001935050505060405180910390a192915050565b600560069054906101000a900465ffffffffffff1681565b60065481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c61707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b61225742600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000808214806122e257508282838502925082816122df57fe5b04145b6122eb57600080fd5b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561231557600080fd5b9291505056fea265627a7a72315820d6c4424718c63a24f03a9a3fa91efec71d8fa5e4ab1a2704f91ad2437043c24564736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Flipper.abi b/chief_keeper/makerdao_utils/abi/Flipper.abi
new file mode 100644
index 0000000..44917ef
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flipper.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"cat_","type":"address"},{"internalType":"bytes32","name":"ilk_","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tab","type":"uint256"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"address","name":"gal","type":"address"}],"name":"Kick","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"beg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bids","outputs":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint48","name":"tic","type":"uint48"},{"internalType":"uint48","name":"end","type":"uint48"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"address","name":"gal","type":"address"},{"internalType":"uint256","name":"tab","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cat","outputs":[{"internalType":"contract CatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"deal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"dent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"address","name":"gal","type":"address"},{"internalType":"uint256","name":"tab","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"kick","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tau","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"tend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tick","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ttl","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"yank","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Flipper.bin b/chief_keeper/makerdao_utils/abi/Flipper.bin
new file mode 100644
index 0000000..cdbea52
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flipper.bin
@@ -0,0 +1 @@
+6080604052670e92596fd6290000600455612a30600560006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a300600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060065534801561007057600080fd5b5060405161325d38038061325d8339818101604052606081101561009357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038190555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050506130c6806101976000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637d780d82116100ad578063cfc4af5511610071578063cfc4af551461057f578063cfdd3302146105ad578063d4e8be83146105cb578063e488181314610619578063fc7b6aee1461066357610121565b80637d780d82146104795780639c52a7f114610497578063bf353dbb146104db578063c5ce281e14610533578063c959c42b1461055157610121565b80634423c5f1116100f45780634423c5f11461026c5780634b43ed12146103835780634e8b1dd5146103c55780635ff3a382146103f357806365fae35e1461043557610121565b806326e027f11461012657806329ae811414610154578063351de6001461018c57806336569e7714610222575b600080fd5b6101526004803603602081101561013c57600080fd5b8101908080359060200190929190505050610691565b005b61018a6004803603604081101561016a57600080fd5b810190808035906020019092919080359060200190929190505050610cc3565b005b61020c600480360360a08110156101a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610ef6565b6040518082815260200191505060405180910390f35b61022a61137f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102986004803603602081101561028257600080fd5b81019080803590602001909291905050506113a5565b604051808981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018665ffffffffffff1665ffffffffffff1681526020018565ffffffffffff1665ffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019850505050505050505060405180910390f35b6103c36004803603606081101561039957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611471565b005b6103cd611d25565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6104336004803603606081101561040957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611d3d565b005b6104776004803603602081101561044b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125c4565b005b6104816126f2565b6040518082815260200191505060405180910390f35b6104d9600480360360208110156104ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f8565b005b61051d600480360360208110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612826565b6040518082815260200191505060405180910390f35b61053b61283e565b6040518082815260200191505060405180910390f35b61057d6004803603602081101561056757600080fd5b8101908080359060200190929190505050612844565b005b610587612c59565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105b5612c71565b6040518082815260200191505060405180910390f35b610617600480360360408110156105e157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c77565b005b610621612e3e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61068f6004803603602081101561067957600080fd5b8101908080359060200190929190505050612e64565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610745576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561081e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b60016000828152602001908152602001600020600501546001600083815260200190815260200160002060000154106108bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f616c72656164792d64656e742d706861736500000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e66d279b60016000848152602001908152602001600020600501546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561094a57600080fd5b505af115801561095e573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354303360016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610ba057600080fd5b505af1158015610bb4573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610dab5780600481905550610ebf565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610dfd5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610ebe565b7f7461750000000000000000000000000000000000000000000000000000000000821415610e4f5780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610ebd565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410611043576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c69707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110fd42600560069054906101000a900465ffffffffffff1661303b565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550856001600083815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846001600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836001600083815260200190815260200160002060050181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e6003543330876040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156112e157600080fd5b505af11580156112f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc84ce3a1172f0dec3173f04caaa6005151a4bfe40d4c9f3ea28dba5f719b2a7a838686896040518085815260200184815260200183815260200182815260200194505050505060405180910390a395945050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154905088565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561154a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1611806115b8575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b61162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16116116cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154821461175a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600501548111156117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f466c69707065722f6869676865722d7468616e2d74616200000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111611871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b6118936004546001600086815260200190815260200160002060000154613065565b6118a582670de0b6b3a7640000613065565b1015806118c75750600160008481526020019081526020016000206005015481145b611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b3957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611acb57600080fd5b505af1158015611adf573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611c6457600080fd5b505af1158015611c78573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000181905550611cb542600560009054906101000a900465ffffffffffff1661303b565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180611e84575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b611ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611611f9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114612026576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b600160008481526020019081526020016000206005015481146120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466c69707065722f74656e642d6e6f742d66696e69736865640000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154821061213c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c69707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6121646001600085815260200190815260200160002060010154670de0b6b3a7640000613065565b61217060045484613065565b11156121e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123ce57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561236057600080fd5b505af1158015612374573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600088815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600160008a815260200190815260200160002060010154036040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561250357600080fd5b505af1158015612517573d6000803e3d6000fd5b5050505081600160008581526020019081526020016000206001018190555061255442600560009054906101000a900465ffffffffffff1661303b565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60035481565b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16141580156128ee5750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1610806128ed57504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b612960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e66d279b60016000848152602001908152602001600020600501546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156129eb57600080fd5b505af11580156129ff573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600086815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b158015612b3657600080fd5b505af1158015612b4a573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560069054906101000a900465ffffffffffff1681565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612d2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6361740000000000000000000000000000000000000000000000000000000000821415612d995780600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e07565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612f09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b612fcd42600560069054906101000a900465ffffffffffff1661303b565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008265ffffffffffff1682840191508165ffffffffffff16101561305f57600080fd5b92915050565b600080821480613082575082828385029250828161307f57fe5b04145b61308b57600080fd5b9291505056fea265627a7a723158208e4d02abe4b9d0af175f274f66496c935ac129113d240f72afe64b7f8490c24564736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Flopper.abi b/chief_keeper/makerdao_utils/abi/Flopper.abi
new file mode 100644
index 0000000..f86c86d
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flopper.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"gem_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"},{"indexed":true,"internalType":"address","name":"gal","type":"address"}],"name":"Kick","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"beg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bids","outputs":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint48","name":"tic","type":"uint48"},{"internalType":"uint48","name":"end","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"deal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"dent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gal","type":"address"},{"internalType":"uint256","name":"lot","type":"uint256"},{"internalType":"uint256","name":"bid","type":"uint256"}],"name":"kick","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tau","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tick","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ttl","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"yank","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Flopper.bin b/chief_keeper/makerdao_utils/abi/Flopper.bin
new file mode 100644
index 0000000..47842b5
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Flopper.bin
@@ -0,0 +1 @@
+6080604052670e92596fd62900006004556714d1120d7b160000600555612a30600660006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a3006006806101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060075534801561007b57600080fd5b5060405161242c38038061242c8339818101604052604081101561009e57600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008819055505050612294806101986000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80637d780d82116100ad578063bf353dbb11610071578063bf353dbb146104e7578063c959c42b1461053f578063cfc4af551461056d578063cfdd33021461059b578063fc7b6aee146105b95761012c565b80637d780d82146103dd5780639361266c146103fb578063957aa58c146104195780639c52a7f114610437578063b7e9cd241461047b5761012c565b80635ff3a382116100f45780635ff3a382146102b9578063626cb3c5146102fb57806365fae35e1461034557806369245009146103895780637bd2bea7146103935761012c565b806326e027f11461013157806329ae81141461015f57806336569e77146101975780634423c5f1146101e15780634e8b1dd51461028b575b600080fd5b61015d6004803603602081101561014757600080fd5b81019080803590602001909291905050506105e7565b005b6101956004803603604081101561017557600080fd5b810190808035906020019092919080359060200190929190505050610950565b005b61019f610bb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020d600480360360208110156101f757600080fd5b8101908080359060200190929190505050610bdd565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b610293610c57565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6102f9600480360360608110156102cf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610c6f565b005b610303611538565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103876004803603602081101561035b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155e565b005b61039161168c565b005b61039b6117be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e56117e4565b6040518082815260200191505060405180910390f35b6104036117ea565b6040518082815260200191505060405180910390f35b6104216117f0565b6040518082815260200191505060405180910390f35b6104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f6565b005b6104d16004803603606081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611924565b6040518082815260200191505060405180910390f35b610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c3f565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b8101908080359060200190929190505050611c57565b005b610575611fad565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105a3611fc4565b6040518082815260200191505060405180910390f35b6105e5600480360360208110156105cf57600080fd5b8101908080359060200190929190505050611fca565b005b60006008541461065f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c6f707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610738576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561088357600080fd5b505af1158015610897573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610a385780600481905550610b80565b7f7061640000000000000000000000000000000000000000000000000000000000821415610a6c5780600581905550610b7f565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610abe5780600660006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7e565b7f7461750000000000000000000000000000000000000000000000000000000000821415610b0f57806006806101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c6f707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600660009054906101000a900465ffffffffffff1681565b600160085414610ce7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610dc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610e2e575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610f45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c6f707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154821061105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c6f707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6110836001600085815260200190815260200160002060010154670de0b6b3a76400006121ed565b61108f600454846121ed565b1115611103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c6f707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461148f57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561127f57600080fd5b505af1158015611293573d6000803e3d6000fd5b5050505060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614156114395760006001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a1d2b3c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561135057600080fd5b505af1158015611364573d6000803e3d6000fd5b505050506040513d602081101561137a57600080fd5b810190808051906020019092919050505090506001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632506855a6113e98484612219565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8160016000858152602001908152602001600020600101819055506114c842600660009054906101000a900465ffffffffffff16612235565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600060088190555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60055481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160085414611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075410611ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6007600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550836001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba2426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167f7e8881001566f9f89aedb9c5dc3d856a2b81e5235a8196413ed484be91cc0df682858560405180848152602001838152602001828152602001935050505060405180910390a29392505050565b60006020528060005260406000206000915090505481565b600160085414611ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614158015611d795750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161080611d7857504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000858152602001908152602001600020600101546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ee057600080fd5b505af1158015611ef4573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6006809054906101000a900465ffffffffffff1681565b60075481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff161061206f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c6f707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b670de0b6b3a764000061214060055460016000858152602001908152602001600020600101546121ed565b8161214757fe5b04600160008381526020019081526020016000206001018190555061217f426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008082148061220a575082828385029250828161220757fe5b04145b61221357600080fd5b92915050565b60008183111561222b5781905061222f565b8290505b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561225957600080fd5b9291505056fea265627a7a72315820cfc72d36e81b723c4aa18d6db40f0f3831c7cb488e1cd3eb83abf4ebd888f6cb64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/GemJoin.abi b/chief_keeper/makerdao_utils/abi/GemJoin.abi
new file mode 100644
index 0000000..7c76e4d
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/GemJoin.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"bytes32","name":"ilk_","type":"bytes32"},{"internalType":"address","name":"gem_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/GemJoin.bin b/chief_keeper/makerdao_utils/abi/GemJoin.bin
new file mode 100644
index 0000000..8857204
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/GemJoin.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051610f6e380380610f6e8339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160058190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160028190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b8101908080519060200190929190505050600481905550505050610d86806101e86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101de5780639c52a7f1146101fc578063b3bcfa8214610240578063bf353dbb1461025e578063c5ce281e146102b6578063ef693bed146102d4576100a9565b806336569e77146100ae5780633b4da69f146100f857806365fae35e14610146578063692450091461018a5780637bd2bea714610194575b600080fd5b6100b6610322565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446004803603604081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610348565b005b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c3565b005b6101926107f1565b005b61019c6108e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e6610908565b6040518082815260200191505060405180910390f35b61023e6004803603602081101561021257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090e565b005b610248610a3c565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a42565b6040518082815260200191505060405180910390f35b6102be610a5a565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600554146103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b6000811215610437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156104ea57600080fd5b505af11580156104fe573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d602081101561060957600080fd5b810190808051906020019092919050505061068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60006020528060005260406000206000915090505481565b60025481565b7f8000000000000000000000000000000000000000000000000000000000000000811115610af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025433846000036040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bac57600080fd5b505af1158015610bc0573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b8101908080519060200190929190505050610d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505056fea265627a7a723158207f38bb89949fe9167653379f6105621f900f4c0d40e581626d30d4ce5bc3d4bc64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/GemJoin5.abi b/chief_keeper/makerdao_utils/abi/GemJoin5.abi
new file mode 100644
index 0000000..6fe87ff
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/GemJoin5.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"bytes32","name":"ilk_","type":"bytes32"},{"internalType":"address","name":"gem_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"internalType":"contract GemLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ilk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/GemJoin5.bin b/chief_keeper/makerdao_utils/abi/GemJoin5.bin
new file mode 100644
index 0000000..5612027
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/GemJoin5.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051610f52380380610f528339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561010157600080fd5b505afa158015610115573d6000803e3d6000fd5b505050506040513d602081101561012b57600080fd5b810190808051906020019092919050505060ff166004819055506012600454106101bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f47656d4a6f696e352f646563696d616c732d31382d6f722d686967686572000081525060200191505060405180910390fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160058190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600281905550505050610cef806102636000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101de5780639c52a7f1146101fc578063b3bcfa8214610240578063bf353dbb1461025e578063c5ce281e146102b6578063ef693bed146102d4576100a9565b806336569e77146100ae5780633b4da69f146100f857806365fae35e14610146578063692450091461018a5780637bd2bea714610194575b600080fd5b6100b6610322565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446004803603604081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610348565b005b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106da565b005b61019261079f565b005b61019c610827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e661084d565b6040518082815260200191505060405180910390f35b61023e6004803603602081101561021257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610853565b005b610248610918565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061091e565b6040518082815260200191505060405180910390f35b6102be610936565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061093c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600554146103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f47656d4a6f696e352f6e6f742d6c69766500000000000000000000000000000081525060200191505060405180910390fd5b60006103d482600454601203600a0a610c25565b9050600081121561044d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f47656d4a6f696e352f6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025485846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561050057600080fd5b505af1158015610514573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b505050506040513d602081101561061f57600080fd5b81019080805190602001909291905050506106a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f47656d4a6f696e352f6661696c65642d7472616e73666572000000000000000081525060200191505060405180910390fd5b505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461072557600080fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107ea57600080fd5b60006005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461089e57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60006020528060005260406000206000915090505481565b60025481565b600061095082600454601203600a0a610c25565b905060008112156109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f47656d4a6f696e352f6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025433846000036040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b4057600080fd5b505af1158015610b54573d6000803e3d6000fd5b505050506040513d6020811015610b6a57600080fd5b8101908080519060200190929190505050610bed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f47656d4a6f696e352f6661696c65642d7472616e73666572000000000000000081525060200191505060405180910390fd5b505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600080821480610c425750828283850292508281610c3f57fe5b04145b610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f47656d4a6f696e352f6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a7231582059b347d874ac6630eeba8dd4a7f023ef5ddc411b962f81ff6b31138662bf720964736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Jug.abi b/chief_keeper/makerdao_utils/abi/Jug.abi
new file mode 100644
index 0000000..6dfdd40
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Jug.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"base","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"drip","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"uint256","name":"duty","type":"uint256"},{"internalType":"uint256","name":"rho","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Jug.bin b/chief_keeper/makerdao_utils/abi/Jug.bin
new file mode 100644
index 0000000..1a05786
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Jug.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5060405161131b38038061131b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611242806100d96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063626cb3c511610071578063626cb3c51461020b57806365fae35e146102555780639c52a7f114610299578063bf353dbb146102dd578063d4e8be8314610335578063d9638d3614610383576100b4565b80631a0b287e146100b957806329ae8114146100fb57806336569e77146101335780633b6631951461017d57806344e2a5a8146101ab5780635001f3b5146101ed575b600080fd5b6100f9600480360360608110156100cf57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506103cc565b005b6101316004803603604081101561011157600080fd5b8101908080359060200190929190803590602001909291905050506105f9565b005b61013b610786565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a96004803603602081101561019357600080fd5b81019080803590602001909291905050506107ac565b005b6101d7600480360360208110156101c157600080fd5b8101908080359060200190929190505050610946565b6040518082815260200191505060405180910390f35b6101f5610c35565b6040518082815260200191505060405180910390f35b610213610c3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102976004803603602081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b005b6102db600480360360208110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8f565b005b61031f600480360360208110156102f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebd565b6040518082815260200191505060405180910390f35b6103816004803603604081101561034b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed5565b005b6103af6004803603602081101561039957600080fd5b810190808035906020019092919050505061109c565b604051808381526020018281526020019250505060405180910390f35b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154421461050b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4a75672f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f6475747900000000000000000000000000000000000000000000000000000000821415610553578060016000858152602001908152602001600020600001819055506105c1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f62617365000000000000000000000000000000000000000000000000000000008214156106e1578060048190555061074f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600060016000838152602001908152602001600020905060008160000154146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4a75672f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce80000008160000181905550428160010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000838152602001908152602001600020600101544210156109d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a75672f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b8152600401808281526020019150506040805180830381600087803b158015610a4a57600080fd5b505af1158015610a5e573d6000803e3d6000fd5b505050506040513d6040811015610a7457600080fd5b810190808051906020019092919080519060200190929190505050915050610aeb610ae5610aba60045460016000888152602001908152602001600020600001546110c0565b600160008781526020019081526020016000206001015442036b033b2e3c9fd0803ce80000006110da565b826111a0565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b65337df84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5986866111e5565b6040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bc957600080fd5b505af1158015610bdd573d6000803e3d6000fd5b50505050426001600085815260200190815260200160002060010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450919050565b60045481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f770000000000000000000000000000000000000000000000000000000000821415610ff75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611065565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000154908060010154905082565b60008183019050828110156110d457600080fd5b92915050565b600083600081146111805760028406600081146110f9578592506110fd565b8392505b50600283046002850494505b841561117a57858602868782041461112057600080fd5b8181018181101561113057600080fd5b8581049750600287061561116d57878502858982041415891515161561115557600080fd5b8381018181101561116557600080fd5b878104965050505b5050600285049450611109565b50611198565b83600081146111925760009250611196565b8392505b505b509392505050565b6000818302905060008214806111be5750828282816111bb57fe5b04145b6111c757600080fd5b6b033b2e3c9fd0803ce800000081816111dc57fe5b04905092915050565b60008183039050600083121580156111fe575060008212155b61120757600080fd5b9291505056fea265627a7a72315820359db8d1517d3de3eb2acdf5a38b9be5365fc03b07801962d038edabe70904f864736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.abi b/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.abi
new file mode 100644
index 0000000..5929dce
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[{"name":"otc","type":"address"},{"name":"payToken","type":"address"},{"name":"buyToken","type":"address"}],"name":"getOffers","outputs":[{"name":"ids","type":"uint256[100]"},{"name":"payAmts","type":"uint256[100]"},{"name":"buyAmts","type":"uint256[100]"},{"name":"owners","type":"address[100]"},{"name":"timestamps","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"otc","type":"address"},{"name":"buyToken","type":"address"},{"name":"buyAmt","type":"uint256"},{"name":"payToken","type":"address"}],"name":"getOffersAmountToBuyAll","outputs":[{"name":"ordersToTake","type":"uint256"},{"name":"takesPartialOrder","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"otc","type":"address"},{"name":"offerId","type":"uint256"}],"name":"getOffers","outputs":[{"name":"ids","type":"uint256[100]"},{"name":"payAmts","type":"uint256[100]"},{"name":"buyAmts","type":"uint256[100]"},{"name":"owners","type":"address[100]"},{"name":"timestamps","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"otc","type":"address"},{"name":"payToken","type":"address"},{"name":"payAmt","type":"uint256"},{"name":"buyToken","type":"address"}],"name":"getOffersAmountToSellAll","outputs":[{"name":"ordersToTake","type":"uint256"},{"name":"takesPartialOrder","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.bin b/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.bin
new file mode 100644
index 0000000..66d920b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/MakerOtcSupportMethods.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50611141806100206000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806311ce7a65146100675780639174d449146101e2578063ea98a9501461028e578063fdd93d4b146103d3575b600080fd5b34801561007357600080fd5b506100e8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061047f565b6040518086606460200280838360005b838110156101135780820151818401526020810190506100f8565b5050505090500185606460200280838360005b83811015610141578082015181840152602081019050610126565b5050505090500184606460200280838360005b8381101561016f578082015181840152602081019050610154565b5050505090500183606460200280838360005b8381101561019d578082015181840152602081019050610182565b5050505090500182606460200280838360005b838110156101cb5780820151818401526020810190506101b0565b505050509050019550505050505060405180910390f35b3480156101ee57600080fd5b5061026d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d9565b60405180838152602001821515151581526020019250505060405180910390f35b34801561029a57600080fd5b506102d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e3565b6040518086606460200280838360005b838110156103045780820151818401526020810190506102e9565b5050505090500185606460200280838360005b83811015610332578082015181840152602081019050610317565b5050505090500184606460200280838360005b83811015610360578082015181840152602081019050610345565b5050505090500183606460200280838360005b8381101561038e578082015181840152602081019050610373565b5050505090500182606460200280838360005b838110156103bc5780820151818401526020810190506103a1565b505050509050019550505050505060405180910390f35b3480156103df57600080fd5b5061045e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca3565b60405180838152602001821515151581526020019250505060405180910390f35b6104876110cd565b61048f6110cd565b6104976110cd565b61049f6110f1565b6104a76110cd565b6105ba888973ffffffffffffffffffffffffffffffffffffffff16630374fc6f8a8a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561057a57600080fd5b505af115801561058e573d6000803e3d6000fd5b505050506040513d60208110156105a457600080fd5b81019080805190602001909291905050506109e3565b8095508196508297508398508499505050505050939792965093509350565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff16630374fc6f89886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156106b057600080fd5b505af11580156106c4573d6000803e3d6000fd5b505050506040513d60208110156106da57600080fd5b8101908080519060200190929190505050925060009450869150600090508873ffffffffffffffffffffffffffffffffffffffff16638a72ea6a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b15801561076757600080fd5b505af115801561077b573d6000803e3d6000fd5b505050506040513d60c081101561079157600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192935090919250909150905050809150505b808211156109be57848060010195505061080282826110b1565b915060008211156109b9578873ffffffffffffffffffffffffffffffffffffffff1663943911bc846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561087c57600080fd5b505af1158015610890573d6000803e3d6000fd5b505050506040513d60208110156108a657600080fd5b81019080805190602001909291905050509250600083141515156108c957600080fd5b8873ffffffffffffffffffffffffffffffffffffffff16638a72ea6a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d60c081101561096257600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192935090919250909150905050809150505b6107e8565b8082146109cb57846109d0565b600185015b9450808210935050505094509492505050565b6109eb6110cd565b6109f36110cd565b6109fb6110cd565b610a036110f1565b610a0b6110cd565b60008090505b8773ffffffffffffffffffffffffffffffffffffffff16638a72ea6a886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b158015610a8057600080fd5b505af1158015610a94573d6000803e3d6000fd5b505050506040513d60c0811015610aaa57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919293509091508067ffffffffffffffff1690508885606481101515610b1057fe5b602002018886606481101515610b2257fe5b602002018887606481101515610b3457fe5b602002018888606481101515610b4657fe5b60200201848152508473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525084815250848152505050505060008382606481101515610b9a57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff161415610bc057610c98565b868682606481101515610bcf57fe5b6020020181815250508773ffffffffffffffffffffffffffffffffffffffff1663943911bc886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b810190808051906020019092919050505096506064816001019150811015610c9857610a11565b509295509295909350565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff16630374fc6f878a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b505050506040513d6020811015610da457600080fd5b8101908080519060200190929190505050925060009450869150600090508873ffffffffffffffffffffffffffffffffffffffff16638a72ea6a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d60c0811015610e5b57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929394509091929350909150905050809150505b8082111561108c578480600101955050610ece82826110b1565b91506000821115611087578873ffffffffffffffffffffffffffffffffffffffff1663943911bc846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610f4857600080fd5b505af1158015610f5c573d6000803e3d6000fd5b505050506040513d6020811015610f7257600080fd5b8101908080519060200190929190505050925060008314151515610f9557600080fd5b8873ffffffffffffffffffffffffffffffffffffffff16638a72ea6a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060c060405180830381600087803b15801561100457600080fd5b505af1158015611018573d6000803e3d6000fd5b505050506040513d60c081101561102e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929394509091929350909150905050809150505b610eb4565b808214611099578461109e565b600185015b9450808210935050505094509492505050565b600082828403915081111515156110c757600080fd5b92915050565b610c8060405190810160405280606490602082028038833980820191505090505090565b610c80604051908101604052806064906020820280388339808201915050905050905600a165627a7a7230582050502c09e14570354f849500e85d71100da41f0c0ee81b5ccd9075f6088a6b7c0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/MatchingMarket.abi b/chief_keeper/makerdao_utils/abi/MatchingMarket.abi
new file mode 100644
index 0000000..c40f5a4
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/MatchingMarket.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"_dustToken","type":"address"},{"internalType":"uint256","name":"_dustLimit","type":"uint256"},{"internalType":"address","name":"_priceOracle","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogBump","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"keeper","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogDelete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"keeper","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogInsert","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogItemUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogKill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogMake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"uint256","name":"min_amount","type":"uint256"}],"name":"LogMinSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogSortedOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":true,"internalType":"address","name":"taker","type":"address"},{"indexed":false,"internalType":"uint128","name":"take_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"give_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogTake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"pay_amt","type":"uint256"},{"indexed":true,"internalType":"address","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"uint256","name":"buy_amt","type":"uint256"},{"indexed":true,"internalType":"address","name":"buy_gem","type":"address"}],"name":"LogTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogUnsortedOffer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_best","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_near","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_rank","outputs":[{"internalType":"uint256","name":"next","type":"uint256"},{"internalType":"uint256","name":"prev","type":"uint256"},{"internalType":"uint256","name":"delb","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_span","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id_","type":"bytes32"}],"name":"bump","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"max_fill_amount","type":"uint256"}],"name":"buyAllAmount","outputs":[{"internalType":"uint256","name":"fill_amt","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancel","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"del_rank","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dustLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dustToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"sell_gem","type":"address"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"}],"name":"getBestOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getBetterOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"pay_amt","type":"uint256"}],"name":"getBuyAmount","outputs":[{"internalType":"uint256","name":"fill_amt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getFirstUnsortedOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"}],"name":"getMinSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getNextUnsortedOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract ERC20","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"sell_gem","type":"address"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"}],"name":"getOfferCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"}],"name":"getPayAmount","outputs":[{"internalType":"uint256","name":"fill_amt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getWorseOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"pos","type":"uint256"}],"name":"insert","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"isActive","outputs":[{"internalType":"bool","name":"active","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"isOfferSorted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"last_offer_id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint128","name":"pay_amt","type":"uint128"},{"internalType":"uint128","name":"buy_amt","type":"uint128"}],"name":"make","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint256","name":"pos","type":"uint256"}],"name":"offer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint256","name":"pos","type":"uint256"},{"internalType":"bool","name":"rounding","type":"bool"}],"name":"offer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"}],"name":"offer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"offers","outputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint256","name":"min_fill_amount","type":"uint256"}],"name":"sellAllAmount","outputs":[{"internalType":"uint256","name":"fill_amt","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"}],"name":"setMinSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint128","name":"maxTakeAmount","type":"uint128"}],"name":"take","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/MatchingMarket.bin b/chief_keeper/makerdao_utils/abi/MatchingMarket.bin
new file mode 100644
index 0000000..b14ae5b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/MatchingMarket.bin
@@ -0,0 +1 @@
+60806040523480156200001157600080fd5b506040516200575a3803806200575a833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a8190555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200011b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546200012460201b60201c565b505050620001d7565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fc28d56449b0bb31e64ee7487e061f57a2e72aea8019d810832f26dda099823d08282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b61557380620001e76000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637ca9429a11610130578063a78d4316116100b8578063d2b420ce1161007c578063d2b420ce14610e08578063d6febde814610e4e578063e1a6f01414610e9e578063f09ea2a614610f40578063ff1fd97414610fcc57610227565b8063a78d431614610cbc578063b4f9b6c814610cfe578063c2d526aa14610d2c578063c41a360a14610d7c578063cf71efa914610dea57610227565b80638af82a2e116100ff5780638af82a2e14610b7e578063911550f414610b9c57806391be90c814610bde578063943911bc14610c365780639ca3763214610c7857610227565b80637ca9429a146109375780638185402b146109af57806382afd23b14610a3b5780638a72ea6a14610a8157610227565b80634579268a116101b357806361f54a791161018257806361f54a791461078d578063677170e1146107cf5780637238c9151461084757806374c1d7d314610891578063779997c31461090957610227565b80634579268a146105f6578063467f0b7b146106a557806349606455146106eb578063511fa4871461073557610227565b80631b33d412116101fa5780631b33d412146104625780631d834a1b146104f8578063232cae0b146105485780632630c12f1461056657806340e58ee5146105b057610227565b80630374fc6f1461022c5780630621b4f6146102a4578063093f519814610330578063144a2752146103e0575b600080fd5b61028e6004803603604081101561024257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061104e565b6040518082815260200191505060405180910390f35b61031a600480360360808110156102ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110d5565b6040518082815260200191505060405180910390f35b6103ca6004803603608081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff1690602001909291905050506112e5565b6040518082815260200191505060405180910390f35b61044c600480360360608110156103f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611324565b6040518082815260200191505060405180910390f35b6104e2600480360360a081101561047857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611423565b6040518082815260200191505060405180910390f35b61052e6004803603604081101561050e57600080fd5b81019080803590602001909291908035906020019092919050505061143f565b604051808215151515815260200191505060405180910390f35b610550611572565b6040518082815260200191505060405180910390f35b61056e611578565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105dc600480360360208110156105c657600080fd5b810190808035906020019092919050505061159e565b604051808215151515815260200191505060405180910390f35b6106226004803603602081101561060c57600080fd5b81019080803590602001909291905050506117ec565b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b6106d1600480360360208110156106bb57600080fd5b8101908080359060200190929190505050611986565b604051808215151515815260200191505060405180910390f35b6107336004803603604081101561070157600080fd5b810190808035906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050611b07565b005b6107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b6040518082815260200191505060405180910390f35b6107b9600480360360208110156107a357600080fd5b8101908080359060200190929190505050611b7c565b6040518082815260200191505060405180910390f35b610831600480360360408110156107e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b99565b6040518082815260200191505060405180910390f35b61084f611bbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108f3600480360360408110156108a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be4565b6040518082815260200191505060405180910390f35b6109356004803603602081101561091f57600080fd5b8101908080359060200190929190505050611c09565b005b6109996004803603604081101561094d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f40565b6040518082815260200191505060405180910390f35b610a25600480360360808110156109c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fc7565b6040518082815260200191505060405180910390f35b610a6760048036036020811015610a5157600080fd5b81019080803590602001909291905050506121d1565b604051808215151515815260200191505060405180910390f35b610aad60048036036020811015610a9757600080fd5b8101908080359060200190929190505050612211565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405180910390f35b610b866122c1565b6040518082815260200191505060405180910390f35b610bc860048036036020811015610bb257600080fd5b81019080803590602001909291905050506122cb565b6040518082815260200191505060405180910390f35b610c2060048036036020811015610bf457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122eb565b6040518082815260200191505060405180910390f35b610c6260048036036020811015610c4c57600080fd5b8101908080359060200190929190505050612303565b6040518082815260200191505060405180910390f35b610cba60048036036020811015610c8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612323565b005b610ce860048036036020811015610cd257600080fd5b81019080803590602001909291905050506125d4565b6040518082815260200191505060405180910390f35b610d2a60048036036020811015610d1457600080fd5b81019080803590602001909291905050506125ec565b005b610d5860048036036020811015610d4257600080fd5b8101908080359060200190929190505050612604565b60405180848152602001838152602001828152602001935050505060405180910390f35b610da860048036036020811015610d9257600080fd5b810190808035906020019092919050505061262e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610df261266e565b6040518082815260200191505060405180910390f35b610e3460048036036020811015610e1e57600080fd5b8101908080359060200190929190505050612674565b604051808215151515815260200191505060405180910390f35b610e8460048036036040811015610e6457600080fd5b8101908080359060200190929190803590602001909291905050506127ab565b604051808215151515815260200191505060405180910390f35b610f2a600480360360c0811015610eb457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050612856565b6040518082815260200191505060405180910390f35b610fb660048036036080811015610f5657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612941565b6040518082815260200191505060405180910390f35b61103860048036036060811015610fe257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506129dc565b6040518082815260200191505060405180910390f35b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600260009054906101000a900460ff161561115a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b60005b60008511156112cf57611170848761104e565b9050600081141561118057600080fd5b6111b660016000838152602001908152602001600020600201546001600084815260200190815260200160002060000154612adb565b670de0b6b3a7640000860210156111cc576112cf565b6001600082815260200190815260200160002060020154851061125557611209826001600084815260200190815260200160002060000154612b13565b915061122b856001600084815260200190815260200160002060020154612b96565b94506112508160001b6001600084815260200190815260200160002060000154611b07565b6112ca565b6000633b9aca006112a1633b9aca00880261129c60016000878152602001908152602001600020600001546001600088815260200190815260200160002060020154612c19565b612c55565b816112a857fe5b0490506112b58382612b13565b92506112c48260001b82611b07565b60009550505b61115d565b828210156112dc57600080fd5b50949350505050565b6000611317836fffffffffffffffffffffffffffffffff1686846fffffffffffffffffffffffffffffffff1687612941565b60001b9050949350505050565b600080611331858561104e565b90505b60016000828152602001908152602001600020600201548311156113be57611372826001600084815260200190815260200160002060000154612b13565b9150611394836001600084815260200190815260200160002060020154612b96565b925060008311156113b9576113a881612303565b905060008114156113b857600080fd5b5b611334565b61141982633b9aca0061140c633b9aca00870261140760016000888152602001908152602001600020600001546001600089815260200190815260200160002060020154612c19565b612c55565b8161141357fe5b04612b13565b9150509392505050565b600061143486868686866001612856565b905095945050505050565b6000600260009054906101000a900460ff16156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b6114cd83612674565b156114d757600080fd5b6114e0836121d1565b6114e957600080fd5b6114f283612c9d565b506114fd8383612d9b565b7f6d5c16212bdea16850dce4d9fa2314c446bd30ce84700d9c36c7677c6d2839403384604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001905092915050565b60005481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816115aa816121d1565b6115ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806154e8602d913960400191505060405180910390fd5b6116088161262e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116cb5750600660006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001600083815260200190815260200160002060000154105b611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001806154a46044913960600191505060405180910390fd5b600260009054906101000a900460ff16156117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b6117ac83612674565b156117c8576117ba83613198565b6117c357600080fd5b6117db565b6117d183612c9d565b6117da57600080fd5b5b6117e4836135bc565b915050919050565b6000806000806117fa615421565b600160008781526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905080600001518160200151826040015183606001519450945094509450509193509193565b6000600260009054906101000a900460ff1615611a0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b611a14826121d1565b158015611a3857506000600360008481526020019081526020016000206002015414155b8015611a5c5750600a43036003600084815260200190815260200160002060020154105b611a6557600080fd5b600360008381526020019081526020016000206000808201600090556001820160009055600282016000905550507fcb9d6176c6aac6478ebb9a2754cdce22a944de29ed1f2642f8613884eba4b40c3383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b611b268260001c826fffffffffffffffffffffffffffffffff166127ab565b611b2f57600080fd5b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060076000838152602001908152602001600020549050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052816000526040600020602052806000526040600020600091509150505481565b8060001c611c16816121d1565b611c1f57600080fd5b60008260001c90506001600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014019250505060405160208183030381529060405280519060200120847f70a14c213064359ede031fd2a1645a11ce2ec825ffe6ab5cfb5b160c3ef4d0a26001600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600087815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546001600089815260200190815260200160002060020154600160008a815260200190815260200160002060040160149054906101000a900467ffffffffffffffff16604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a4505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600260009054906101000a900460ff161561204c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b60005b60008511156121bb57612062868561104e565b9050600081141561207257600080fd5b6120a860016000838152602001908152602001600020600001546001600084815260200190815260200160002060020154612adb565b670de0b6b3a7640000860210156120be576121bb565b60016000828152602001908152602001600020600001548510612147576120fb826001600084815260200190815260200160002060020154612b13565b915061211d856001600084815260200190815260200160002060000154612b96565b94506121428160001b6001600084815260200190815260200160002060000154611b07565b6121b6565b6121a282633b9aca00612195633b9aca00890261219060016000888152602001908152602001600020600201546001600089815260200190815260200160002060000154612c19565b612c55565b8161219c57fe5b04612b13565b91506121b18160001b86611b07565b600094505b61204f565b828211156121c857600080fd5b50949350505050565b6000806001600084815260200190815260200160002060040160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16119050919050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900467ffffffffffffffff16905086565b6000600854905090565b600060036000838152602001908152602001600020600001549050919050565b60066020528060005260406000206000915090505481565b600060036000838152602001908152602001600020600101549050919050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f20696e6469726563742063616c6c7320706c65617365000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612488576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e277420736574206475737420666f72207468652064757374546f6b656e81525060200191505060405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663413713c1600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600a546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561258957600080fd5b505afa15801561259d573d6000803e3d6000fd5b505050506040513d60208110156125b357600080fd5b810190808051906020019092919050505090506125d08282613bdc565b5050565b60076020528060005260406000206000915090505481565b6125f88160001c61159e565b61260157600080fd5b50565b60036020528060005260406000206000915090508060000154908060010154908060020154905083565b60006001600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600a5481565b60008060036000848152602001908152602001600020600001541415806126b257506000600360008481526020019081526020016000206001015414155b806127a4575081600460006001600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001600086815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b9050919050565b6000826127b7816121d1565b6127c057600080fd5b600260009054906101000a900460ff1615612843576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b61284d8484613c8f565b91505092915050565b6000600260009054906101000a900460ff16156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b86600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561292757600080fd5b612935878787878787613da4565b90509695505050505050565b6000600260009054906101000a900460ff16156129c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5265656e7472616e637920617474656d7074000000000000000000000000000081525060200191505060405180910390fd5b6129d285858585613ffd565b9050949350505050565b6000806129e9848661104e565b90505b6001600082815260200190815260200160002060000154831115612a7657612a2a826001600084815260200190815260200160002060020154612b13565b9150612a4c836001600084815260200190815260200160002060000154612b96565b92506000831115612a7157612a6081612303565b90506000811415612a7057600080fd5b5b6129ec565b612ad182633b9aca00612ac4633b9aca008702612abf60016000888152602001908152602001600020600201546001600089815260200190815260200160002060000154612c19565b612c55565b81612acb57fe5b04612b13565b9150509392505050565b600081612b03612af385670de0b6b3a76400006140b9565b60028581612afd57fe5b04612b13565b81612b0a57fe5b04905092915050565b6000828284019150811015612b90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115612c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b600081612c45612c35856b033b2e3c9fd0803ce80000006140b9565b60028581612c3f57fe5b04612b13565b81612c4c57fe5b04905092915050565b60006b033b2e3c9fd0803ce8000000612c8d612c7185856140b9565b60026b033b2e3c9fd0803ce800000081612c8757fe5b04612b13565b81612c9457fe5b04905092915050565b60008060085490506000819050612cb384612674565b15612cbd57600080fd5b836008541415612d0557600760008581526020019081526020016000205460088190555060006007600086815260200190815260200160002081905550600192505050612d96565b5b600082118015612d165750838214155b15612d395781905060076000838152602001908152602001600020549150612d06565b838214612d4b57600092505050612d96565b60076000858152602001908152602001600020546007600083815260200190815260200160002081905550600060076000868152602001908152602001600020819055506001925050505b919050565b612da4826121d1565b612dad57600080fd5b60006001600084815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600080841480612e9557508173ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80612f0257508273ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80612f135750612f1184612674565b155b612f2657612f21858561414e565b612f30565b612f2f8561424e565b5b935060008414612f8e576003600085815260200190815260200160002060010154905084600360008681526020019081526020016000206001018190555083600360008781526020019081526020016000206000018190555061308f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600081146130ce578460036000838152602001908152602001600020600001819055508060036000878152602001908152602001600020600101819055505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055507f20fb9bad86c18f7e22e8065258790d9416a7d2df8ff05f80f82c46d38b925acd856040518082815260200191505060405180910390a15050505050565b6000806001600084815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161329857600080fd5b600060036000868152602001908152602001600020600201541480156132c357506132c284612674565b5b6132cc57600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484146133d357836003600060036000888152602001908152602001600020600001548152602001908152602001600020600101541461338757600080fd5b600360008581526020019081526020016000206001015460036000600360008881526020019081526020016000206000015481526020019081526020016000206001018190555061346b565b6003600085815260200190815260200160002060010154600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006003600086815260200190815260200160002060010154146135095783600360006003600088815260200190815260200160002060010154815260200190815260200160002060000154146134c157600080fd5b60036000858152602001908152602001600020600001546003600060036000888152602001908152602001600020600101548152602001908152602001600020600001819055505b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550436003600086815260200190815260200160002060020181905550600192505050919050565b6000816135c8816121d1565b61361d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806154e8602d913960400191505060405180910390fd5b6136268161262e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136e95750600660006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001600083815260200190815260200160002060000154105b61373e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001806154a46044913960600191505060405180910390fd5b600260009054906101000a900460ff161561375857600080fd5b6001600260006101000a81548160ff02191690831515021790555061377b615421565b600160008581526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600160008581526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160146101000a81549067ffffffffffffffff021916905550506139b08160200151826080015183600001516143a2565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488846040518082815260200191505060405180910390a1806080015173ffffffffffffffffffffffffffffffffffffffff1681602001518260600151604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001208560001b7f9577941d28fff863bfbee4694a6a4a56fb09e169619189d2eaa750b5b4819995846020015185606001518660000151876040015142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a460019250506000600260006101000a81548160ff02191690831515021790555050919050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fc28d56449b0bb31e64ee7487e061f57a2e72aea8019d810832f26dda099823d08282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60006001600084815260200190815260200160002060000154821415613cd857613cb883612674565b15613ccc57613cc683613198565b50613cd7565b613cd583612c9d565b505b5b613ce28383614473565b613ceb57600080fd5b613cf4836121d1565b8015613d8a5750600660006001600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001600085815260200190815260200160002060000154105b15613d9a57613d988361159e565b505b6001905092915050565b60008060008060005b6000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115613f7657600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350600160008581526020019081526020016000206002015491506001600085815260200190815260200160002060000154905085613eef576000613ef7565b808b8a840101015b613f018c836140b9565b01613f0c838b6140b9565b1115613f1757613f76565b613f2a84613f25838c614ac6565b6127ab565b50889250613f4189613f3c838c614ac6565b612b96565b985082613f4e8a8d6140b9565b81613f5557fe5b049a5060008b1480613f675750600089145b15613f7157613f76565b613dad565b600089118015613f86575060008b115b8015613fd15750600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b10155b15613fef57613fe28b8b8b8b614ae0565b9450613fee8588612d9b565b5b505050509695505050505050565b600084600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561404b57600080fd5b61405785858585614ae0565b90506008546007600083815260200190815260200160002081905550806008819055507f8173832a493e0a3989e521458e55bfe9feac9f9b675a94e100b9d5a85f814862816040518082815260200191505060405180910390a1949350505050565b6000808214806140d657508282838502925082816140d357fe5b04145b614148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b600080831161415c57600080fd5b5b600082141580156141745750614172826121d1565b155b15614197576003600083815260200190815260200160002060010154915061415d565b60008214156141b0576141a98361424e565b9050614248565b6141ba8383615051565b156142085760005b600083141580156141d957506141d88484615051565b5b156141ff57829050600360008481526020019081526020016000206001015492506141c2565b80915050614248565b5b60008214158015614221575061421f8383615051565b155b156142445760036000838152602001908152602001600020600001549150614209565b8190505b92915050565b600080821161425c57600080fd5b60006001600084815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008090505b60008214158015614370575061436f8683615051565b5b156143965781905060036000838152602001908152602001600020600101549150614359565b80945050505050919050565b61446e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506150c9565b505050565b60008261447f816121d1565b61448857600080fd5b600260009054906101000a900460ff16156144a257600080fd5b6001600260006101000a81548160ff0219169083151502179055506144c5615421565b600160008681526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600081600001516146428684604001516140b9565b8161464957fe5b04905080816fffffffffffffffffffffffffffffffff161461466a57600080fd5b84856fffffffffffffffffffffffffffffffff161461468857600080fd5b60008514806146975750600081145b806146a55750816000015185115b806146b35750816040015181115b156146c357600093505050614aa4565b6146d1826000015186612b96565b60016000888152602001908152602001600020600001819055506146f9826040015182612b96565b6001600088815260200190815260200160002060020181905550614727826060015133846080015184615300565b614736826020015133876143a2565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488866040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff16826080015173ffffffffffffffffffffffffffffffffffffffff1683602001518460600151604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001207f3383e3357c77fd2e3a4b30deea81179bc70a795d053d14d5b7f2f01d0fd4596f8960001b866020015187606001518b8842604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405180910390a4816060015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167f819e390338feffe95e2de57172d6faf337853dfd15c7a09a32d76f7fd24438758784604051808381526020018281526020019250505060405180910390a3600060016000888152602001908152602001600020600001541415614a9d57600160008781526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160146101000a81549067ffffffffffffffff021916905550505b6001935050505b6000600260006101000a81548160ff0219169083151502179055505092915050565b600081831115614ad65781614ad8565b825b905092915050565b6000600260009054906101000a900460ff1615614afc57600080fd5b6001600260006101000a81548160ff02191690831515021790555084856fffffffffffffffffffffffffffffffff1614614b3557600080fd5b82836fffffffffffffffffffffffffffffffff1614614b5357600080fd5b60008511614b6057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614b9a57600080fd5b60008311614ba757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614be157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614c1a57600080fd5b614c22615421565b8581600001818152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381604001818152505082816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050428160a0019067ffffffffffffffff16908167ffffffffffffffff1681525050614d06615406565b915080600160008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050614e4385333089615300565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488826040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff168584604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001208360001b7f773ff502687307abfa024ac9f62f9752a0d210dac2ffd9a29e38e12e2ea82c8288878b8a42604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a4506000600260006101000a81548160ff021916908315150217905550949350505050565b6000615089600160008481526020019081526020016000206002015460016000868152602001908152602001600020600001546140b9565b6150bf600160008681526020019081526020016000206002015460016000868152602001908152602001600020600001546140b9565b1015905092915050565b6000823b905060008111615145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f74206120636f6e747261637400000000000000000000000000000000000081525060200191505060405180910390fd5b600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106151945780518252602082019150602081019050602083039250615171565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146151f6576040519150601f19603f3d011682016040523d82523d6000602084013e6151fb565b606091505b509150915081615273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546f6b656e2063616c6c206661696c656400000000000000000000000000000081525060200191505060405180910390fd5b6000815111156152f95780806020019051602081101561529257600080fd5b81019080805190602001909291905050506152f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615515602a913960400191505060405180910390fd5b5b5050505050565b615400848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506150c9565b50505050565b60008060008154809291906001019190505550600054905090565b6040518060c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152509056fe4f666665722063616e206e6f742062652063616e63656c6c656420626563617573652075736572206973206e6f74206f776e6572206e6f7220612064757374206f6e652e4f66666572207761732064656c65746564206f722074616b656e2c206f72206e6576657220657869737465642e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158205c6a1d3a4031f97ed5b4e99f23dd03f994c92c98d372e434a5f3dbcfa828d97164736f6c634300050c0032
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/OSM.abi b/chief_keeper/makerdao_utils/abi/OSM.abi
new file mode 100644
index 0000000..4713d70
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/OSM.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"src_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"LogValue","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src_","type":"address"}],"name":"change","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"a","type":"address[]"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hop","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"a","type":"address[]"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pass","outputs":[{"internalType":"bool","name":"ok","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peep","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"read","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"src","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"ts","type":"uint16"}],"name":"step","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"void","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"zzz","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/OSM.bin b/chief_keeper/makerdao_utils/abi/OSM.bin
new file mode 100644
index 0000000..c4a552f
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/OSM.bin
@@ -0,0 +1 @@
+6080604052610e10600260146101000a81548161ffff021916908361ffff16021790555034801561002f57600080fd5b506040516120ad3803806120ad8339818101604052602081101561005257600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611fb5806100f86000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806365fae35e116100b8578063ac4c25b21161007c578063ac4c25b2146104e1578063b0b8579b146104eb578063be9a655514610511578063bf353dbb1461051b578063e38e2cfb14610573578063f29c29c4146105a557610142565b806365fae35e146103e757806375f12b211461042b5780639c52a7f114610449578063a4dff0a21461048d578063a7a1ed72146104bf57610142565b80632e7dc6af1161010a5780632e7dc6af1461024157806346d4577d1461028b5780634fce7a2a1461030457806357de26a41461035c57806359e02dd71461037a57806365c4ce7a146103a357610142565b806307da68f5146101475780630e5a6c7014610151578063181783581461017a5780631b25b65f146101845780631e77933e146101fd575b600080fd5b61014f6105e9565b005b6101596106d9565b60405180838152602001821515151581526020019250505060405180910390f35b610182610807565b005b6101fb6004803603602081101561019a57600080fd5b81019080803590602001906401000000008111156101b757600080fd5b8201836020820111156101c957600080fd5b803590602001918460208302840111640100000000831117156101eb57600080fd5b9091929391929390505050610c0c565b005b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4e565b005b610249610f79565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610302600480360360208110156102a157600080fd5b81019080803590602001906401000000008111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111640100000000831117156102f257600080fd5b9091929391929390505050610f9f565b005b6103466004803603602081101561031a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611116565b6040518082815260200191505060405180910390f35b61036461112e565b6040518082815260200191505060405180910390f35b6103826112ca565b60405180838152602001821515151581526020019250505060405180910390f35b6103e5600480360360208110156103b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f8565b005b610429600480360360208110156103fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611527565b005b610433611655565b6040518082815260200191505060405180910390f35b61048b6004803603602081101561045f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061165b565b005b610495611789565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6104c76117a3565b604051808215151515815260200191505060405180910390f35b6104e96117f2565b005b6104f3611a5a565b604051808261ffff1661ffff16815260200191505060405180910390f35b610519611a6e565b005b61055d6004803603602081101561053157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b5f565b6040518082815260200191505060405180910390f35b6105a36004803603602081101561058957600080fd5b81019080803561ffff169060200190929190505050611b77565b005b6105e7600480360360208110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cc5565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461069d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600180819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b6000806001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f534d2f636f6e74726163742d6e6f742d77686974656c69737465640000000081525060200191505060405180910390fd5b600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660001b6001600460000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614915091509091565b60006001541461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f534d2f69732d73746f7070656400000000000000000000000000000000000081525060200191505060405180910390fd5b6108876117a3565b6108f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f534d2f6e6f742d70617373656400000000000000000000000000000000000081525060200191505060405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b15801561096357600080fd5b505afa158015610977573d6000803e3d6000fd5b505050506040513d604081101561098d57600080fd5b810190808051906020019092919080519060200190929190505050915091508015610bd557600460036000820160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000820160109054906101000a90046fffffffffffffffffffffffffffffffff168160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808360001c6fffffffffffffffffffffffffffffffff16815260200160016fffffffffffffffffffffffffffffffff16815250600460008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050610b3f610b3a611e97565b611e9f565b600260166101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f296ba4ca62c6c21c95e828080cb8aec7481b71390585605300a8a76f9e95b527600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660001b6040518082815260200191505060405180910390a15b50505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008090505b82829050811015610e1657600073ffffffffffffffffffffffffffffffffffffffff16838383818110610cf557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f534d2f6e6f2d636f6e74726163742d3000000000000000000000000000000081525060200191505060405180910390fd5b600160056000858585818110610dae57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050610cc6565b505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611053576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008090505b828290508110156110de5760006005600085858581811061107657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611059565b505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60056020528060005260406000206000915090505481565b60006001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f534d2f636f6e74726163742d6e6f742d77686974656c69737465640000000081525060200191505060405180910390fd5b6001600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161461128e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f534d2f6e6f2d63757272656e742d76616c756500000000000000000000000081525060200191505060405180910390fd5b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660001b905090565b6000806001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f534d2f636f6e74726163742d6e6f742d77686974656c69737465640000000081525060200191505060405180910390fd5b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660001b6001600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614915091509091565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60015481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461170f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600260169054906101000a900467ffffffffffffffff1681565b60006117d9600260169054906101000a900467ffffffffffffffff16600260149054906101000a900461ffff1661ffff16611f52565b67ffffffffffffffff166117eb611e97565b1015905090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b604051806040016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815250600460008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905060036000820160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000820160109054906101000a90046fffffffffffffffffffffffffffffffff168160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600180819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600260149054906101000a900461ffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006001819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008161ffff1611611ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f534d2f74732d69732d7a65726f00000000000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548161ffff021916908361ffff16021790555050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f534d2f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f534d2f6e6f2d636f6e74726163742d3000000000000000000000000000000081525060200191505060405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600042905090565b600080600260149054906101000a900461ffff1661ffff161415611f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4f534d2f686f702d69732d7a65726f000000000000000000000000000000000081525060200191505060405180910390fd5b600260149054906101000a900461ffff1661ffff168281611f4857fe5b0682039050919050565b600081830190508267ffffffffffffffff168167ffffffffffffffff161015611f7a57600080fd5b9291505056fea265627a7a723158202f0dd0dcfb79a6cedbde3442a720da94cf588291038c17a5f50051e01ec0f60064736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Pit.abi b/chief_keeper/makerdao_utils/abi/Pit.abi
new file mode 100644
index 0000000..332e3aa
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Pit.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"ilk","type":"bytes32"},{"name":"what","type":"bytes32"},{"name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"what","type":"bytes32"},{"name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ilk","type":"bytes32"},{"name":"dink","type":"int256"},{"name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"Line","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"wards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"ilks","outputs":[{"name":"spot","type":"uint256"},{"name":"line","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ilk","type":"bytes32"},{"indexed":true,"name":"urn","type":"bytes32"},{"indexed":false,"name":"ink","type":"uint256"},{"indexed":false,"name":"art","type":"uint256"},{"indexed":false,"name":"dink","type":"int256"},{"indexed":false,"name":"dart","type":"int256"},{"indexed":false,"name":"iInk","type":"uint256"},{"indexed":false,"name":"iArt","type":"uint256"}],"name":"Frob","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Pit.bin b/chief_keeper/makerdao_utils/abi/Pit.bin
new file mode 100644
index 0000000..04d4c94
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Pit.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50604051602080610fc68339810180604052810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160028190555050610ef6806100d06000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631a0b287e146100a957806329ae8114146100f257806336569e771461012d5780635a984ded1461018457806365fae35e146101c9578063957aa58c1461020c5780639c52a7f114610237578063babe8a3f1461027a578063bf353dbb146102a5578063d9638d36146102fc575b600080fd5b3480156100b557600080fd5b506100f06004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190505050610348565b005b3480156100fe57600080fd5b5061012b6004803603810190808035600019169060200190929190803590602001909291905050506104e7565b005b34801561013957600080fd5b50610142610619565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019057600080fd5b506101c76004803603810190808035600019169060200190929190803590602001909291908035906020019092919050505061063f565b005b3480156101d557600080fd5b5061020a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bd0565b005b34801561021857600080fd5b50610221610d11565b6040518082815260200191505060405180910390f35b34801561024357600080fd5b50610278600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d17565b005b34801561028657600080fd5b5061028f610e58565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b506102e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e5e565b6040518082815260200191505060405180910390f35b34801561030857600080fd5b5061032b6004803603810190808035600019169060200190929190505050610e76565b604051808381526020018281526020019250505060405180910390f35b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561044057600080fd5b7f73706f7400000000000000000000000000000000000000000000000000000000846000191614156104905782600160008760001916600019168152602001908152602001600020600001819055505b7f6c696e6500000000000000000000000000000000000000000000000000000000846000191614156104e05782600160008760001916600019168152602001908152602001600020600101819055505b5050505050565b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415156105df57600080fd5b7f4c696e65000000000000000000000000000000000000000000000000000000008460001916141561061357826003819055505b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635dd6471a8c3373ffffffffffffffffffffffffffffffffffffffff166001023373ffffffffffffffffffffffffffffffffffffffff166001023373ffffffffffffffffffffffffffffffffffffffff166001028f8f6040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018087600019166000191681526020018660001916600019168152602001856000191660001916815260200184600019166000191681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d368c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050608060405180830381600087803b15801561082057600080fd5b505af1158015610834573d6000803e3d6000fd5b505050506040513d608081101561084a57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509750975097509750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326e274828c3373ffffffffffffffffffffffffffffffffffffffff166001026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018260001916600019168152602001925050506040805180830381600087803b15801561094257600080fd5b505af1158015610956573d6000803e3d6000fd5b505050506040513d604081101561096c57600080fd5b810190808051906020019092919080519060200190929190505050935093506109bf600160008d60001916600019168152602001908152602001600020600101546b033b2e3c9fd0803ce8000000610e9a565b6109c98689610e9a565b11158015610aae57506109ea6003546b033b2e3c9fd0803ce8000000610e9a565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b505050506040513d6020811015610a9a57600080fd5b810190808051906020019092919050505011155b9150610aba8388610e9a565b610ae285600160008f6000191660001916815260200190815260200160002060000154610e9a565b101590506001600254141515610af757600080fd5b60008714151515610b0757600080fd5b8180610b14575060008913155b8015610b36575060008913158015610b2d575060008a12155b80610b355750805b5b1515610b4157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600102600019168b600019167f8672df7d64a4910ce9e1581a5a3beeedac6f1f9d293aba2ad643724cf2ba8d3e86868e8e8c8c60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a35050505050505050505050565b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610cc857600080fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60025481565b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610e0f57600080fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60035481565b60006020528060005260406000206000915090505481565b60016020528060005260406000206000915090508060000154908060010154905082565b600080821480610eb957508282838502925082811515610eb657fe5b04145b1515610ec457600080fd5b929150505600a165627a7a723058201e139016fbdd3c3c85b7af450c6f733e048d8bab0b34c96d7fd8f45586a00d170029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Pot.abi b/chief_keeper/makerdao_utils/abi/Pot.abi
new file mode 100644
index 0000000..c00ce65
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Pot.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"Pie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"chi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"drip","outputs":[{"internalType":"uint256","name":"tmp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dsr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rho","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vow","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Pot.bin b/chief_keeper/makerdao_utils/abi/Pot.bin
new file mode 100644
index 0000000..631a315
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Pot.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506040516115853803806115858339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce80000006003819055506b033b2e3c9fd0803ce8000000600481905550426007819055506001600881905550506114778061010e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806365fae35e116100a25780639c52a7f1116100715780639c52a7f1146103565780639f678cca1461039a578063bf353dbb146103b8578063c92aecc414610410578063d4e8be831461042e5761010b565b806365fae35e146102bc57806369245009146103005780637f8661a11461030a578063957aa58c146103385761010b565b80632c69ed58116100de5780632c69ed58146101ec57806336569e771461020a578063487bf08214610254578063626cb3c5146102725761010b565b8063049878f3146101105780630bebac861461013e57806320aba08b1461019657806329ae8114146101b4575b600080fd5b61013c6004803603602081101561012657600080fd5b810190808035906020019092919050505061047c565b005b6101806004803603602081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c7565b6040518082815260200191505060405180910390f35b61019e6106df565b6040518082815260200191505060405180910390f35b6101ea600480360360408110156101ca57600080fd5b8101908080359060200190929190803590602001909291905050506106e5565b005b6101f4610961565b6040518082815260200191505060405180910390f35b610212610967565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025c61098d565b6040518082815260200191505060405180910390f35b61027a610993565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b005b610308610ae7565b005b6103366004803603602081101561032057600080fd5b8101908080359060200190929190505050610beb565b005b610340610dbf565b6040518082815260200191505060405180910390f35b6103986004803603602081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc5565b005b6103a2610ef3565b6040518082815260200191505060405180910390f35b6103fa600480360360208110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110e565b6040518082815260200191505060405180910390f35b610418611126565b6040518082815260200191505060405180910390f35b61047a6004803603604081101561044457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112c565b005b60075442146104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b61053c600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826112f3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061058b600254826112f3565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306105dd6004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016020528060005260406000206000915090505481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160085414610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6007544214610888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f64737200000000000000000000000000000000000000000000000000000000008214156108bc578060038190555061092a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006008819055506b033b2e3c9fd0803ce80000006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b610c34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611339565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c8360025482611339565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033610cd56004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000600754421015610f6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506f742f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b610f95610f8d60035460075442036b033b2e3c9fd0803ce8000000611353565b600454611419565b90506000610fa582600454611339565b90508160048190555042600781905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306110236002548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f77000000000000000000000000000000000000000000000000000000000082141561124e5780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112bc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600082828401915081101561130757600080fd5b92915050565b60008082148061132a575082828385029250828161132757fe5b04145b61133357600080fd5b92915050565b600082828403915081111561134d57600080fd5b92915050565b600083600081146113f957600284066000811461137257859250611376565b8392505b50600283046002850494505b84156113f357858602868782041461139957600080fd5b818101818110156113a957600080fd5b858104975060028706156113e65787850285898204141589151516156113ce57600080fd5b838101818110156113de57600080fd5b878104965050505b5050600285049450611382565b50611411565b836000811461140b576000925061140f565b8392505b505b509392505050565b60006b033b2e3c9fd0803ce8000000611432848461130d565b8161143957fe5b0490509291505056fea265627a7a72315820f5624aad1b29a673406c8b09f8adc68d1913e56d12fa8e95be606ad210b9a7fa64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/ProxyRegistry.abi b/chief_keeper/makerdao_utils/abi/ProxyRegistry.abi
new file mode 100644
index 0000000..3b0d4d1
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ProxyRegistry.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"factory_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"build","outputs":[{"internalType":"address payable","name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"build","outputs":[{"internalType":"address payable","name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proxies","outputs":[{"internalType":"contract DSProxy","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/ProxyRegistry.bin b/chief_keeper/makerdao_utils/abi/ProxyRegistry.bin
new file mode 100644
index 0000000..e2e0bbe
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ProxyRegistry.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506040516105b23803806105b28339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061051d806100956000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638e1a55fc14610046578063c455279114610090578063f3701da214610114575b600080fd5b61004e610198565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d2600480360360208110156100a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101566004803603602081101561012a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006101a3336101db565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061037f57508173ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032b57600080fd5b505afa15801561033f573d6000803e3d6000fd5b505050506040513d602081101561035557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b61038857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3701da2836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561042957600080fd5b505af115801561043d573d6000803e3d6000fd5b505050506040513d602081101561045357600080fd5b81019080805190602001909291905050509050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091905056fea265627a7a72315820dde22e20d59bcfe01bcafda726adc265175924ee37c24a292c4361b64a6ffa3364736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/SaiTap.abi b/chief_keeper/makerdao_utils/abi/SaiTap.abi
new file mode 100644
index 0000000..abe7955
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTap.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[],"name":"heal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"skr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"vent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"cash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"woe","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tub","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"mock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"bid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"joy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"s2s","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"off","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vox","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fog","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sai","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"param","type":"bytes32"},{"name":"val","type":"uint256"}],"name":"mold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"fix_","type":"uint256"}],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fix","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"bust","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"boom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"ask","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tub_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiTap.bin b/chief_keeper/makerdao_utils/abi/SaiTap.bin
new file mode 100644
index 0000000..213b6ca
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTap.bin
@@ -0,0 +1 @@
+6060604052341561000f57600080fd5b6040516020806116b68339810160405280805160018054600160a060020a03191633600160a060020a031690811790915590925090507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a260068054600160a060020a031916600160a060020a03838116919091179182905516639166cba46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156100e857600080fd5b6102c65a03f115156100f957600080fd5b505050604051805160028054600160a060020a031916600160a060020a0392831617905560065416905063071bafb56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561017857600080fd5b6102c65a03f1151561018957600080fd5b505050604051805160038054600160a060020a031916600160a060020a03928316179055600654169050630f8a771e6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561020857600080fd5b6102c65a03f1151561021957600080fd5b505050604051805160048054600160a060020a031916600160a060020a039283161790556006541690506367550a356000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561029857600080fd5b6102c65a03f115156102a957600080fd5b505050604051805160058054600160a060020a031916600160a060020a03929092169190911790555050670de0b6b3a76400006007556113c8806102ee6000396000f30060606040526004361061013a5763ffffffff60e060020a6000350416630434fe0b811461013f578063071bafb5146101545780630f8a771e1461018357806313af4035146101965780631406b921146101b557806317dc92f5146101c85780632da8d3e6146101de57806334e70cc2146102035780633de377ec14610216578063454a2ab31461022c578063465b43d01461024257806365d1df24146102555780636626b26d1461026857806367550a351461028f5780636c32c0a6146102a25780637296359a146102b55780637a9e5e4b146102c85780638da5cb5b146102e75780639166cba4146102fa57806392b0d7211461030d578063a2f91af214610326578063a551878e1461033c578063af378ce51461034f578063b443a08514610365578063bf7e214f1461037b578063e47e7e661461038e575b600080fd5b341561014a57600080fd5b6101526103a4565b005b341561015f57600080fd5b6101676104f6565b604051600160a060020a03909116815260200160405180910390f35b341561018e57600080fd5b610167610505565b34156101a157600080fd5b610152600160a060020a0360043516610514565b34156101c057600080fd5b610152610593565b34156101d357600080fd5b610152600435610661565b34156101e957600080fd5b6101f1610823565b60405190815260200160405180910390f35b341561020e57600080fd5b61016761089d565b341561022157600080fd5b6101526004356108ac565b341561023757600080fd5b6101f1600435610a55565b341561024d57600080fd5b6101f1610a8d565b341561026057600080fd5b6101f1610ae8565b341561027357600080fd5b61027b610bca565b604051901515815260200160405180910390f35b341561029a57600080fd5b610167610bd3565b34156102ad57600080fd5b6101f1610be2565b34156102c057600080fd5b6101f1610be8565b34156102d357600080fd5b610152600160a060020a0360043516610c43565b34156102f257600080fd5b610167610cc2565b341561030557600080fd5b610167610cd1565b341561031857600080fd5b610152600435602435610ce0565b341561033157600080fd5b610152600435610d8b565b341561034757600080fd5b6101f1610e26565b341561035a57600080fd5b610152600435610e2c565b341561037057600080fd5b610152600435610eb8565b341561038657600080fd5b610167610f27565b341561039957600080fd5b6101f1600435610f36565b60006004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610401610a8d565b15806104125750610410610823565b155b1561041c576104f1565b610434610427610a8d565b61042f610823565b610f4f565b600254909350600160a060020a03166342966c688460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561047f57600080fd5b6102c65a03f1151561049057600080fd5b5050600354600160a060020a031690506342966c688460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156104dc57600080fd5b6102c65a03f115156104ed57600080fd5b5050505b505050565b600354600160a060020a031681565b600454600160a060020a031681565b61052a33600035600160e060020a031916610f68565b151561053557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460085460ff1615156105fa57600080fd5b600454600160a060020a03166342966c68610613610be8565b60405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561064957600080fd5b6102c65a03f1151561065a57600080fd5b5050505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460085460ff1615156106c857600080fd5b600254600160a060020a0316639dc29fac338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561071e57600080fd5b6102c65a03f1151561072f57600080fd5b5050600654600160a060020a03169050637bd2bea76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561077b57600080fd5b6102c65a03f1151561078c57600080fd5b50505060405180519050600160a060020a031663a9059cbb336107b18660095461105f565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156107fd57600080fd5b6102c65a03f1151561080e57600080fd5b5050506040518051905015156104f157600080fd5b600354600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561087e57600080fd5b6102c65a03f1151561088f57600080fd5b505050604051805191505090565b600654600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460085460ff16151561091357600080fd5b600254600160a060020a03166340c10f19338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561096957600080fd5b6102c65a03f1151561097a57600080fd5b5050600654600160a060020a03169050637bd2bea76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109c657600080fd5b6102c65a03f115156109d757600080fd5b50505060405180519050600160a060020a03166323b872dd33306109fd8760095461105f565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156107fd57600080fd5b6000610a8782610a82610a66610ae8565b610a7d670de0b6b3a76400006002026007546110a2565b6110b2565b61105f565b92915050565b600254600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561087e57600080fd5b60065460009081908190600160a060020a03166351f9106682604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b3657600080fd5b6102c65a03f11515610b4757600080fd5b5050506040518051600554909350600160a060020a0316905063495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b9c57600080fd5b6102c65a03f11515610bad57600080fd5b505050604051805190509050610bc382826110da565b9250505090565b60085460ff1681565b600554600160a060020a031681565b60075481565b600454600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561087e57600080fd5b610c5933600035600160e060020a031916610f68565b1515610c6457600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600154600160a060020a031681565b600254600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610d4c33600035600160e060020a031916610f68565b1515610d5757600080fd5b7f6761700000000000000000000000000000000000000000000000000000000000841415610d855760078390555b50505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610df733600035600160e060020a031916610f68565b1515610e0257600080fd5b60085460ff1615610e1257600080fd5b50506008805460ff19166001179055600955565b60095481565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460085460ff1615610e9257600080fd5b610e9a610be8565b831115610eaf57610eaa836110fe565b6104f1565b6104f183611188565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460085460ff1615610f1e57600080fd5b6104f183611282565b600054600160a060020a031681565b6000610a8782610a82610f47610ae8565b6007546110b2565b600081831115610f5f5781610f61565b825b9392505050565b600030600160a060020a031683600160a060020a03161415610f8c57506001610a87565b600154600160a060020a0384811691161415610faa57506001610a87565b600054600160a060020a03161515610fc457506000610a87565b60008054600160a060020a03169063b7009613908590309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b151561103d57600080fd5b6102c65a03f1151561104e57600080fd5b505050604051805190509050610a87565b60006b033b2e3c9fd0803ce800000061109161107b8585611364565b60026b033b2e3c9fd0803ce80000005b0461138c565b81151561109a57fe5b049392505050565b80820382811115610a8757600080fd5b6000670de0b6b3a76400006110916110ca8585611364565b6002670de0b6b3a764000061108b565b6000816110916110f6856b033b2e3c9fd0803ce8000000611364565b60028561108b565b600454600160a060020a031663a0712d686111208361111b610be8565b6110a2565b60405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561115657600080fd5b6102c65a03f1151561116757600080fd5b50505061117381611188565b61117b610a8d565b1561118557600080fd5b50565b600061119382610f36565b1161119d57600080fd5b600454600160a060020a031663b753a98c338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156111f357600080fd5b6102c65a03f1151561120457600080fd5b5050600254600160a060020a0316905063f2d5d56b3361122384610f36565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561126657600080fd5b6102c65a03f1151561127757600080fd5b5050506111856103a4565b61128a6103a4565b600254600160a060020a031663b753a98c336112a584610a55565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156112e857600080fd5b6102c65a03f115156112f957600080fd5b5050600454600160a060020a03169050639dc29fac338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561135357600080fd5b6102c65a03f11515610d8557600080fd5b600081158061138157505080820282828281151561137e57fe5b04145b1515610a8757600080fd5b80820182811015610a8757600080fd00a165627a7a723058204e85ef1f6de9ad62d261215d31ef554ef52db998168b43121a29697eb46eccd60029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiTop.abi b/chief_keeper/makerdao_utils/abi/SaiTop.abi
new file mode 100644
index 0000000..4cd9ab4
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTop.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[],"name":"sin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"skr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"era","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"flow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tub","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cooldown_","type":"uint256"}],"name":"setCooldown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vox","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooldown","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sai","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fix","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"caged","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"tub_","type":"address"},{"name":"tap_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiTop.bin b/chief_keeper/makerdao_utils/abi/SaiTop.bin
new file mode 100644
index 0000000..931cd3a
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTop.bin
@@ -0,0 +1 @@
+6060604052615460600c55341561001557600080fd5b60405160408061128e833981016040528080519190602001805160018054600160a060020a03191633600160a060020a031690811790915590925090507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a260038054600160a060020a03808516600160a060020a0319928316179283905560048054858316931692909217909155166367550a356000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561010457600080fd5b6102c65a03f1151561011557600080fd5b505050604051805160028054600160a060020a031916600160a060020a03928316179055600354169050639166cba46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561019457600080fd5b6102c65a03f115156101a557600080fd5b505050604051805160058054600160a060020a031916600160a060020a0392831617905560035416905063071bafb56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561022457600080fd5b6102c65a03f1151561023557600080fd5b505050604051805160068054600160a060020a031916600160a060020a03928316179055600354169050630f8a771e6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156102b457600080fd5b6102c65a03f115156102c557600080fd5b505050604051805160078054600160a060020a031916600160a060020a03928316179055600354169050637bd2bea76000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561034457600080fd5b6102c65a03f1151561035557600080fd5b505050604051805160088054600160a060020a03909216600160a060020a0319909216919091179055505050610efe806103906000396000f3006060604052600436106100ed5763ffffffff60e060020a600035041663071bafb581146100f25780630f8a771e1461012157806313af403514610134578063143e55e014610155578063343aad821461017a57806334e70cc21461018d5780634fc3f41a146101a057806367550a35146101b657806369245009146101c9578063787a08a6146101dc5780637a9e5e4b146101ef5780637bd2bea71461020e5780638da5cb5b146102215780639166cba414610234578063a551878e14610247578063bf7e214f1461025a578063c8e13bb41461026d578063f83e579314610280578063fd22103114610293575b600080fd5b34156100fd57600080fd5b6101056102a6565b604051600160a060020a03909116815260200160405180910390f35b341561012c57600080fd5b6101056102b5565b341561013f57600080fd5b610153600160a060020a03600435166102c4565b005b341561016057600080fd5b610168610343565b60405190815260200160405180910390f35b341561018557600080fd5b610153610347565b341561019857600080fd5b61010561055c565b34156101ab57600080fd5b61015360043561056b565b34156101c157600080fd5b610105610591565b34156101d457600080fd5b6101536105a0565b34156101e757600080fd5b610168610754565b34156101fa57600080fd5b610153600160a060020a036004351661075a565b341561021957600080fd5b6101056107d9565b341561022c57600080fd5b6101056107e8565b341561023f57600080fd5b6101056107f7565b341561025257600080fd5b610168610806565b341561026557600080fd5b61010561080c565b341561027857600080fd5b61016861081b565b341561028b57600080fd5b610168610821565b341561029e57600080fd5b610105610827565b600654600160a060020a031681565b600754600160a060020a031681565b6102da33600035600160e060020a031916610836565b15156102e557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b4290565b6000806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600354600160a060020a0316636626b26d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156103e557600080fd5b6102c65a03f115156103f657600080fd5b50505060405180519050151561040b57600080fd5b600354600160a060020a031663e0ae96e96000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561045357600080fd5b6102c65a03f1151561046457600080fd5b505050604051805115905080156104db5750600454600160a060020a0316637296359a6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156104be57600080fd5b6102c65a03f115156104cf57600080fd5b50505060405180511590505b9350600c54600b54016104ec610343565b11925083806104f85750825b151561050357600080fd5b600354600160a060020a031663343aad826040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561054257600080fd5b6102c65a03f1151561055357600080fd5b50505050505050565b600354600160a060020a031681565b61058133600035600160e060020a031916610836565b151561058c57600080fd5b600c55565b600254600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a461060c33600035600160e060020a031916610836565b151561061757600080fd5b6003546107509061074b90600160a060020a031663d741e2f96000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561066757600080fd5b6102c65a03f1151561067857600080fd5b50505060405180519050600160a060020a03166357de26a46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106c757600080fd5b6102c65a03f115156106d857600080fd5b5050506040518051600254909150600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561072b57600080fd5b6102c65a03f1151561073c57600080fd5b5050506040518051905061092e565b610965565b5050565b600c5481565b61077033600035600160e060020a031916610836565b151561077b57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600854600160a060020a031681565b600154600160a060020a031681565b600554600160a060020a031681565b60095481565b600054600160a060020a031681565b600a5481565b600b5481565b600454600160a060020a031681565b600030600160a060020a031683600160a060020a0316141561085a57506001610928565b600154600160a060020a038481169116141561087857506001610928565b600054600160a060020a0316151561089257506000610928565b60008054600160a060020a03169063b7009613908590309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b151561090b57600080fd5b6102c65a03f1151561091c57600080fd5b50505060405180519150505b92915050565b60008161095461094a856b033b2e3c9fd0803ce8000000610e29565b6002855b04610e51565b81151561095d57fe5b049392505050565b600354600160a060020a0316636626b26d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109ad57600080fd5b6102c65a03f115156109be57600080fd5b505050604051805190501580156109d457508015155b15156109df57600080fd5b6109e7610343565b600b55600354600160a060020a0316639f678cca6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610a2957600080fd5b6102c65a03f11515610a3a57600080fd5b5050600454600160a060020a03169050630434fe0b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b5050600254610b6b9150610b03908390600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ae357600080fd5b6102c65a03f11515610af457600080fd5b50505060405180519050610e61565b600354600160a060020a0316637ec9c3b86000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b4b57600080fd5b6102c65a03f11515610b5c57600080fd5b50505060405180519050610e89565b600a55600554600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610bb657600080fd5b6102c65a03f11515610bc757600080fd5b505050604051805115159050610bf157610be9670de0b6b3a76400008261092e565b600955610cbf565b610cbb610c06670de0b6b3a76400008361092e565b600354610cb690600160a060020a0316638a95a7466000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c5257600080fd5b6102c65a03f11515610c6357600080fd5b5050506040518051600554909150600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561072b57600080fd5b610eb9565b6009555b600354600a54600954600554600160a060020a0393841693638ceedb479392610d21929091166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b4b57600080fd5b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515610d5c57600080fd5b6102c65a03f11515610d6d57600080fd5b5050600454600954600160a060020a03909116915063a2f91af29060405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610dbe57600080fd5b6102c65a03f11515610dcf57600080fd5b5050600454600160a060020a03169050631406b9216040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610e1257600080fd5b6102c65a03f11515610e2357600080fd5b50505050565b6000811580610e46575050808202828282811515610e4357fe5b04145b151561092857600080fd5b8082018281101561092857600080fd5b6000670de0b6b3a7640000610954610e798585610e29565b6002670de0b6b3a764000061094e565b60006b033b2e3c9fd0803ce8000000610954610ea58585610e29565b60026b033b2e3c9fd0803ce800000061094e565b600081831115610ec95781610ecb565b825b93925050505600a165627a7a72305820f08e0f8a2b3cbe43e621471f49d3ed968bac306c831853e8e9602189c0081fcb0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiTub.abi b/chief_keeper/makerdao_utils/abi/SaiTub.abi
new file mode 100644
index 0000000..48be23b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTub.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"skr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"era","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cup","type":"bytes32"}],"name":"ink","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rho","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"air","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"rhi","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"flow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"}],"name":"bite","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"},{"name":"wad","type":"uint256"}],"name":"draw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"wad","type":"uint256"}],"name":"bid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cupi","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"axe","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tag","outputs":[{"name":"wad","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"off","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vox","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"}],"name":"rap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"},{"name":"wad","type":"uint256"}],"name":"wipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gem","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tap_","type":"address"}],"name":"turn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"per","outputs":[{"name":"ray","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pip_","type":"address"}],"name":"setPip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pie","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"fit_","type":"uint256"},{"name":"jam","type":"uint256"}],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sai","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"param","type":"bytes32"},{"name":"val","type":"uint256"}],"name":"mold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"drip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"},{"name":"wad","type":"uint256"}],"name":"free","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mat","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pep","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"out","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"},{"name":"wad","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"}],"name":"shut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"},{"name":"guy","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"chi","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vox_","type":"address"}],"name":"setVox","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pip","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pep_","type":"address"}],"name":"setPep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cup","type":"bytes32"}],"name":"lad","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"din","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"wad","type":"uint256"}],"name":"ask","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"}],"name":"safe","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pit","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cup","type":"bytes32"}],"name":"tab","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"open","outputs":[{"name":"cup","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"cups","outputs":[{"name":"lad","type":"address"},{"name":"ink","type":"uint256"},{"name":"art","type":"uint256"},{"name":"ire","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"sai_","type":"address"},{"name":"sin_","type":"address"},{"name":"skr_","type":"address"},{"name":"gem_","type":"address"},{"name":"gov_","type":"address"},{"name":"pip_","type":"address"},{"name":"pep_","type":"address"},{"name":"vox_","type":"address"},{"name":"pit_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"lad","type":"address"},{"indexed":false,"name":"cup","type":"bytes32"}],"name":"LogNewCup","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiTub.bin b/chief_keeper/makerdao_utils/abi/SaiTub.bin
new file mode 100644
index 0000000..0099b39
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiTub.bin
@@ -0,0 +1 @@
+6060604052341561000f57600080fd5b6040516101208062002a2383398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160018054600160a060020a03191633600160a060020a031690811790915590925090507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a260058054600160a060020a0319908116600160a060020a03898116919091179092556004805482168a84161790556002805482168c84161790556003805482168b8416179055600680548216888416179055600b80548216848416179055600880548216878416179055600980548216868416179055600780549091169184169190911790556b033b2e3c9fd0803ce8000000600c819055600e819055600f8190556010819055670de0b6b3a7640000601155601581905560165561017b64010000000061018d8102610a6c1704565b60145550610191975050505050505050565b4290565b61288280620001a16000396000f3006060604052600436106102b05763ffffffff60e060020a600035041663049878f381146102b5578063071bafb5146102cd5780630f8a771e146102fc57806312d43a511461030f57806313af403514610322578063143e55e0146103415780631f3634ed1461036657806320aba08b1461037c57806327e7e21e1461038f578063338a0261146103a2578063343aad82146103b5578063355274ea146103c857806340cc8854146103db578063440f19ba146103f1578063454a2ab31461040a5780634995543114610420578063509bf2bf1461043357806351f91066146104465780636626b26d1461045957806367550a35146104805780636c32c0a6146104935780636f78ee0d146104a657806373b38101146104bc5780637a9e5e4b146104d55780637bd2bea7146104f45780637e74325f146105075780637ec9c3b8146105265780637f8661a11461053957806382bf9a751461054f5780638a95a7461461056e5780638ceedb47146105815780638cf0c1911461059a5780638da5cb5b146105ad5780639166cba4146105c057806392b0d721146105d357806399c8d556146105ec5780639f678cca146105ff578063a5cd184e14610612578063ab0783da1461062b578063ace237f51461063e578063b2a1449b14610651578063b3b77a5114610664578063b84d21061461067d578063baa8529c14610693578063bf7e214f146106b5578063c8e13bb4146106c8578063c92aecc4146106db578063cf48d1a6146106ee578063d741e2f91461070d578063d9c27cc614610720578063ddca3f431461073f578063de5f551714610752578063e0ae96e914610768578063e47e7e661461077b578063e95823ad14610791578063f03c7c6e146107a7578063f7c8d634146107ba578063fcfff16f146107d0578063fd221031146107e3578063fdac0025146107f6575b600080fd5b34156102c057600080fd5b6102cb600435610849565b005b34156102d857600080fd5b6102e06109cd565b604051600160a060020a03909116815260200160405180910390f35b341561030757600080fd5b6102e06109dc565b341561031a57600080fd5b6102e06109eb565b341561032d57600080fd5b6102cb600160a060020a03600435166109fa565b341561034c57600080fd5b610354610a6c565b60405190815260200160405180910390f35b341561037157600080fd5b610354600435610a70565b341561038757600080fd5b610354610a85565b341561039a57600080fd5b610354610a8b565b34156103ad57600080fd5b610354610b05565b34156103c057600080fd5b6102cb610b16565b34156103d357600080fd5b610354610bb1565b34156103e657600080fd5b6102cb600435610bb7565b34156103fc57600080fd5b6102cb600435602435610e4b565b341561041557600080fd5b610354600435611077565b341561042b57600080fd5b6103546110af565b341561043e57600080fd5b6103546110b5565b341561045157600080fd5b6103546110bb565b341561046457600080fd5b61046c611149565b604051901515815260200160405180910390f35b341561048b57600080fd5b6102e0611152565b341561049e57600080fd5b610354611161565b34156104b157600080fd5b610354600435611167565b34156104c757600080fd5b6102cb600435602435611197565b34156104e057600080fd5b6102cb600160a060020a0360043516611422565b34156104ff57600080fd5b6102e0611494565b341561051257600080fd5b6102cb600160a060020a03600435166114a3565b341561053157600080fd5b610354611548565b341561054457600080fd5b6102cb600435611636565b341561055a57600080fd5b6102cb600160a060020a0360043516611793565b341561057957600080fd5b61035461182e565b341561058c57600080fd5b6102cb600435602435611889565b34156105a557600080fd5b6103546119d7565b34156105b857600080fd5b6102e06119dd565b34156105cb57600080fd5b6102e06119ec565b34156105de57600080fd5b6102cb6004356024356119fb565b34156105f757600080fd5b610354611c2c565b341561060a57600080fd5b6102cb611c32565b341561061d57600080fd5b6102cb600435602435611dd6565b341561063657600080fd5b610354611f47565b341561064957600080fd5b6102e0611f4d565b341561065c57600080fd5b61046c611f5c565b341561066f57600080fd5b6102cb600435602435611f6a565b341561068857600080fd5b6102cb6004356120ad565b341561069e57600080fd5b6102cb600435600160a060020a03602435166121ac565b34156106c057600080fd5b6102e061226e565b34156106d357600080fd5b61035461227d565b34156106e657600080fd5b610354612283565b34156106f957600080fd5b6102cb600160a060020a0360043516612294565b341561071857600080fd5b6102e061232f565b341561072b57600080fd5b6102cb600160a060020a036004351661233e565b341561074a57600080fd5b6103546123d9565b341561075d57600080fd5b6102e06004356123df565b341561077357600080fd5b6103546123fa565b341561078657600080fd5b61035460043561240a565b341561079c57600080fd5b61046c600435612423565b34156107b257600080fd5b6102e06124ca565b34156107c557600080fd5b6103546004356124d9565b34156107db57600080fd5b6103546124f7565b34156107ee57600080fd5b6102e06125d5565b341561080157600080fd5b61080c6004356125e4565b6040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390f35b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff16156108af57600080fd5b60006108ba8461240a565b116108c457600080fd5b600554600160a060020a03166323b872dd33306108e08761240a565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561093857600080fd5b6102c65a03f1151561094957600080fd5b50505060405180519050151561095e57600080fd5b600454600160a060020a03166340c10f19338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156109b457600080fd5b6102c65a03f115156109c557600080fd5b505050505050565b600354600160a060020a031681565b600454600160a060020a031681565b600654600160a060020a031681565b610a1033600035600160e060020a031916612615565b1515610a1b57600080fd5b60018054600160a060020a031916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b4290565b60009081526019602052604090206001015490565b60145481565b600454600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae657600080fd5b6102c65a03f11515610af757600080fd5b505050604051805191505090565b6000610b0f611c32565b5060165490565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610b8233600035600160e060020a031916612615565b1515610b8d57600080fd5b60125460ff161515610b9e57600080fd5b50506012805461ff001916610100179055565b600d5481565b6000806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610c1685612423565b1580610c24575060125460ff165b1515610c2f57600080fd5b610c38856124d9565b600354600a54919550600160a060020a03908116916340c10f1991168660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610c9857600080fd5b6102c65a03f11515610ca957600080fd5b5050601754600087815260196020526040902060020154610cca925061270b565b60175560008581526019602052604081206002810182905560030155600c54610d7190610d6490610cfc90879061271b565b600754600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d4457600080fd5b6102c65a03f11515610d5557600080fd5b5050506040518051905061271b565b610d6c6110bb565b61275e565b600086815260196020526040902060010154909350831115610da25760008581526019602052604090206001015492505b600454600a54600160a060020a039182169163b753a98c91168560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610dff57600080fd5b6102c65a03f11515610e1057600080fd5b505050600085815260196020526040902060010154610e2f908461270b565b6000958652601960205260409095206001019490945550505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615610eb157600080fd5b60008481526019602052604090205433600160a060020a03908116911614610ed857600080fd5b6000610ee684610d6c612283565b11610ef057600080fd5b600084815260196020526040902060020154610f1790610f1285610d6c612283565b612782565b600085815260196020526040902060020155601754610f3c90610f1285610d6c612283565b601755600084815260196020526040902060030154610f6190610f1285610d6c610b05565b6000858152601960205260409081902060038101929092556002549154600160a060020a03928316926340c10f199291169086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fd657600080fd5b6102c65a03f11515610fe757600080fd5b505050610ff384612423565b1515610ffe57600080fd5b600d54600254600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104957600080fd5b6102c65a03f1151561105a57600080fd5b505050604051805190501115151561107157600080fd5b50505050565b60006110a9826110a4611088611548565b61109f670de0b6b3a764000060020260115461270b565b612792565b61271b565b92915050565b60185481565b600c5481565b60125460009060ff166111405761113b6110d3611548565b600854600160a060020a03166357de26a46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561111b57600080fd5b6102c65a03f1151561112c57600080fd5b50505060405180519050612792565b611144565b6013545b905090565b60125460ff1681565b600754600160a060020a031681565b60115481565b6000818152601960205260408120600301546110a990611189906110a4610b05565b611192846124d9565b61270b565b600080806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff16156111fe57600080fd5b611217866110a461120e8a611167565b610d6c8b6124d9565b60008881526019602052604090206002015490955061123c9061119288610d6c612283565b6000888152601960205260409020600201556017546112619061119288610d6c612283565b60175560008781526019602052604090206003015461128f906111926112878989612782565b610d6c610b05565b6000888152601960205260409081902060030191909155600254600160a060020a031690639dc29fac90339089905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156112fe57600080fd5b6102c65a03f1151561130f57600080fd5b5050600954600160a060020a031690506359e02dd76000604051604001526040518163ffffffff1660e060020a0281526004016040805180830381600087803b151561135a57600080fd5b6102c65a03f1151561136b57600080fd5b505050604051805190602001805190509350935082801561138b57508315155b1561141957600654600b54600160a060020a039182169163bb35783b913391166113b589896127ba565b60405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561140457600080fd5b6102c65a03f1151561141557600080fd5b5050505b50505050505050565b61143833600035600160e060020a031916612615565b151561144357600080fd5b60008054600160a060020a031916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600554600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600a54600160a060020a03161561150f57600080fd5b600160a060020a038316151561152457600080fd5b5050600a8054600160a060020a031916600160a060020a0392909216919091179055565b600454600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b6102c65a03f115156115a357600080fd5b50505060405180511590506116255761113b6115bd61182e565b600454600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561160557600080fd5b6102c65a03f1151561161657600080fd5b5050506040518051905061275e565b506b033b2e3c9fd0803ce800000090565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615806116a55750601254610100900460ff165b15156116b057600080fd5b600554600160a060020a031663a9059cbb336116cb86611077565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561171757600080fd5b6102c65a03f1151561172857600080fd5b50505060405180519050151561173d57600080fd5b600454600160a060020a0316639dc29fac338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156109b457600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46117ff33600035600160e060020a031916612615565b151561180a57600080fd5b505060088054600160a060020a031916600160a060020a0392909216919091179055565b600554600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae657600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46118f533600035600160e060020a031916612615565b151561190057600080fd5b60125460ff1615801561191257508315155b151561191d57600080fd5b6012805460ff191660011790556b033b2e3c9fd0803ce8000000600c55670de0b6b3a76400006011556013849055600554600a54600160a060020a039182169163a9059cbb91168560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156119b157600080fd5b6102c65a03f115156119c257600080fd5b50505060405180519050151561107157600080fd5b60175481565b600154600160a060020a031681565b600254600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4611a6733600035600160e060020a031916612615565b1515611a7257600080fd5b7f6361700000000000000000000000000000000000000000000000000000000000841415611aa457600d839055611071565b7f6d61740000000000000000000000000000000000000000000000000000000000841415611aef576b033b2e3c9fd0803ce8000000831015611ae557600080fd5b600e839055611071565b7f7461780000000000000000000000000000000000000000000000000000000000841415611b42576b033b2e3c9fd0803ce8000000831015611b3057600080fd5b611b38611c32565b600f839055611071565b7f6665650000000000000000000000000000000000000000000000000000000000841415611b95576b033b2e3c9fd0803ce8000000831015611b8357600080fd5b611b8b611c32565b6010839055611071565b7f6178650000000000000000000000000000000000000000000000000000000000841415611be0576b033b2e3c9fd0803ce8000000831015611bd657600080fd5b600c839055611071565b7f6761700000000000000000000000000000000000000000000000000000000000841415611c2757670de0b6b3a7640000831015611c1d57600080fd5b6011839055611071565b611071565b600f5481565b60008080806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615611c9a576109c5565b611ca2610a6c565b9550601454860394508460001415611cb9576109c5565b6014869055600f546b033b2e3c9fd0803ce800000094508414611d84576015549250611ce7600f54866127d2565b9350611cf56015548561271b565b6015819055600254600a54600160a060020a03918216926340c10f199290911690611d2c90611d24908861270b565b60175461271b565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611d6f57600080fd5b6102c65a03f11515611d8057600080fd5b5050505b6010546b033b2e3c9fd0803ce800000014611dac57611da9846110a4601054886127d2565b93505b6b033b2e3c9fd0803ce800000084146109c557611dcb6016548561271b565b601655505050505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460008481526019602052604090205433600160a060020a03908116911614611e5357600080fd5b600084815260196020526040902060010154611e6f908461270b565b6000858152601960205260409081902060010191909155600454600160a060020a03169063b753a98c90339086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ede57600080fd5b6102c65a03f11515611eef57600080fd5b505050611efb84612423565b1515611f0657600080fd5b6000848152601960205260409020600101541580611f3c57506000848152601960205260409020600101546611c37937e0800090115b151561107157600080fd5b600e5481565b600954600160a060020a031681565b601254610100900460ff1681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615611fd057600080fd5b600084815260196020526040902060010154611fec9084612782565b6000858152601960205260409081902060010191909155600454600160a060020a03169063f2d5d56b90339086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561205b57600080fd5b6102c65a03f1151561206c57600080fd5b5050506000848152601960205260409020600101541580611f3c57506000848152601960205260409020600101546611c37937e08000901161107157600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff161561211357600080fd5b60008381526019602052604090205433600160a060020a0390811691161461213a57600080fd5b612143836124d9565b1561215a5761215a83612155856124d9565b611197565b61216383610a70565b1561217a5761217a8361217585610a70565b611dd6565b505060009081526019602052604081208054600160a060020a0319168155600181018290556002810182905560030155565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460008481526019602052604090205433600160a060020a0390811691161461222957600080fd5b600160a060020a038316151561223e57600080fd5b50506000918252601960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600054600160a060020a031681565b60135481565b600061228d611c32565b5060155490565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a461230033600035600160e060020a031916612615565b151561230b57600080fd5b505060078054600160a060020a031916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46123aa33600035600160e060020a031916612615565b15156123b557600080fd5b505060098054600160a060020a031916600160a060020a0392909216919091179055565b60105481565b600090815260196020526040902054600160a060020a031690565b60006111446017546110a4612283565b60006110a9826110a461241b611548565b601154612792565b60008060008061243d6124346110bb565b6110a487610a70565b6007549093506124b090600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561248c57600080fd5b6102c65a03f1151561249d57600080fd5b505050604051805190506110a4876124d9565b91506124be82600e5461271b565b90921015949350505050565b600b54600160a060020a031681565b6000818152601960205260408120600201546110a9906110a4612283565b60006004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff161561255c57600080fd5b6125696018546001612782565b6018819055600081815260196020526040908190208054600160a060020a03191633600160a060020a03169081179091559194507f89b8893b806db50897c8e2362c71571cfaeb9761ee40727f683f1793cda9df169085905190815260200160405180910390a2505090565b600a54600160a060020a031681565b6019602052600090815260409020805460018201546002830154600390930154600160a060020a0390921692909184565b600030600160a060020a031683600160a060020a03161415612639575060016110a9565b600154600160a060020a0384811691161415612657575060016110a9565b600054600160a060020a03161515612671575060006110a9565b60008054600160a060020a03169063b7009613908590309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b15156126ea57600080fd5b6102c65a03f115156126fb57600080fd5b5050506040518051949350505050565b808203828111156110a957600080fd5b60006b033b2e3c9fd0803ce800000061274d612737858561282e565b60026b033b2e3c9fd0803ce80000005b04612782565b81151561275657fe5b049392505050565b60008161274d61277a856b033b2e3c9fd0803ce800000061282e565b600285612747565b808201828110156110a957600080fd5b6000670de0b6b3a764000061274d6127aa858561282e565b6002670de0b6b3a7640000612747565b60008161274d61277a85670de0b6b3a764000061282e565b60006002820615156127f0576b033b2e3c9fd0803ce80000006127f2565b825b90506002820491505b81156110a95761280b838461271b565b9250600282061561282357612820818461271b565b90505b6002820491506127fb565b600081158061284b57505080820282828281151561284857fe5b04145b15156110a957600080fd00a165627a7a72305820ea2e7cee4f94e16167ac6c3d33df7208883b71ca94fe1f3fa977f49e5dce6f8c0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiVox.abi b/chief_keeper/makerdao_utils/abi/SaiVox.abi
new file mode 100644
index 0000000..3b60734
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiVox.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[],"name":"prod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"era","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"how","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"par","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ray","type":"uint256"}],"name":"tell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"way","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"param","type":"bytes32"},{"name":"val","type":"uint256"}],"name":"mold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fix","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ray","type":"uint256"}],"name":"tune","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tau","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"par_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SaiVox.bin b/chief_keeper/makerdao_utils/abi/SaiVox.bin
new file mode 100644
index 0000000..bdc7e6f
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SaiVox.bin
@@ -0,0 +1 @@
+6060604052341561000f57600080fd5b6040516020806109b98339810160405280805160018054600160a060020a03191633600160a060020a031690811790915590925090507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2600481905560028190556b033b2e3c9fd0803ce80000006003556100a06401000000006103a56100a982021704565b600655506100ad565b4290565b6108fd806100bc6000396000f3006060604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630302c68881146100d457806313af4035146100e9578063143e55e0146101085780633a4a42331461012d578063495d32cb1461014057806355deb8fc146101535780635d6542af146101695780637a9e5e4b1461017c5780638da5cb5b1461019b57806392b0d721146101ca578063a551878e146101e3578063becda0ea146101f6578063bf7e214f1461020c578063cfc4af551461021f575b600080fd5b34156100df57600080fd5b6100e7610232565b005b34156100f457600080fd5b6100e7600160a060020a0360043516610326565b341561011357600080fd5b61011b6103a5565b60405190815260200160405180910390f35b341561013857600080fd5b61011b6103a9565b341561014b57600080fd5b61011b6103af565b341561015e57600080fd5b6100e76004356103c0565b341561017457600080fd5b61011b61043e565b341561018757600080fd5b6100e7600160a060020a036004351661044f565b34156101a657600080fd5b6101ae6104ce565b604051600160a060020a03909116815260200160405180910390f35b34156101d557600080fd5b6100e76004356024356104dd565b34156101ee57600080fd5b61011b610584565b341561020157600080fd5b6100e760043561058a565b341561021757600080fd5b6101ae610608565b341561022a57600080fd5b61011b610617565b6000806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46006546102936103a5565b0393508315156102a257610320565b6102aa6103a5565b6006556003546b033b2e3c9fd0803ce8000000146102dd576102d96002546102d46003548761061d565b61067f565b6002555b60055415156102eb57610320565b8360055402925061031c60025460045410610309578360000361030b565b835b6103166003546106c2565b01610714565b6003555b50505050565b61033c33600035600160e060020a031916610765565b151561034757600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b4290565b60055481565b60006103b9610232565b5060025490565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a461042c33600035600160e060020a031916610765565b151561043757600080fd5b5050600455565b6000610448610232565b5060035490565b61046533600035600160e060020a031916610765565b151561047057600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600154600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a461054933600035600160e060020a031916610765565b151561055457600080fd5b7f776179000000000000000000000000000000000000000000000000000000000084141561032057505060035550565b60045481565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46105f633600035600160e060020a031916610765565b151561060157600080fd5b5050600555565b600054600160a060020a031681565b60065481565b600060028206151561063b576b033b2e3c9fd0803ce800000061063d565b825b90506002820491505b811561067957610656838461067f565b9250600282061561066e5761066b818461067f565b90505b600282049150610646565b92915050565b60006b033b2e3c9fd0803ce80000006106b161069b8585610875565b60026b033b2e3c9fd0803ce80000005b0461089d565b8115156106ba57fe5b049392505050565b60006b033b2e3c9fd0803ce8000000821015610701576106ee6b033b2e3c9fd0803ce8000000836108ad565b6b033b2e3c9fd0803ce800000003610679565b506b033b2e3c9fd0803ce7ffffff190190565b60008082600f0b12156107505761074b6b033b2e3c9fd0803ce800000083600003600f0b6b033b2e3c9fd0803ce8000000016108ad565b610679565b50600f0b6b033b2e3c9fd0803ce80000000190565b600030600160a060020a031683600160a060020a0316141561078957506001610679565b600154600160a060020a03848116911614156107a757506001610679565b600054600160a060020a031615156107c157506000610679565b60008054600160a060020a03169063b700961390859030908690604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b151561085357600080fd5b6102c65a03f1151561086457600080fd5b505050604051805190509050610679565b600081158061089257505080820282828281151561088f57fe5b04145b151561067957600080fd5b8082018281101561067957600080fd5b6000816106b16108c9856b033b2e3c9fd0803ce8000000610875565b6002856106ab5600a165627a7a723058202fe42909fb659cfc4fc35f20b30a47f1abd61d497485142af35a50912c9d83a60029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/SimpleMarket.abi b/chief_keeper/makerdao_utils/abi/SimpleMarket.abi
new file mode 100644
index 0000000..2785772
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SimpleMarket.abi
@@ -0,0 +1 @@
+[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogBump","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"LogItemUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogKill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":false,"internalType":"uint128","name":"pay_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"buy_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogMake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"pair","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"indexed":true,"internalType":"address","name":"taker","type":"address"},{"indexed":false,"internalType":"uint128","name":"take_amt","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"give_amt","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"LogTake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"pay_amt","type":"uint256"},{"indexed":true,"internalType":"address","name":"pay_gem","type":"address"},{"indexed":false,"internalType":"uint256","name":"buy_amt","type":"uint256"},{"indexed":true,"internalType":"address","name":"buy_gem","type":"address"}],"name":"LogTrade","type":"event"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id_","type":"bytes32"}],"name":"bump","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancel","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getOffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract ERC20","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"isActive","outputs":[{"internalType":"bool","name":"active","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"last_offer_id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"uint128","name":"pay_amt","type":"uint128"},{"internalType":"uint128","name":"buy_amt","type":"uint128"}],"name":"make","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"}],"name":"offer","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"offers","outputs":[{"internalType":"uint256","name":"pay_amt","type":"uint256"},{"internalType":"contract ERC20","name":"pay_gem","type":"address"},{"internalType":"uint256","name":"buy_amt","type":"uint256"},{"internalType":"contract ERC20","name":"buy_gem","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint128","name":"maxTakeAmount","type":"uint128"}],"name":"take","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/SimpleMarket.bin b/chief_keeper/makerdao_utils/abi/SimpleMarket.bin
new file mode 100644
index 0000000..78d698b
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/SimpleMarket.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50612312806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806382afd23b1161007157806382afd23b146102f45780638a72ea6a1461033a578063b4f9b6c814610437578063c41a360a14610465578063d6febde8146104d3578063f09ea2a614610523576100b4565b8063093f5198146100b9578063232cae0b1461016957806340e58ee5146101875780634579268a146101cd578063496064551461027c578063779997c3146102c6575b600080fd5b610153600480360360808110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff1690602001909291905050506105af565b6040518082815260200191505060405180910390f35b6101716105ee565b6040518082815260200191505060405180910390f35b6101b36004803603602081101561019d57600080fd5b81019080803590602001909291905050506105f4565b604051808215151515815260200191505060405180910390f35b6101f9600480360360208110156101e357600080fd5b8101908080359060200190929190505050610ae7565b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b6102c46004803603604081101561029257600080fd5b810190808035906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050610c81565b005b6102f2600480360360208110156102dc57600080fd5b8101908080359060200190929190505050610cad565b005b6103206004803603602081101561030a57600080fd5b8101908080359060200190929190505050610fe4565b604051808215151515815260200191505060405180910390f35b6103666004803603602081101561035057600080fd5b8101908080359060200190929190505050611024565b604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405180910390f35b6104636004803603602081101561044d57600080fd5b81019080803590602001909291905050506110d4565b005b6104916004803603602081101561047b57600080fd5b81019080803590602001909291905050506110ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610509600480360360408110156104e957600080fd5b81019080803590602001909291908035906020019092919050505061112c565b604051808215151515815260200191505060405180910390f35b6105996004803603608081101561053957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177f565b6040518082815260200191505060405180910390f35b60006105e1836fffffffffffffffffffffffffffffffff1686846fffffffffffffffffffffffffffffffff168761177f565b60001b9050949350505050565b60005481565b60008161060081610fe4565b61060957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16610629826110ec565b73ffffffffffffffffffffffffffffffffffffffff161461064957600080fd5b600260009054906101000a900460ff161561066357600080fd5b6001600260006101000a81548160ff021916908315150217905550610686612231565b600160008581526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600160008581526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160146101000a81549067ffffffffffffffff021916905550506108bb816020015182608001518360000151611cf0565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488846040518082815260200191505060405180910390a1806080015173ffffffffffffffffffffffffffffffffffffffff1681602001518260600151604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001208560001b7f9577941d28fff863bfbee4694a6a4a56fb09e169619189d2eaa750b5b4819995846020015185606001518660000151876040015142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a460019250506000600260006101000a81548160ff02191690831515021790555050919050565b600080600080610af5612231565b600160008781526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905080600001518160200151826040015183606001519450945094509450509193509193565b610ca08260001c826fffffffffffffffffffffffffffffffff1661112c565b610ca957600080fd5b5050565b8060001c610cba81610fe4565b610cc357600080fd5b60008260001c90506001600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014019250505060405160208183030381529060405280519060200120847f70a14c213064359ede031fd2a1645a11ce2ec825ffe6ab5cfb5b160c3ef4d0a26001600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600087815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546001600089815260200190815260200160002060020154600160008a815260200190815260200160002060040160149054906101000a900467ffffffffffffffff16604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a4505050565b6000806001600084815260200190815260200160002060040160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16119050919050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900467ffffffffffffffff16905086565b6110e08160001c6105f4565b6110e957600080fd5b50565b60006001600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008261113881610fe4565b61114157600080fd5b600260009054906101000a900460ff161561115b57600080fd5b6001600260006101000a81548160ff02191690831515021790555061117e612231565b600160008681526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600081600001516112fb868460400151611dc1565b8161130257fe5b04905080816fffffffffffffffffffffffffffffffff161461132357600080fd5b84856fffffffffffffffffffffffffffffffff161461134157600080fd5b60008514806113505750600081145b8061135e5750816000015185115b8061136c5750816040015181115b1561137c5760009350505061175d565b61138a826000015186611e56565b60016000888152602001908152602001600020600001819055506113b2826040015182611e56565b60016000888152602001908152602001600020600201819055506113e0826060015133846080015184611ed9565b6113ef82602001513387611cf0565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488866040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff16826080015173ffffffffffffffffffffffffffffffffffffffff1683602001518460600151604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001207f3383e3357c77fd2e3a4b30deea81179bc70a795d053d14d5b7f2f01d0fd4596f8960001b866020015187606001518b8842604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405180910390a4816060015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff167f819e390338feffe95e2de57172d6faf337853dfd15c7a09a32d76f7fd24438758784604051808381526020018281526020019250505060405180910390a360006001600088815260200190815260200160002060000154141561175657600160008781526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160146101000a81549067ffffffffffffffff021916905550505b6001935050505b6000600260006101000a81548160ff0219169083151502179055505092915050565b6000600260009054906101000a900460ff161561179b57600080fd5b6001600260006101000a81548160ff02191690831515021790555084856fffffffffffffffffffffffffffffffff16146117d457600080fd5b82836fffffffffffffffffffffffffffffffff16146117f257600080fd5b600085116117ff57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561183957600080fd5b6000831161184657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188057600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118b957600080fd5b6118c1612231565b8581600001818152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381604001818152505082816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505033816080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050428160a0019067ffffffffffffffff16908167ffffffffffffffff16815250506119a5611fdf565b915080600160008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050611ae285333089611ed9565b7fa2c251311b1a7a475913900a2a73dc9789a21b04bc737e050bbc506dd4eb3488826040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff168584604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001208360001b7f773ff502687307abfa024ac9f62f9752a0d210dac2ffd9a29e38e12e2ea82c8288878b8a42604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a4506000600260006101000a81548160ff021916908315150217905550949350505050565b611dbc838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ffa565b505050565b600080821480611dde5750828283850292508281611ddb57fe5b04145b611e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115611ed3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b611fd9848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ffa565b50505050565b60008060008154809291906001019190505550600054905090565b6000823b905060008111612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f74206120636f6e747261637400000000000000000000000000000000000081525060200191505060405180910390fd5b600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b602083106120c557805182526020820191506020810190506020830392506120a2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612127576040519150601f19603f3d011682016040523d82523d6000602084013e61212c565b606091505b5091509150816121a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f546f6b656e2063616c6c206661696c656400000000000000000000000000000081525060200191505060405180910390fd5b60008151111561222a578080602001905160208110156121c357600080fd5b8101908080519060200190929190505050612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806122b4602a913960400191505060405180910390fd5b5b5050505050565b6040518060c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152509056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158204428ff959a9f87dbd240a388f5c6b8e2cf6521836fd98cc25ede5a274a276c2864736f6c634300050c0032
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Spotter.abi b/chief_keeper/makerdao_utils/abi/Spotter.abi
new file mode 100644
index 0000000..043c798
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Spotter.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"ilk","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"spot","type":"uint256"}],"name":"Poke","type":"event"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"pip_","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"contract PipLike","name":"pip","type":"address"},{"internalType":"uint256","name":"mat","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"par","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Spotter.bin b/chief_keeper/makerdao_utils/abi/Spotter.bin
new file mode 100644
index 0000000..1961d32
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Spotter.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506040516111893803806111898339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600381905550600160048190555050611095806100f46000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636924500911610071578063692450091461020d578063957aa58c146102175780639c52a7f114610235578063bf353dbb14610279578063d9638d36146102d1578063ebecb39d14610346576100b4565b80631504460f146100b95780631a0b287e146100e757806329ae81141461012957806336569e7714610161578063495d32cb146101ab57806365fae35e146101c9575b600080fd5b6100e5600480360360208110156100cf57600080fd5b810190808035906020019092919050505061039e565b005b610127600480360360608110156100fd57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506105bd565b005b61015f6004803603604081101561013f57600080fd5b8101908080359060200190929190803590602001909291905050506107d7565b005b6101696109dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b3610a02565b6040518082815260200191505060405180910390f35b61020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a08565b005b610215610b36565b005b61021f610c27565b6040518082815260200191505060405180910390f35b6102776004803603602081101561024b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2d565b005b6102bb6004803603602081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5b565b6040518082815260200191505060405180910390f35b6102fd600480360360208110156102e757600080fd5b8101908080359060200190929190505050610d73565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61039c6004803603606081101561035c57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b6000806001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff1660e01b81526004016040805180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050506040513d604081101561044857600080fd5b810190808051906020019092919080519060200190929190505050915091506000816104755760006104b1565b6104b061049461048c8560001c633b9aca0061100b565b600354611037565b6001600087815260200190815260200160002060010154611037565b5b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a0b287e85836040518363ffffffff1660e01b815260040180838152602001807f73706f740000000000000000000000000000000000000000000000000000000081525060200182815260200192505050600060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b505050507fdfd7467e425a8107cfd368d159957692c25085aacbcf5228ce08f10f2146486e84848360405180848152602001838152602001828152602001935050505060405180910390a150505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6001600454146106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f6d617400000000000000000000000000000000000000000000000000000000008214156107315780600160008581526020019081526020016000206001018190555061079f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f706172000000000000000000000000000000000000000000000000000000000082141561093757806003819055506109a5565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006004819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610ee3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f7069700000000000000000000000000000000000000000000000000000000000821415610f6557806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600080821480611028575082828385029250828161102557fe5b04145b61103157600080fd5b92915050565b600081611050846b033b2e3c9fd0803ce800000061100b565b8161105757fe5b0490509291505056fea265627a7a72315820cc8bc14aefcb0387fb6a94bcc70beba2a64c99c2965d6742ff8cd1f88abf365f64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/TokenFaucet.abi b/chief_keeper/makerdao_utils/abi/TokenFaucet.abi
new file mode 100644
index 0000000..fb64f91
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TokenFaucet.abi
@@ -0,0 +1 @@
+[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"},{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"gulp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"}],"name":"gulp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"},{"internalType":"uint256","name":"amt_","type":"uint256"}],"name":"setAmt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20Like","name":"gem","type":"address"}],"name":"shut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/TokenFaucet.bin b/chief_keeper/makerdao_utils/abi/TokenFaucet.bin
new file mode 100644
index 0000000..3b23bee
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TokenFaucet.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b9806100646000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806365fae35e1161006657806365fae35e146102495780638c28cbe81461028d5780639c52a7f1146102d1578063bf353dbb14610315578063d7488b791461036d57610093565b806309615662146100985780631f0575f9146100f05780632767d5e4146101895780633488685714610205575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103bb565b6040518082815260200191505060405180910390f35b6101876004803603604081101561010657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561014357600080fd5b82018360208201111561015557600080fd5b8035906020019184602083028401116401000000008311171561017757600080fd5b90919293919293905050506103d3565b005b6101eb6004803603604081101561019f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083a565b604051808215151515815260200191505060405180910390f35b6102476004803603602081101561021b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610869565b005b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a0d565b005b6102cf600480360360208110156102a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ad2565b005b610313600480360360208110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e94565b005b6103576004803603602081101561032b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f59565b6040518082815260200191505060405180910390f35b6103b96004803603604081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f71565b005b60016020528060005260406000206000915090505481565b61041f600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483839050611037565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561049c57600080fd5b505afa1580156104b0573d6000803e3d6000fd5b505050506040513d60208110156104c657600080fd5b8101908080519060200190929190505050101561054b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f746f6b656e2d6661756365743a206e6f7420656e6f7567682062616c616e636581525060200191505060405180910390fd5b60008090505b82829050811015610834576002600084848481811061056c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610664576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110646021913960400191505060405180910390fd5b60016002600085858581811061067657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84848481811061074957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561080f57600080fd5b505af1158015610823573d6000803e3d6000fd5b505050508080600101915050610551565b50505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108b457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094e57600080fd5b505afa158015610962573d6000803e3d6000fd5b505050506040513d602081101561097857600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156109f257600080fd5b505af1158015610a06573d6000803e3d6000fd5b5050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a5857600080fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610bb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110646021913960400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c6f57600080fd5b505afa158015610c83573d6000803e3d6000fd5b505050506040513d6020811015610c9957600080fd5b81019080805190602001909291905050501015610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f746f6b656e2d6661756365743a206e6f7420656e6f7567682062616c616e636581525060200191505060405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b5050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610edf57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fbc57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600080821480611054575082828385029250828161105157fe5b04145b61105d57600080fd5b9291505056fe746f6b656e2d6661756365743a20616c7265616479207573656420666175636574a265627a7a723158208ccd8b58ad04e087c1319d56482c4b52ea3e310705838b3d207f1c09a65de4ad64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/TokenTransferProxy.abi b/chief_keeper/makerdao_utils/abi/TokenTransferProxy.abi
new file mode 100644
index 0000000..5423000
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TokenTransferProxy.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"}],"name":"addAuthorizedAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"authorities","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"}],"name":"removeAuthorizedAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"authorized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAuthorizedAddresses","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":true,"name":"caller","type":"address"}],"name":"LogAuthorizedAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":true,"name":"caller","type":"address"}],"name":"LogAuthorizedAddressRemoved","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/TokenTransferProxy.bin b/chief_keeper/makerdao_utils/abi/TokenTransferProxy.bin
new file mode 100644
index 0000000..eeb3613
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TokenTransferProxy.bin
@@ -0,0 +1 @@
+60606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b610bd6806100576000396000f3006060604052361561008c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315dacbea1461008e57806342f1181e14610123578063494503d41461015957806370712939146101b95780638da5cb5b146101ef578063b918161114610241578063d39de6e91461028f578063f2fde38b14610304575bfe5b341561009657fe5b610109600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061033a565b604051808215151515815260200191505060405180910390f35b341561012b57fe5b610157600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610495565b005b341561016157fe5b610177600480803590602001909190505061066d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101c157fe5b6101ed600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106ad565b005b34156101f757fe5b6101ff610964565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024957fe5b610275600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061098a565b604051808215151515815260200191505060405180910390f35b341561029757fe5b61029f6109aa565b60405180806020018281038252838181518152602001915080519060200190602002808383600083146102f1575b8051825260208311156102f1576020820191506020810190506020830392506102cd565b5050509050019250505060405180910390f35b341561030c57fe5b610338600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a3f565b005b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103955760006000fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561047157fe5b6102c65a03f1151561047f57fe5b5050506040518051905090505b5b949350505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f25760006000fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561054d5760006000fd5b6001600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600280548060010182816105b99190610b19565b916000526020600020900160005b84909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f94bb87f4c15c4587ff559a7584006fa01ddf9299359be6b512b94527aa961aca60405180905060405180910390a35b5b505b50565b60028181548110151561067c57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070c5760006000fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156107665760006000fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600091505b6002805490508210156108ff578273ffffffffffffffffffffffffffffffffffffffff166002838154811015156107ed57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108f157600260016002805490500381548110151561084d57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028381548110151561088957fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002818180549050039150816108eb9190610b45565b506108ff565b5b81806001019250506107ba565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff5b347a1e40749dd050f5f07fbdbeb7e3efa9756903044dd29401fd1d4bb4a1c60405180905060405180910390a35b5b505b5050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6109b2610b71565b6002805480602002602001604051908101604052809291908181526020018280548015610a3457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109ea575b505050505090505b90565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a9c5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b145780600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b50565b815481835581811511610b4057818360005260206000209182019101610b3f9190610b85565b5b505050565b815481835581811511610b6c57818360005260206000209182019101610b6b9190610b85565b5b505050565b602060405190810160405280600081525090565b610ba791905b80821115610ba3576000816000905550600101610b8b565b5090565b905600a165627a7a72305820b441558beff1ed20dc676d9167f3f7c910f731b2a1909a6147af9934964164020029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/TxManager.abi b/chief_keeper/makerdao_utils/abi/TxManager.abi
new file mode 100644
index 0000000..fe4e3e5
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TxManager.abi
@@ -0,0 +1 @@
+[{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"address[]"},{"name":"script","type":"bytes"}],"name":"execute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/TxManager.bin b/chief_keeper/makerdao_utils/abi/TxManager.bin
new file mode 100644
index 0000000..242bcc1
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/TxManager.bin
@@ -0,0 +1 @@
+606060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2610daf806100976000396000f30060606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313af4035146100725780633bf30f85146100ab5780637a9e5e4b146101485780638da5cb5b14610181578063bf7e214f146101d6575b600080fd5b341561007d57600080fd5b6100a9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061022b565b005b34156100b657600080fd5b61014660048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061030d565b005b341561015357600080fd5b61017f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108fe565b005b341561018c57600080fd5b6101946109de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e157600080fd5b6101e9610a04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610259336000357fffffffff0000000000000000000000000000000000000000000000000000000016610a29565b151561026457600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600080600080600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46103eb336000357fffffffff0000000000000000000000000000000000000000000000000000000016610a29565b15156103f657600080fd5b600094505b8651851015610715576105ea878681518110151561041557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156104c157600080fd5b6102c65a03f115156104d257600080fd5b5050506040518051905088878151811015156104ea57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156105ca57600080fd5b6102c65a03f115156105db57600080fd5b50505060405180519050610c88565b935086858151811015156105fa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156106e257600080fd5b6102c65a03f115156106f357600080fd5b50505060405180519050151561070857600080fd5b84806001019550506103fb565b61071e86610ca2565b600092505b86518310156108f557868381518110151561073a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33898681518110151561076e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561081a57600080fd5b6102c65a03f1151561082b57600080fd5b505050604051805190506000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156108c257600080fd5b6102c65a03f115156108d357600080fd5b5050506040518051905015156108e857600080fd5b8280600101935050610723565b50505050505050565b61092c336000357fffffffff0000000000000000000000000000000000000000000000000000000016610a29565b151561093757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a685760019050610c82565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ac75760019050610c82565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b265760009050610c82565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b1515610c6457600080fd5b6102c65a03f11515610c7557600080fd5b5050506040518051905090505b92915050565b600081831115610c985781610c9a565b825b905092915050565b600080600080600093505b8451841015610d1157610cc08585610d18565b9250610ccf8560148601610d62565b9150610ce18560206014870101610d73565b905060008083836000876113885a03f160008114610cfe57610d03565b600080fd5b508160340184019350610cad565b5050505050565b600080610d258484610d62565b90506c010000000000000000000000007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082160491505092915050565b600081602001830151905092915050565b60008160200183019050929150505600a165627a7a72305820f90295fe178d350371d1a0b88c6e21b2833e86c2b33d36541eed63402d03a7ff0029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/Vat.abi b/chief_keeper/makerdao_utils/abi/Vat.abi
new file mode 100644
index 0000000..b65be5c
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Vat.abi
@@ -0,0 +1 @@
+[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg3","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"Line","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"can","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"int256","name":"rate","type":"int256"}],"name":"fold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"fork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"address","name":"w","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"gem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"i","type":"bytes32"},{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"address","name":"w","type":"address"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"grab","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"heal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ilks","outputs":[{"internalType":"uint256","name":"Art","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"spot","type":"uint256"},{"internalType":"uint256","name":"line","type":"uint256"},{"internalType":"uint256","name":"dust","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"int256","name":"wad","type":"int256"}],"name":"slip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"v","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"suck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"urns","outputs":[{"internalType":"uint256","name":"ink","type":"uint256"},{"internalType":"uint256","name":"art","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Vat.bin b/chief_keeper/makerdao_utils/abi/Vat.bin
new file mode 100644
index 0000000..54421a9
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Vat.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a819055506134b58061006c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637cdd3fde116100f9578063bb35783b11610097578063dc4d20fa11610071578063dc4d20fa1461096c578063f059212a146109b0578063f24e23eb14610a08578063f37ac61c14610a76576101c4565b8063bb35783b14610848578063bf353dbb146108b6578063d9638d361461090e576101c4565b80639c52a7f1116100d35780639c52a7f11461074a578063a3b22fc41461078e578063b65337df146107d2578063babe8a3f1461082a576101c4565b80637cdd3fde14610652578063870c616d146106aa578063957aa58c1461072c576101c4565b80634538c4eb11610166578063692450091161014057806369245009146104ac5780636c25b346146104b6578063760887031461050e5780637bab3f40146105b0576101c4565b80634538c4eb146103785780636111be2e146103f057806365fae35e14610468576101c4565b80632424be5c116101a25780632424be5c1461028b57806329ae8114146102f45780632d61a3551461032c5780633b6631951461034a576101c4565b80630dca59c1146101c95780631a0b287e146101e7578063214414d514610229575b600080fd5b6101d1610aa4565b6040518082815260200191505060405180910390f35b610227600480360360608110156101fd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610aaa565b005b6102756004803603604081101561023f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d58565b6040518082815260200191505060405180910390f35b6102d7600480360360408110156102a157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7d565b604051808381526020018281526020019250505060405180910390f35b61032a6004803603604081101561030a57600080fd5b810190808035906020019092919080359060200190929190505050610dae565b005b610334610fb5565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610fbb565b005b6103da6004803603604081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061115a565b6040518082815260200191505060405180910390f35b6104666004803603608081101561040657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117f565b005b6104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611392565b005b6104b461153a565b005b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162d565b6040518082815260200191505060405180910390f35b6105ae600480360360c081101561052457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611645565b005b610650600480360360c08110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e31565b005b6106a86004803603606081101561066857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612130565b005b61072a600480360360a08110156106c057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506122cc565b005b610734612700565b6040518082815260200191505060405180910390f35b61078c6004803603602081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612706565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ae565b005b610828600480360360608110156107e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612967565b005b610832612bac565b6040518082815260200191505060405180910390f35b6108b46004803603606081101561085e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bb2565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d80565b6040518082815260200191505060405180910390f35b61093a6004803603602081101561092457600080fd5b8101908080359060200190929190505050612d98565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dce565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b6040518082815260200191505060405180910390f35b610a7460048036036060811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea0565b005b610aa260048036036020811015610a8c57600080fd5b81019080803590602001909291905050506130ca565b005b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f73706f7400000000000000000000000000000000000000000000000000000000821415610c1e57806002600085815260200190815260200160002060020181905550610d1e565b7f6c696e6500000000000000000000000000000000000000000000000000000000821415610c6657806002600085815260200190815260200160002060030181905550610d1d565b7f6475737400000000000000000000000000000000000000000000000000000000821415610cae57806002600085815260200190815260200160002060040181905550610d1c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f4c696e6500000000000000000000000000000000000000000000000000000000821415610f0e5780600981905550610f7c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010154146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce800000060026000838152602001908152602001600020600101819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b6001602052816000526040600020602052806000526040600020600091509150505481565b6111898333613244565b6111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6112556004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b6004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113036004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b6004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a54146114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600a819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450565b60056020528060005260406000206000915090505481565b6001600a54146116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c5613437565b6003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905061173e613451565b600260008981526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008160200151141561180b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f696c6b2d6e6f742d696e69740000000000000000000000000000000081525060200191505060405180910390fd5b611819826000015185613338565b826000018181525050611830826020015184613338565b826020018181525050611847816000015184613338565b8160000181815250506000611860826020015185613377565b90506000611876836020015185602001516133b2565b905061188460075483613338565b6007819055506118c060008613156118bb85606001516118ac876000015188602001516133b2565b111560095460075411156133de565b6133eb565b611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f6365696c696e672d657863656564656400000000000000000000000081525060200191505060405180910390fd5b611961611947600087131560008912156133de565b611959866000015186604001516133b2565b8311156133eb565b6119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d73616665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119f76119e8600087131560008912156133de565b6119f28b33613244565b6133eb565b611a69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7500000000000000000000000000000081525060200191505060405180910390fd5b611a806000871315611a7b8a33613244565b6133eb565b611af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7600000000000000000000000000000081525060200191505060405180910390fd5b611b096000861215611b048933613244565b6133eb565b611b7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7700000000000000000000000000000081525060200191505060405180910390fd5b611b93600085602001511484608001518310156133eb565b611c05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f5661742f6475737400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c5f600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133f8565b600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cfc600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613338565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008c815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505082600260008c81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008981526020019081526020016000209050611f5e826000015485613338565b8260000181905550611f74826001015484613338565b8260010181905550611f8a816000015484613338565b81600001819055506000611fa2826001015485613377565b9050611ffe600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866133f8565b600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133f8565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ea600854826133f8565b6008819055505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b61223e6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006002600089815260200190815260200160002090506123998360000154866133f8565b83600001819055506123af8360010154856133f8565b83600101819055506123c5826000015486613338565b82600001819055506123db826001015485613338565b826001018190555060006123f7846001015483600101546133b2565b9050600061240d846001015484600101546133b2565b905061242b61241c8a33613244565b6124268a33613244565b6133de565b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6124af856000015484600201546133b2565b821115612524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d7372630000000000000000000000000000000081525060200191505060405180910390fd5b612536846000015484600201546133b2565b8111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d6473740000000000000000000000000000000081525060200191505060405180910390fd5b6125c3836004015483101560008760010154146133eb565b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d737263000000000000000000000000000000000000000081525060200191505060405180910390fd5b61264d836004015482101560008660010154146133eb565b6126bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d647374000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050505050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000209050612ab8816001015483613338565b81600101819055506000612ad0826000015484613377565b9050612b1b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6a60075482613338565b60078190555050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60095481565b612bbc8333613244565b612c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b612c77600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d03600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60066020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b612f9d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130786008548261331e565b60088190555061308a6007548261331e565b6007819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6000339050613118600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a4600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f360085483613304565b60088190555061320560075483613304565b600781905550505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60006132fc8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161460018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133eb565b905092915050565b600082828403915081111561331857600080fd5b92915050565b600082828401915081101561333257600080fd5b92915050565b6000818301905060008212158061334f5750828111155b61335857600080fd5b6000821315806133685750828110155b61337157600080fd5b92915050565b60008183029050600083121561338c57600080fd5b60008214806133a35750828282816133a057fe5b05145b6133ac57600080fd5b92915050565b6000808214806133cf57508282838502925082816133cc57fe5b04145b6133d857600080fd5b92915050565b6000818316905092915050565b6000818317905092915050565b6000818303905060008213158061340f5750828111155b61341857600080fd5b6000821215806134285750828110155b61343157600080fd5b92915050565b604051806040016040528060008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a72315820878e3b124dfa88151bd1bf90c68fc464824973172c6ab01988b5eff1ea7d179264736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/Vow.abi b/chief_keeper/makerdao_utils/abi/Vow.abi
new file mode 100644
index 0000000..5382bb7
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Vow.abi
@@ -0,0 +1 @@
+[{"inputs":[{"internalType":"address","name":"vat_","type":"address"},{"internalType":"address","name":"flapper_","type":"address"},{"internalType":"address","name":"flopper_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"constant":true,"inputs":[],"name":"Ash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Sin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tab","type":"uint256"}],"name":"fess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"flap","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"flapper","outputs":[{"internalType":"contract FlapLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"era","type":"uint256"}],"name":"flog","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"flop","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"flopper","outputs":[{"internalType":"contract FlopLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"heal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"live","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sump","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vat","outputs":[{"internalType":"contract VatLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
diff --git a/chief_keeper/makerdao_utils/abi/Vow.bin b/chief_keeper/makerdao_utils/abi/Vow.bin
new file mode 100644
index 0000000..554a3fc
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/Vow.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506040516128e63803806128e68339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561020057600080fd5b505af1158015610214573d6000803e3d6000fd5b505050506001600c819055505050506126b4806102326000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063697efb78116100c3578063cb5cc1091161007c578063cb5cc109146104a9578063d0adc35f146104eb578063d4e8be8314610509578063d7ee674b14610557578063e433054514610585578063f37ac61c146105a357610158565b8063697efb7814610385578063957aa58c146103b35780639c52a7f1146103d1578063bbbb0d7b14610415578063bf353dbb14610433578063c349d3621461048b57610158565b80634081d73a116101155780634081d73a146102675780635ca0d723146102b157806364bd7013146102fb57806365fae35e1461031957806368110b2f1461035d578063692450091461037b57610158565b80630e01198b1461015d5780631b8e8cfa1461017b5780632506855a1461019957806329ae8114146101c75780632a1d2b3c146101ff57806336569e771461021d575b600080fd5b6101656105d1565b6040518082815260200191505060405180910390f35b610183610a69565b6040518082815260200191505060405180910390f35b6101c5600480360360208110156101af57600080fd5b8101908080359060200190929190505050610a6f565b005b6101fd600480360360408110156101dd57600080fd5b810190808035906020019092919080359060200190929190505050610d0b565b005b610207610f6c565b6040518082815260200191505060405180910390f35b610225610f72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61026f610f98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610fbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610303610fe4565b6040518082815260200191505060405180910390f35b61035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fea565b005b610365611190565b6040518082815260200191505060405180910390f35b610383611196565b005b6103b16004803603602081101561039b57600080fd5b8101908080359060200190929190505050611761565b005b6103bb611891565b6040518082815260200191505060405180910390f35b610413600480360360208110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611897565b005b61041d6119c5565b6040518082815260200191505060405180910390f35b6104756004803603602081101561044957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b610493611dd1565b6040518082815260200191505060405180910390f35b6104d5600480360360208110156104bf57600080fd5b8101908080359060200190929190505050611dd7565b6040518082815260200191505060405180910390f35b6104f3611def565b6040518082815260200191505060405180910390f35b6105556004803603604081101561051f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df5565b005b6105836004803603602081101561056d57600080fd5b81019080803590602001909291905050506121bf565b005b61058d6122b4565b6040518082815260200191505060405180910390f35b6105cf600480360360208110156105b957600080fd5b81019080803590602001909291905050506122ba565b005b60006106c36106bb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067857600080fd5b505afa15801561068c573d6000803e3d6000fd5b505050506040513d60208110156106a257600080fd5b8101908080519060200190929190505050600a54612631565b600b54612631565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d602081101561078c57600080fd5b81019080805190602001909291905050501015610811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b60006109036108fb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b14610976576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f566f772f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca40c419600a5460006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156109f657600080fd5b505af1158015610a0a573d6000803e3d6000fd5b505050506040513d6020811015610a2057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b600b5481565b600654811115610ae7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d656e6f7567682d617368000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b8101908080519060200190929190505050811115610c36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b610c426006548261264b565b600681905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f7761697400000000000000000000000000000000000000000000000000000000821415610df35780600781905550610f35565b7f62756d7000000000000000000000000000000000000000000000000000000000821415610e275780600a81905550610f34565b7f73756d7000000000000000000000000000000000000000000000000000000000821415610e5b5780600981905550610f33565b7f64756d7000000000000000000000000000000000000000000000000000000000821415610e8f5780600881905550610f32565b7f68756d7000000000000000000000000000000000000000000000000000000000821415610ec35780600b81905550610f31565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c5414611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c54146112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060006005819055506000600681905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2f91af2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c6116de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115c457600080fd5b505afa1580156115d8573d6000803e3d6000fd5b505050506040513d60208110156115ee57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169e57600080fd5b505afa1580156116b2573d6000803e3d6000fd5b505050506040513d60208110156116c857600080fd5b8101908080519060200190929190505050612665565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561171457600080fd5b505af1158015611728573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611832600460004281526020019081526020016000205482612631565b600460004281526020019081526020016000208190555061185560055482612631565b6005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600c5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461194b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000611ab7611aaf600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a6c57600080fd5b505afa158015611a80573d6000803e3d6000fd5b505050506040513d6020811015611a9657600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b6009541115611b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b810190808051906020019092919050505014611c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f566f772f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b611c8b600654600954612631565b600681905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e9cd24306008546009546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050602060405180830381600087803b158015611d4657600080fd5b505af1158015611d5a573d6000803e3d6000fd5b505050506040513d6020811015611d7057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60095481565b60046020528060005260406000206000915090505481565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ea9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c6170706572000000000000000000000000000000000000000000000000008214156120ab57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b5050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561208e57600080fd5b505af11580156120a2573d6000803e3d6000fd5b50505050612188565b7f666c6f70706572000000000000000000000000000000000000000000000000008214156121195780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612187565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b426121cc82600754612631565b1115612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b61225f600554600460008481526020019081526020016000205461264b565b600581905550600060046000838152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d602081101561238357600080fd5b8101908080519060200190929190505050811115612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b6124f96124f1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124ae57600080fd5b505afa1580156124c2573d6000803e3d6000fd5b505050506040513d60208110156124d857600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b81111561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600082828401915081101561264557600080fd5b92915050565b600082828403915081111561265f57600080fd5b92915050565b6000818311156126755781612677565b825b90509291505056fea265627a7a72315820c35479a859eedc6bf3c1071ef2752c0592937c7f7a76c8990d9708235fd53ebf64736f6c634300050c0032
diff --git a/chief_keeper/makerdao_utils/abi/ZRXToken.abi b/chief_keeper/makerdao_utils/abi/ZRXToken.abi
new file mode 100644
index 0000000..7955c39
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ZRXToken.abi
@@ -0,0 +1 @@
+[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/ZRXToken.bin b/chief_keeper/makerdao_utils/abi/ZRXToken.bin
new file mode 100644
index 0000000..30e76a1
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/ZRXToken.bin
@@ -0,0 +1 @@
+60606040526b033b2e3c9fd0803ce8000000600355341561001c57fe5b5b600354600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b610b82806100746000396000f30060606040523615610097576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610099578063095ea7b31461013257806318160ddd1461018957806323b872dd146101af578063313ce5671461022557806370a082311461025157806395d89b411461029b578063a9059cbb14610334578063dd62ed3e1461038b575bfe5b34156100a157fe5b6100a96103f4565b60405180806020018281038252838181518152602001915080519060200190808383600083146100f8575b8051825260208311156100f8576020820191506020810190506020830392506100d4565b505050905090810190601f1680156101245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013a57fe5b61016f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061042e565b604051808215151515815260200191505060405180910390f35b341561019157fe5b610199610521565b6040518082815260200191505060405180910390f35b34156101b757fe5b61020b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610527565b604051808215151515815260200191505060405180910390f35b341561022d57fe5b610235610857565b604051808260ff1660ff16815260200191505060405180910390f35b341561025957fe5b610285600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085c565b6040518082815260200191505060405180910390f35b34156102a357fe5b6102ab6108a6565b60405180806020018281038252838181518152602001915080519060200190808383600083146102fa575b8051825260208311156102fa576020820191506020810190506020830392506102d6565b505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033c57fe5b610371600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108e0565b604051808215151515815260200191505060405180910390f35b341561039357fe5b6103de600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ace565b6040518082815260200191505060405180910390f35b604060405190810160405280601181526020017f30782050726f746f636f6c20546f6b656e00000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60035481565b60006000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105f95750828110155b80156106855750600060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b156108455782600060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107d75782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915061084f565b6000915061084f565b5b509392505050565b601281565b6000600060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b604060405190810160405280600381526020017f5a5258000000000000000000000000000000000000000000000000000000000081525081565b600081600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109b15750600060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610abe5781600060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ac8565b60009050610ac8565b5b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b929150505600a165627a7a72305820d31ec12b6fe4e3204b5bdd3a3cafc924f0101471e7aa3e9460b81496e9067ec70029
\ No newline at end of file
diff --git a/chief_keeper/makerdao_utils/abi/diff-abi.sh b/chief_keeper/makerdao_utils/abi/diff-abi.sh
new file mode 100755
index 0000000..5b0636d
--- /dev/null
+++ b/chief_keeper/makerdao_utils/abi/diff-abi.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+# This script is useful when updating ABIs as newer contracts are released.
+vimdiff <(git show HEAD:pymaker/abi/$@ | jq '.') <(jq '.' < $@)
diff --git a/chief_keeper/makerdao_utils/approval.py b/chief_keeper/makerdao_utils/approval.py
new file mode 100644
index 0000000..cb0f5ac
--- /dev/null
+++ b/chief_keeper/makerdao_utils/approval.py
@@ -0,0 +1,96 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2017-2018 reverendus
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import logging
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.utils.big_number import Wad
+
+from chief_keeper.makerdao_utils.token import ERC20Token
+from chief_keeper.makerdao_utils.transactional import TxManager
+
+def directly(**kwargs):
+ """Approval function: Approves the caller to access tokens directly.
+
+ This function is meant to be passed as a parameter to the `approve(...)` method
+ of `Tub`, `SimpleMarket`, 'EtherDelta', 'TxManager', `ZrxExchange` and possibly
+ others in the future.
+ """
+
+ def approval_function(token: ERC20Token, spender_address: Address, spender_name: str):
+ address_to_check = kwargs['from_address'] if 'from_address' in kwargs else Address(token.web3.eth.defaultAccount)
+
+ if token.allowance_of(address_to_check, spender_address) < Wad(2 ** 128 - 1):
+ logger = logging.getLogger()
+ logger.info(f"Approving {spender_name} ({spender_address}) to access our {token.address} directly")
+ if not token.approve(spender_address).transact(**kwargs):
+ raise RuntimeError("Approval failed!")
+
+ return approval_function
+
+
+def via_tx_manager(tx_manager: TxManager, **kwargs):
+ """Approval function: Approves the caller to access tokens via the `TxManager`.
+
+ This function is meant to be passed as a parameter to the `approve(...)` method
+ of `Tub`, `SimpleMarket`, 'EtherDelta', 'TxManager', `ZrxExchange` and possibly
+ others in the future.
+ """
+ assert(isinstance(tx_manager, TxManager))
+
+ def approval_function(token: ERC20Token, spender_address: Address, spender_name: str):
+ if token.allowance_of(tx_manager.address, spender_address) < Wad(2 ** 128 - 1):
+ logger = logging.getLogger()
+ logger.info(f"Approving {spender_name} ({spender_address}) to access our {token.address}"
+ f" via TxManager {tx_manager.address}")
+ if not tx_manager.execute([], [(token.approve(spender_address).invocation())]).transact(**kwargs):
+ raise RuntimeError("Approval failed!")
+
+ return approval_function
+
+
+def hope_directly(**kwargs):
+ """Approval function: Approves the caller to access tokens directly.
+
+ This function is meant to be passed as a parameter to the `approve(...)` method
+ of `Flipper` and `Flopper` and possibly others in the future.
+ """
+
+ move_abi = [{'constant': False, 'inputs': [{'name': 'guy', 'type': 'address'}], 'name': 'hope', 'outputs': [],
+ 'payable': False, 'stateMutability': 'nonpayable', 'type': 'function'},
+ {'constant': True, 'inputs': [{'name': '', 'type': 'address'}, {'name': '', 'type': 'address'}],
+ 'name': 'can', 'outputs': [{'name': '', 'type': 'bool'}], 'payable': False, 'stateMutability': 'view',
+ 'type': 'function'}]
+
+ def approval_function(token: ERC20Token, spender_address: Address, spender_name: str):
+ address_to_check = kwargs['from_address'] if 'from_address' in kwargs else Address(
+ token.web3.eth.defaultAccount)
+
+ move_contract = Contract._get_contract(web3=token.web3, abi=move_abi, address=token.address)
+ if move_contract.functions.can(address_to_check.address, spender_address.address).call() is False:
+ logger = logging.getLogger()
+ logger.info(f"Approving {spender_name} ({spender_address}) to move our {token.address} directly")
+
+ hope = Transact(move_contract, move_contract.web3, move_contract.abi, Address(move_contract.address),
+ move_contract, 'hope', [spender_address.address])
+
+ if not hope.transact(**kwargs):
+ raise RuntimeError("Approval failed!")
+
+ return approval_function
diff --git a/chief_keeper/makerdao_utils/auctions.py b/chief_keeper/makerdao_utils/auctions.py
index d10ee0b..a58cfae 100644
--- a/chief_keeper/makerdao_utils/auctions.py
+++ b/chief_keeper/makerdao_utils/auctions.py
@@ -18,7 +18,7 @@
from datetime import datetime
import logging
from pprint import pformat
-from typing import List
+from typing import List, Tuple
from web3 import Web3
from web3._utils.events import get_event_data
@@ -33,8 +33,7 @@
from chief_keeper.makerdao_utils.dss import Dog, Vat
from chief_keeper.makerdao_utils.token import ERC20Token
-
-from pymaker.logging import LogNote
+from chief_keeper.makerdao_utils.logging import LogNote
@@ -787,7 +786,7 @@ def active_count(self) -> int:
"""Number of active and redoable auctions."""
return int(self._contract.functions.count().call())
- def status(self, id: int) -> (bool, Ray, Wad, Rad):
+ def status(self, id: int) -> Tuple[bool, Ray, Wad, Rad]:
"""Indicates current state of the auction
Args:
id: Auction identifier.
diff --git a/chief_keeper/makerdao_utils/auth.py b/chief_keeper/makerdao_utils/auth.py
new file mode 100644
index 0000000..a0a591a
--- /dev/null
+++ b/chief_keeper/makerdao_utils/auth.py
@@ -0,0 +1,114 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2017-2018 reverendus
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+from web3 import Web3
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.utils.utils import int_to_bytes32
+
+
+class DSGuard(Contract):
+ """A client for the `DSGuard` contract.
+
+ You can find the source code of the `DSGuard` contract here:
+ .
+
+ Attributes:
+ web3: An instance of `Web` from `web3.py`.
+ address: Ethereum address of the `DSGuard` contract.
+ """
+
+ abi = Contract._load_abi(__name__, 'abi/DSGuard.abi')
+ bin = Contract._load_bin(__name__, 'abi/DSGuard.bin')
+
+ ANY = int_to_bytes32(2 ** 256 - 1)
+
+ def __init__(self, web3: Web3, address: Address):
+ assert(isinstance(web3, Web3))
+ assert(isinstance(address, Address))
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ @staticmethod
+ def deploy(web3: Web3):
+ return DSGuard(web3=web3, address=Contract._deploy(web3, DSGuard.abi, DSGuard.bin, []))
+
+ def permit(self, src, dst, sig: bytes) -> Transact:
+ """Grant access to a function call.
+
+ Args:
+ src: Address of the caller, or `ANY`.
+ dst: Address of the called contract, or `ANY`.
+ sig: Signature of the called function, or `ANY`.
+
+ Returns:
+ A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ """
+ assert(isinstance(src, Address) or isinstance(src, bytes))
+ assert(isinstance(dst, Address) or isinstance(dst, bytes))
+ assert(isinstance(sig, bytes) and len(sig) in (4, 32))
+
+ if isinstance(src, Address) and isinstance(dst, Address):
+ method = 'permit(address,address,bytes32)'
+ src = src.address
+ dst = dst.address
+
+ else:
+ method = 'permit(bytes32,bytes32,bytes32)'
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, method, [src, dst, sig])
+
+ def __repr__(self):
+ return f"DSGuard('{self.address}')"
+
+
+# TODO: Complete implementation and unit test
+class DSAuth(Contract):
+
+ abi = Contract._load_abi(__name__, 'abi/DSAuth.abi')
+ bin = Contract._load_bin(__name__, 'abi/DSAuth.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert (isinstance(web3, Web3))
+ assert (isinstance(address, Address))
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ @staticmethod
+ def deploy(web3: Web3):
+ return DSAuth(web3=web3, address=Contract._deploy(web3, DSAuth.abi, DSAuth.bin, []))
+
+ def get_owner(self) -> Address:
+ return Address(self._contract.functions.owner().call())
+
+ def set_owner(self, owner: Address) -> Transact:
+ assert isinstance(owner, Address)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract,
+ "setOwner", [owner.address])
+
+ def set_authority(self, ds_authority: Address):
+ assert isinstance(ds_authority, Address)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract,
+ "setAuthority", [ds_authority.address])
diff --git a/chief_keeper/makerdao_utils/cdp_manager.py b/chief_keeper/makerdao_utils/cdp_manager.py
new file mode 100644
index 0000000..5877790
--- /dev/null
+++ b/chief_keeper/makerdao_utils/cdp_manager.py
@@ -0,0 +1,99 @@
+
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2017-2020 ith-harvey
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+
+from web3 import Web3
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.makerdao_utils.dss import Ilk, Urn, Vat
+from chief_keeper.utils.big_number import Wad
+
+
+class CdpManager(Contract):
+ """A client for the `DSCdpManger` contract, which is a wrapper around the cdp system, for easier use.
+
+ Ref.
+ """
+
+ abi = Contract._load_abi(__name__, 'abi/DssCdpManager.abi')
+ bin = Contract._load_bin(__name__, 'abi/DssCdpManager.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert isinstance(web3, Web3)
+ assert isinstance(address, Address)
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+ self.vat = Vat(self.web3, Address(self._contract.functions.vat().call()))
+
+ def open(self, ilk: Ilk, address: Address) -> Transact:
+ assert isinstance(ilk, Ilk)
+ assert isinstance(address, Address)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'open',
+ [ilk.toBytes(), address.address])
+
+ def urn(self, cdpid: int) -> Urn:
+ '''Returns Urn for respective CDP ID'''
+ assert isinstance(cdpid, int)
+
+ urn_address = Address(self._contract.functions.urns(cdpid).call())
+ ilk = self.ilk(cdpid)
+ urn = self.vat.urn(ilk, Address(urn_address))
+
+ return urn
+
+ def owns(self, cdpid: int) -> Address:
+ '''Returns owner Address of respective CDP ID'''
+ assert isinstance(cdpid, int)
+
+ owner = Address(self._contract.functions.owns(cdpid).call())
+ return owner
+
+ def ilk(self, cdpid: int) -> Ilk:
+ '''Returns Ilk for respective CDP ID'''
+ assert isinstance(cdpid, int)
+
+ ilk = Ilk.fromBytes(self._contract.functions.ilks(cdpid).call())
+ return ilk
+
+ def first(self, address: Address) -> int:
+ '''Returns first CDP Id created by owner address'''
+ assert isinstance(address, Address)
+
+ cdpid = int(self._contract.functions.first(address.address).call())
+ return cdpid
+
+ def last(self, address: Address) -> int:
+ '''Returns last CDP Id created by owner address'''
+ assert isinstance(address, Address)
+
+ cdpid = self._contract.functions.last(address.address).call()
+ return int(cdpid)
+
+ def count(self, address: Address) -> int:
+ '''Returns number of CDP's created using the DS-Cdp-Manager contract specifically'''
+ assert isinstance(address, Address)
+
+ count = int(self._contract.functions.count(address.address).call())
+ return count
+
+ def __repr__(self):
+ return f"CdpManager('{self.address}')"
diff --git a/chief_keeper/makerdao_utils/collateral.py b/chief_keeper/makerdao_utils/collateral.py
index 636a9a5..3f5198e 100644
--- a/chief_keeper/makerdao_utils/collateral.py
+++ b/chief_keeper/makerdao_utils/collateral.py
@@ -23,11 +23,11 @@
from chief_keeper.makerdao_utils.auctions import AuctionContract, Clipper, Flipper
from chief_keeper.makerdao_utils.join import GemJoin
from chief_keeper.makerdao_utils.token import ERC20Token
+from chief_keeper.makerdao_utils.ikl import Ilk
-from pymaker.approval import directly, hope_directly
+from chief_keeper.makerdao_utils.approval import directly, hope_directly
-from pymaker.ilk import Ilk
-from pymaker.gas import DefaultGasPrice
+from chief_keeper.utils.gas import DefaultGasPrice
diff --git a/chief_keeper/makerdao_utils/dsr_manager.py b/chief_keeper/makerdao_utils/dsr_manager.py
new file mode 100644
index 0000000..8ac0ddc
--- /dev/null
+++ b/chief_keeper/makerdao_utils/dsr_manager.py
@@ -0,0 +1,110 @@
+
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2020 Maker Ecosystem Growth Holdings, INC
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+
+from web3 import Web3
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.utils.big_number import Wad, Rad
+
+from chief_keeper.makerdao_utils.dss import Pot
+from chief_keeper.makerdao_utils.join import DaiJoin
+from chief_keeper.makerdao_utils.token import DSToken
+
+
+class DsrManager(Contract):
+ """
+ A client for the `DsrManger` contract, which reduces the need for proxies
+ when interacting with the Pot contract.
+
+ Ref.
+ """
+
+ abi = Contract._load_abi(__name__, 'abi/DsrManager.abi')
+ bin = Contract._load_bin(__name__, 'abi/DsrManager.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert isinstance(web3, Web3)
+ assert isinstance(address, Address)
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ def pot(self) -> Pot:
+ address = Address(self._contract.functions.pot().call())
+ return Pot(self.web3, address)
+
+ def dai(self) -> DSToken:
+ address = Address(self._contract.functions.dai().call())
+ return DSToken(self.web3, address)
+
+ def dai_adapter(self) -> DaiJoin:
+ address = Address(self._contract.functions.daiJoin().call())
+ return DaiJoin(self.web3, address)
+
+ def supply(self) -> Wad:
+ """Total supply of pie locked in Pot through DsrManager"""
+ return Wad(self._contract.functions.supply().call())
+
+ def pie_of(self, usr: Address) -> Wad:
+ """Pie balance of a given usr address"""
+ assert isinstance(usr, Address)
+
+ return Wad(self._contract.functions.pieOf(usr.address).call())
+
+ def dai_of(self, usr: Address) -> Rad:
+ """
+ Internal Dai balance of a given usr address - current Chi is used
+ i.e. Dai balance potentially stale
+ """
+ assert isinstance(usr, Address)
+
+ pie = self.pie_of(usr)
+ chi = self.pot().chi()
+
+ dai = Rad(pie) * Rad(chi)
+
+ return dai
+
+ def join(self, dst: Address, dai: Wad) -> Transact:
+ """Lock a given amount of ERC20 Dai into the DSR Contract and give to dst address """
+ assert isinstance(dst, Address)
+ assert isinstance(dai, Wad)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'join',
+ [dst.address, dai.value])
+
+ def exit(self, dst: Address, dai: Wad) -> Transact:
+ """ Free a given amount of ERC20 Dai from the DSR Contract and give to dst address """
+ assert isinstance(dst, Address)
+ assert isinstance(dai, Wad)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'exit',
+ [dst.address, dai.value])
+
+ def exitAll(self, dst: Address) -> Transact:
+ """ Free all ERC20 Dai from the DSR Contract and give to dst address """
+ assert isinstance(dst, Address)
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'exitAll', [dst.address])
+
+ def __repr__(self):
+ return f"DsrManager('{self.address}')"
diff --git a/chief_keeper/makerdao_utils/dss.py b/chief_keeper/makerdao_utils/dss.py
index ebcefa3..4474303 100644
--- a/chief_keeper/makerdao_utils/dss.py
+++ b/chief_keeper/makerdao_utils/dss.py
@@ -28,9 +28,8 @@
from chief_keeper.utils.big_number import Wad, Rad, Ray
from chief_keeper.makerdao_utils.token import ERC20Token
-
-from pymaker.ilk import Ilk
-from pymaker.logging import LogNote
+from chief_keeper.makerdao_utils.ikl import Ilk
+from chief_keeper.makerdao_utils.logging import LogNote
diff --git a/chief_keeper/makerdao_utils/dss_deployment.py b/chief_keeper/makerdao_utils/dss_deployment.py
index 645431d..0aa1d67 100644
--- a/chief_keeper/makerdao_utils/dss_deployment.py
+++ b/chief_keeper/makerdao_utils/dss_deployment.py
@@ -18,9 +18,8 @@
import json
import os
import re
-from typing import Dict, List, Optional
-
+from typing import Dict, List, Optional
from web3 import Web3
from chief_keeper.utils.address import Address
@@ -30,16 +29,13 @@
from chief_keeper.makerdao_utils.collateral import Collateral
from chief_keeper.makerdao_utils.join import DaiJoin, GemJoin, GemJoin5
from chief_keeper.makerdao_utils.proxy import ProxyRegistry, DssProxyActionsDsr
-
from chief_keeper.makerdao_utils.feed import DSValue
from chief_keeper.makerdao_utils.governance import DSPause, DSChief
from chief_keeper.makerdao_utils.token import DSToken, DSEthToken
-
-from pymaker.oracles import OSM
-from pymaker.shutdown import ShutdownModule, End
-
-from pymaker.cdpmanager import CdpManager
-from pymaker.dsrmanager import DsrManager
+from chief_keeper.makerdao_utils.oracles import OSM
+from chief_keeper.makerdao_utils.shutdown import ShutdownModule, End
+from chief_keeper.makerdao_utils.cdp_manager import CdpManager
+from chief_keeper.makerdao_utils.dsr_manager import DsrManager
class DssDeployment:
"""Represents a Dai Stablecoin System deployment for multi-collateral Dai (MCD).
@@ -156,7 +152,7 @@ def address_in_configs(key: str, conf: str) -> bool:
dsr_manager, faucet, collaterals)
@staticmethod
- def _infer_collaterals_from_addresses(keys: []) -> List:
+ def _infer_collaterals_from_addresses(keys: List[str]) -> List:
collaterals = []
for key in keys:
match = re.search(r'MCD_[CF]LIP_(?!CALC)((\w+)_\w+)', key)
diff --git a/chief_keeper/makerdao_utils/feed.py b/chief_keeper/makerdao_utils/feed.py
index 5b10137..4254f89 100644
--- a/chief_keeper/makerdao_utils/feed.py
+++ b/chief_keeper/makerdao_utils/feed.py
@@ -20,8 +20,8 @@
from chief_keeper.utils.address import Address
from chief_keeper.utils.contract import Contract
from chief_keeper.utils.transact import Transact
-from pymaker.auth import DSAuth
+from chief_keeper.makerdao_utils.auth import DSAuth
class DSValue(DSAuth):
"""A client for the `DSValue` contract, a single-value data feed.
diff --git a/chief_keeper/makerdao_utils/governance.py b/chief_keeper/makerdao_utils/governance.py
index 7df3f31..4598e20 100644
--- a/chief_keeper/makerdao_utils/governance.py
+++ b/chief_keeper/makerdao_utils/governance.py
@@ -23,7 +23,9 @@
from chief_keeper.utils.address import Address
from chief_keeper.utils.contract import Contract
from chief_keeper.utils.transact import Transact
-from pymaker.auth import DSAuth
+from chief_keeper.utils.big_number import Wad
+
+from chief_keeper.makerdao_utils.auth import DSAuth
from chief_keeper.makerdao_utils.token import DSToken
diff --git a/chief_keeper/makerdao_utils/ikl.py b/chief_keeper/makerdao_utils/ikl.py
new file mode 100644
index 0000000..581bd86
--- /dev/null
+++ b/chief_keeper/makerdao_utils/ikl.py
@@ -0,0 +1,90 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2019-2021 EdNoepel
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+from typing import Optional
+from web3 import Web3
+
+from chief_keeper.utils.big_number import Wad, Ray, Rad
+
+
+class Ilk:
+ """Models one collateral type, the combination of a token and a set of risk parameters.
+ For example, ETH-A and ETH-B are different collateral types with the same underlying token (WETH) but with
+ different risk parameters.
+ """
+
+ def __init__(self, name: str, rate: Optional[Ray] = None,
+ ink: Optional[Wad] = None,
+ art: Optional[Wad] = None,
+ spot: Optional[Ray] = None,
+ line: Optional[Rad] = None,
+ dust: Optional[Rad] = None):
+ assert (isinstance(name, str))
+ assert (isinstance(rate, Ray) or (rate is None))
+ assert (isinstance(ink, Wad) or (ink is None))
+ assert (isinstance(art, Wad) or (art is None))
+ assert (isinstance(spot, Ray) or (spot is None))
+ assert (isinstance(line, Rad) or (line is None))
+ assert (isinstance(dust, Rad) or (dust is None))
+
+ self.name = name
+ self.rate = rate
+ self.ink = ink
+ self.art = art
+ self.spot = spot
+ self.line = line
+ self.dust = dust
+
+ def toBytes(self):
+ return Web3.toBytes(text=self.name).ljust(32, bytes(1))
+
+ @staticmethod
+ def fromBytes(ilk: bytes):
+ assert (isinstance(ilk, bytes))
+
+ name = Web3.toText(ilk.strip(bytes(1)))
+ return Ilk(name)
+
+ def __eq__(self, other):
+ assert isinstance(other, Ilk)
+
+ return (self.name == other.name) \
+ and (self.rate == other.rate) \
+ and (self.ink == other.ink) \
+ and (self.art == other.art) \
+ and (self.spot == other.spot) \
+ and (self.line == other.line) \
+ and (self.dust == other.dust)
+
+ def __repr__(self):
+ repr = ''
+ if self.rate:
+ repr += f' rate={self.rate}'
+ if self.ink:
+ repr += f' Ink={self.ink}'
+ if self.art:
+ repr += f' Art={self.art}'
+ if self.spot:
+ repr += f' spot={self.spot}'
+ if self.line:
+ repr += f' line={self.line}'
+ if self.dust:
+ repr += f' dust={self.dust}'
+ if repr:
+ repr = f'[{repr.strip()}]'
+
+ return f"Ilk('{self.name}'){repr}"
diff --git a/chief_keeper/makerdao_utils/join.py b/chief_keeper/makerdao_utils/join.py
index e88678a..a3b26d8 100644
--- a/chief_keeper/makerdao_utils/join.py
+++ b/chief_keeper/makerdao_utils/join.py
@@ -23,7 +23,8 @@
from chief_keeper.utils.contract import Contract
from chief_keeper.utils.transact import Transact
from chief_keeper.utils.big_number import Wad
-from pymaker.ilk import Ilk
+
+from chief_keeper.makerdao_utils.ikl import Ilk
from chief_keeper.makerdao_utils.token import DSToken, ERC20Token
diff --git a/chief_keeper/makerdao_utils/logging.py b/chief_keeper/makerdao_utils/logging.py
new file mode 100644
index 0000000..4d14ece
--- /dev/null
+++ b/chief_keeper/makerdao_utils/logging.py
@@ -0,0 +1,66 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2019 EdNoepel
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import logging
+from pprint import pformat
+from web3 import Web3
+from web3._utils.events import AttributeDict, get_event_data
+
+from eth_abi.codec import ABICodec
+from eth_abi.registry import registry as default_registry
+
+# Shared between DSNote and many MCD contracts
+class LogNote:
+ def __init__(self, log):
+ args = log['args']
+ self.sig = Web3.toHex(args['sig'])
+ self.usr = args['usr'] if 'usr' in args else None # vat.frob doesn't offer `usr`
+ self.arg1 = args['arg1'] if 'arg1' in args else None
+ self.arg2 = args['arg2'] if 'arg2' in args else None
+ self.arg3 = args['arg3'] if 'arg3' in args else None # Special variant used for vat.frob
+ self.block = log['blockNumber']
+ self.tx_hash = log['transactionHash'].hex()
+ self._data = args['data']
+
+ @classmethod
+ def from_event(cls, event: AttributeDict, contract_abi: list):
+ assert isinstance(event, AttributeDict)
+ assert isinstance(contract_abi, list)
+
+ log_note_abi = [abi for abi in contract_abi if abi.get('name') == 'LogNote'][0]
+ try:
+ codec = ABICodec(default_registry)
+ event_data = get_event_data(codec, log_note_abi, event)
+ return LogNote(event_data)
+ except ValueError:
+ # event is not a LogNote
+ return None
+
+ def get_bytes_at_index(self, index: int) -> bytes:
+ assert isinstance(index, int)
+ if index > 5:
+ raise ValueError("Only six words of calldata are provided")
+
+ start_index = len(self._data) - ((6-index) * 32) - 28
+ return self._data[start_index:start_index+32]
+
+ def __eq__(self, other):
+ assert isinstance(other, LogNote)
+ return self.__dict__ == other.__dict__
+
+ def __repr__(self):
+ return f"LogNote({pformat(vars(self))})"
diff --git a/chief_keeper/makerdao_utils/oracles.py b/chief_keeper/makerdao_utils/oracles.py
new file mode 100644
index 0000000..c4a8d1d
--- /dev/null
+++ b/chief_keeper/makerdao_utils/oracles.py
@@ -0,0 +1,83 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2019 grandizzy
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+from web3 import Web3
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.utils.big_number import Wad
+
+
+# TODO: Complete implementation and unit test
+class OSM(Contract):
+ """A client for the `OSM` contract.
+
+ You can find the source code of the `OSM` contract here:
+ .
+
+ Attributes:
+ web3: An instance of `Web` from `web3.py`.
+ address: Ethereum address of the `OSM` contract.
+ """
+
+ abi = Contract._load_abi(__name__, 'abi/OSM.abi')
+ bin = Contract._load_bin(__name__, 'abi/OSM.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert (isinstance(web3, Web3))
+ assert (isinstance(address, Address))
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ def poke(self) -> Transact:
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'poke', [])
+
+ def peek(self) -> Wad:
+ return Wad(self._extract_price(3))
+
+ def peep(self) -> Wad:
+ return Wad(self._extract_price(4))
+
+ def zzz(self) -> int:
+ return self._contract.functions.zzz().call()
+
+ def _extract_price(self, storage_slot: int) -> int:
+ assert isinstance(storage_slot, int)
+ return Web3.toInt(self.web3.eth.getStorageAt(self.address.address, storage_slot)[16:])
+
+ def __repr__(self):
+ return f"OSM('{self.address}')"
+
+
+class OldUniv2LpOSM(OSM):
+ """A custom `OSM` contract for Uniswap LP tokens which used different storage slots, obsolete as of dss-1.7.0
+
+ You can find the source code of the `OSM` contract here:
+ .
+ """
+
+ def __init__(self, web3: Web3, address: Address):
+ super().__init__(web3, address)
+
+ def peek(self) -> Wad:
+ return Wad(self._extract_price(6))
+
+ def peep(self) -> Wad:
+ return Wad(self._extract_price(7))
diff --git a/chief_keeper/makerdao_utils/proxy.py b/chief_keeper/makerdao_utils/proxy.py
index 1d2b431..f3831c9 100644
--- a/chief_keeper/makerdao_utils/proxy.py
+++ b/chief_keeper/makerdao_utils/proxy.py
@@ -14,8 +14,8 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from typing import List, Optional
+from typing import List, Optional, Tuple
from hexbytes import HexBytes
from web3 import Web3
from web3._utils.events import get_event_data
@@ -133,7 +133,7 @@ def execute(self, code: str, calldata: Calldata) -> Transact:
return Transact(self, self.web3, self.abi, self.address, self._contract,
'execute(bytes,bytes)', [b32_code, calldata.as_bytes()])
- def call(self, code: str, calldata: Calldata) -> (Address, HexBytes):
+ def call(self, code: str, calldata: Calldata) -> Tuple[Address, HexBytes]:
assert (isinstance(code, str))
assert (isinstance(calldata, Calldata))
diff --git a/chief_keeper/makerdao_utils/shutdown.py b/chief_keeper/makerdao_utils/shutdown.py
new file mode 100644
index 0000000..e901698
--- /dev/null
+++ b/chief_keeper/makerdao_utils/shutdown.py
@@ -0,0 +1,204 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2019 EdNoepel
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import logging
+from datetime import datetime
+from typing import Optional, List
+
+from web3 import Web3
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact
+from chief_keeper.utils.big_number import Wad, Ray, Rad
+
+from chief_keeper.makerdao_utils.approval import directly, hope_directly
+from chief_keeper.makerdao_utils.dss import Ilk
+from chief_keeper.makerdao_utils.token import DSToken, ERC20Token
+
+
+logger = logging.getLogger()
+
+
+class ShutdownModule(Contract):
+ """A client for the `ESM` contract, which allows users to call `end.cage()` and thereby trigger a shutdown.
+
+ Ref.
+
+ Attributes:
+ web3: An instance of `Web` from `web3.py`.
+ address: Ethereum address of the `ESM` contract."""
+
+ abi = Contract._load_abi(__name__, 'abi/ESM.abi')
+ bin = Contract._load_bin(__name__, 'abi/ESM.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert isinstance(web3, Web3)
+ assert isinstance(address, Address)
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ def sum(self) -> Wad:
+ """Total balance of MKR `join`ed to this contract"""
+ return Wad(self._contract.functions.Sum().call())
+
+ def sum_of(self, address: Address) -> Wad:
+ """MKR `join`ed to this contract by a specific account"""
+ assert isinstance(address, Address)
+
+ return Wad(self._contract.functions.sum(address.address).call())
+
+ def min(self) -> Wad:
+ """Minimum amount of MKR required to call `fire`"""
+ return Wad(self._contract.functions.min().call())
+
+ def join(self, value: Wad) -> Transact:
+ """Before `fire` can be called, sufficient MKR must be `join`ed to this contract"""
+ assert isinstance(value, Wad)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'join', [value.value])
+
+ def fire(self):
+ """Calls `cage` on the `end` contract, initiating a shutdown."""
+ logger.info("Calling fire to cage the end")
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'fire', [])
+
+ def deny(self, address: Address):
+ """Removes the Pause proxy's privileges from address"""
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'deny', [address.address])
+
+ def burn(self):
+ logger.info("Calling burn to burn all the joined MKR")
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'burn', [])
+
+
+class End(Contract):
+ """A client for the `End` contract, used to orchestrate a shutdown.
+
+ Ref.
+
+ Attributes:
+ web3: An instance of `Web` from `web3.py`.
+ address: Ethereum address of the `ESM` contract."""
+
+ abi = Contract._load_abi(__name__, 'abi/End.abi')
+ bin = Contract._load_bin(__name__, 'abi/End.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert isinstance(web3, Web3)
+ assert isinstance(address, Address)
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ def live(self) -> bool:
+ """False when caged, true when uncaged"""
+ return self._contract.functions.live().call() > 0
+
+ def when(self) -> datetime:
+ """Time of cage"""
+ timestamp = self._contract.functions.when().call()
+ return datetime.utcfromtimestamp(timestamp)
+
+ def wait(self) -> int:
+ """Processing cooldown length, in seconds"""
+ return int(self._contract.functions.wait().call())
+
+ def debt(self) -> Rad:
+ """total outstanding dai following processing"""
+ return Rad(self._contract.functions.debt().call())
+
+ def tag(self, ilk: Ilk) -> Ray:
+ """Cage price for the collateral"""
+ assert isinstance(ilk, Ilk)
+ return Ray(self._contract.functions.tag(ilk.toBytes()).call())
+
+ def gap(self, ilk: Ilk) -> Wad:
+ """Collateral shortfall (difference of debt and collateral"""
+ assert isinstance(ilk, Ilk)
+ return Wad(self._contract.functions.gap(ilk.toBytes()).call())
+
+ def art(self, ilk: Ilk) -> Wad:
+ """Total debt for the collateral"""
+ assert isinstance(ilk, Ilk)
+ return Wad(self._contract.functions.Art(ilk.toBytes()).call())
+
+ def fix(self, ilk: Ilk) -> Ray:
+ """Final cash price for the collateral"""
+ assert isinstance(ilk, Ilk)
+ return Ray(self._contract.functions.fix(ilk.toBytes()).call())
+
+ def bag(self, address: Address) -> Wad:
+ """Amount of Dai `pack`ed for retrieving collateral in return"""
+ assert isinstance(address, Address)
+ return Wad(self._contract.functions.bag(address.address).call())
+
+ def out(self, ilk: Ilk, address: Address) -> Wad:
+ assert isinstance(ilk, Ilk)
+ assert isinstance(address, Address)
+ return Wad(self._contract.functions.out(ilk.toBytes(), address.address).call())
+
+ def cage(self, ilk: Ilk) -> Transact:
+ """Set the `cage` price for the collateral"""
+ assert isinstance(ilk, Ilk)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'cage(bytes32)', [ilk.toBytes()])
+
+ def snip(self, ilk: Ilk, clip_id: int) -> Transact:
+ """Cancel a clip auction and seize it's collateral"""
+ assert isinstance(ilk, Ilk)
+ assert isinstance(clip_id, int)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'snip', [ilk.toBytes(), clip_id])
+
+ def skip(self, ilk: Ilk, flip_id: int) -> Transact:
+ """Cancel a flip auction and seize it's collateral"""
+ assert isinstance(ilk, Ilk)
+ assert isinstance(flip_id, int)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'skip', [ilk.toBytes(), flip_id])
+
+ def skim(self, ilk: Ilk, address: Address) -> Transact:
+ """Cancels undercollateralized CDP debt to determine collateral shortfall"""
+ assert isinstance(ilk, Ilk)
+ assert isinstance(address, Address)
+ return Transact(self, self.web3, self.abi, self.address, self._contract,
+ 'skim', [ilk.toBytes(), address.address])
+
+ def free(self, ilk: Ilk) -> Transact:
+ """Releases excess collateral after `skim`ming"""
+ assert isinstance(ilk, Ilk)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'free', [ilk.toBytes()])
+
+ def thaw(self):
+ """Fix the total outstanding supply of Dai"""
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'thaw', [])
+
+ def flow(self, ilk: Ilk) -> Transact:
+ """Calculate the `fix`, the cash price for a given collateral"""
+ assert isinstance(ilk, Ilk)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'flow', [ilk.toBytes()])
+
+ def pack(self, dai: Wad) -> Transact:
+ """Deposit Dai into the `bag`, from which it cannot be withdrawn"""
+ assert isinstance(dai, Wad)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'pack', [dai.value])
+
+ def cash(self, ilk: Ilk, dai: Wad):
+ """Exchange an amount of dai (already `pack`ed in the `bag`) for collateral"""
+ assert isinstance(ilk, Ilk)
+ assert isinstance(dai, Wad)
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'cash', [ilk.toBytes(), dai.value])
diff --git a/chief_keeper/spell.py b/chief_keeper/makerdao_utils/spell.py
similarity index 100%
rename from chief_keeper/spell.py
rename to chief_keeper/makerdao_utils/spell.py
diff --git a/chief_keeper/makerdao_utils/token.py b/chief_keeper/makerdao_utils/token.py
index 592425f..dcea422 100644
--- a/chief_keeper/makerdao_utils/token.py
+++ b/chief_keeper/makerdao_utils/token.py
@@ -19,13 +19,15 @@
from web3 import Web3
-from chief_keeper.utils.address import Address
-from chief_keeper.utils.contract import Contract
-from chief_keeper.utils.transact import Transact
-from chief_keeper.utils.big_number import Wad
+import chief_keeper.utils.address as address_utils
+import chief_keeper.utils.contract as contract_utils
+import chief_keeper.utils.transact as transact_utils
+import chief_keeper.utils.big_number as big_number_utils
+# Lazy import of transact_utils to avoid circular import issues
+transact_utils = None
-class ERC20Token(Contract):
+class ERC20Token(contract_utils.Contract):
"""A client for a standard ERC20 token contract.
Attributes:
@@ -33,17 +35,24 @@ class ERC20Token(Contract):
address: Ethereum address of the ERC20 token.
"""
- abi = Contract._load_abi(__name__, 'abi/ERC20Token.abi')
+ abi = contract_utils.Contract._load_abi(__name__, 'abi/ERC20Token.abi')
registry = {}
- def __init__(self, web3: Web3, address: Address):
+ def __init__(self, web3: Web3, address: address_utils.Address):
assert(isinstance(web3, Web3))
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
self.web3 = web3
self.address = address
self._contract = self._get_contract(web3, self.abi, address)
+ # # Lazy import for transact_utils
+ # global transact_utils
+ # if 'transact_utils' not in globals():
+ # import chief_keeper.utils.transact as transact_utils
+ # globals()['transact_utils'] = transact_utils
+
+
def name(self) -> str:
abi_with_string = json.loads("""[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]""")
abi_with_bytes32 = json.loads("""[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]""")
@@ -68,15 +77,15 @@ def symbol(self) -> str:
except:
return str(contract_with_bytes32.functions.symbol().call(), "utf-8").strip('\x00')
- def total_supply(self) -> Wad:
+ def total_supply(self) -> big_number_utils.Wad:
"""Returns the total supply of the token.
Returns:
The total supply of the token.
"""
- return Wad(self._contract.functions.totalSupply().call())
+ return big_number_utils.Wad(self._contract.functions.totalSupply().call())
- def balance_of(self, address: Address) -> Wad:
+ def balance_of(self, address: address_utils.Address) -> big_number_utils.Wad:
"""Returns the token balance of a given address.
Args:
@@ -85,11 +94,11 @@ def balance_of(self, address: Address) -> Wad:
Returns:
The token balance of the address specified.
"""
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
- return Wad(self._contract.functions.balanceOf(address.address).call())
+ return big_number_utils.Wad(self._contract.functions.balanceOf(address.address).call())
- def balance_at_block(self, address: Address, block_identifier: int = 'latest') -> Wad:
+ def balance_at_block(self, address: address_utils.Address, block_identifier: int = 'latest') -> big_number_utils.Wad:
"""Returns the token balance of a given address.
Args:
@@ -99,12 +108,12 @@ def balance_at_block(self, address: Address, block_identifier: int = 'latest') -
Returns:
The token balance of the address specified.
"""
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
assert(isinstance(block_identifier, int) or block_identifier == 'latest')
- return Wad(self._contract.functions.balanceOf(address.address).call(block_identifier=block_identifier))
+ return big_number_utils.Wad(self._contract.functions.balanceOf(address.address).call(block_identifier=block_identifier))
- def allowance_of(self, address: Address, payee: Address) -> Wad:
+ def allowance_of(self, address: address_utils.Address, payee: address_utils.Address) -> big_number_utils.Wad:
"""Returns the current allowance of a specified `payee` (delegate account).
Allowance is an ERC20 concept allowing the `payee` (delegate account) to spend a fixed amount of tokens
@@ -117,12 +126,12 @@ def allowance_of(self, address: Address, payee: Address) -> Wad:
Returns:
The allowance of the `payee` specified in regards to the `address`.
"""
- assert(isinstance(address, Address))
- assert(isinstance(payee, Address))
+ assert(isinstance(address, address_utils.Address))
+ assert(isinstance(payee, address_utils.Address))
- return Wad(self._contract.functions.allowance(address.address, payee.address).call())
+ return big_number_utils.Wad(self._contract.functions.allowance(address.address, payee.address).call())
- def transfer(self, address: Address, value: Wad) -> Transact:
+ def transfer(self, address: address_utils.Address, value: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Transfers tokens to a specified address.
Args:
@@ -130,14 +139,14 @@ def transfer(self, address: Address, value: Wad) -> Transact:
value: The value of tokens to transfer.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(address, Address))
- assert(isinstance(value, Wad))
+ assert(isinstance(address, address_utils.Address))
+ assert(isinstance(value, big_number_utils.Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'transfer', [address.address, value.value])
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'transfer', [address.address, value.value])
- def transfer_from(self, source_address: Address, destination_address: Address, value: Wad) -> Transact:
+ def transfer_from(self, source_address: address_utils.Address, destination_address: address_utils.Address, value: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Transfers tokens to a specified address.
Args:
@@ -146,17 +155,17 @@ def transfer_from(self, source_address: Address, destination_address: Address, v
value: The value of tokens to transfer.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(source_address, Address))
- assert(isinstance(destination_address, Address))
- assert(isinstance(value, Wad))
+ assert(isinstance(source_address, address_utils.Address))
+ assert(isinstance(destination_address, address_utils.Address))
+ assert(isinstance(value, big_number_utils.Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'transferFrom', [source_address.address,
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'transferFrom', [source_address.address,
destination_address.address,
value.value])
- def approve(self, payee: Address, limit: Wad = Wad(2**256 - 1)) -> Transact:
+ def approve(self, payee: address_utils.Address, limit: big_number_utils.Wad = big_number_utils.Wad(2**256 - 1)) -> 'transact_utils.Transact':
"""Modifies the current allowance of a specified `payee` (delegate account).
Allowance is an ERC20 concept allowing the `payee` (delegate account) to spend a fixed amount of tokens
@@ -170,12 +179,12 @@ def approve(self, payee: Address, limit: Wad = Wad(2**256 - 1)) -> Transact:
can spend on behalf of their owner.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(payee, Address))
- assert(isinstance(limit, Wad))
+ assert(isinstance(payee, address_utils.Address))
+ assert(isinstance(limit, big_number_utils.Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract,
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract,
'approve(address,uint256)', [payee.address, limit.value])
def __eq__(self, other):
@@ -196,8 +205,8 @@ class DSToken(ERC20Token):
address: Ethereum address of the `DSToken` contract.
"""
- abi = Contract._load_abi(__name__, 'abi/DSToken.abi')
- bin = Contract._load_bin(__name__, 'abi/DSToken.bin')
+ abi = contract_utils.Contract._load_abi(__name__, 'abi/DSToken.abi')
+ bin = contract_utils.Contract._load_bin(__name__, 'abi/DSToken.bin')
@staticmethod
def deploy(web3: Web3, symbol: str):
@@ -211,41 +220,41 @@ def deploy(web3: Web3, symbol: str):
A `DSToken` class instance.
"""
assert(isinstance(symbol, str))
- return DSToken(web3=web3, address=Contract._deploy(web3, DSToken.abi, DSToken.bin, [bytes(symbol, "utf-8")]))
+ return DSToken(web3=web3, address=contract_utils.Contract._deploy(web3, DSToken.abi, DSToken.bin, [bytes(symbol, "utf-8")]))
- def authority(self) -> Address:
+ def authority(self) -> address_utils.Address:
"""Return the current `authority` of a `DSAuth`-ed contract.
Returns:
The address of the current `authority`.
"""
- return Address(self._contract.functions.authority().call())
+ return address_utils.Address(self._contract.functions.authority().call())
- def set_authority(self, address: Address) -> Transact:
+ def set_authority(self, address: address_utils.Address) -> 'transact_utils.Transact':
"""Set the `authority` of a `DSAuth`-ed contract.
Args:
address: The address of the new `authority`.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(address, Address))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'setAuthority', [address.address])
+ assert(isinstance(address, address_utils.Address))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'setAuthority', [address.address])
- def mint(self, amount: Wad) -> Transact:
+ def mint(self, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Increase the total supply of the token.
Args:
amount: The amount to increase the total supply by.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'mint(uint256)', [amount.value])
+ assert(isinstance(amount, big_number_utils.Wad))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'mint(uint256)', [amount.value])
- def mint_to(self, address: Address, amount: Wad) -> Transact:
+ def mint_to(self, address: address_utils.Address, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Increase the total supply of the token.
Args:
@@ -253,26 +262,26 @@ def mint_to(self, address: Address, amount: Wad) -> Transact:
amount: The amount to increase the total supply by.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- assert(isinstance(address, Address))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'mint(address,uint256)', [address.address,
+ assert(isinstance(amount, big_number_utils.Wad))
+ assert(isinstance(address, address_utils.Address))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'mint(address,uint256)', [address.address,
amount.value])
- def burn(self, amount: Wad) -> Transact:
+ def burn(self, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Decrease the total supply of the token.
Args:
amount: The amount to decrease the total supply by.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'burn(uint256)', [amount.value])
+ assert(isinstance(amount, big_number_utils.Wad))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'burn(uint256)', [amount.value])
- def burn_from(self, address: Address, amount: Wad) -> Transact:
+ def burn_from(self, address: address_utils.Address, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Decrease the total supply of the token.
Args:
@@ -280,10 +289,10 @@ def burn_from(self, address: Address, amount: Wad) -> Transact:
amount: The amount to decrease the total supply by.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'burn(address,uint256)', [address.address,
+ assert(isinstance(amount, big_number_utils.Wad))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'burn(address,uint256)', [address.address,
amount.value])
def __repr__(self):
@@ -305,8 +314,8 @@ class DSEthToken(ERC20Token):
address: Ethereum address of the `DSEthToken` contract.
"""
- abi = Contract._load_abi(__name__, 'abi/DSEthToken.abi')
- bin = Contract._load_bin(__name__, 'abi/DSEthToken.bin')
+ abi = contract_utils.Contract._load_abi(__name__, 'abi/DSEthToken.abi')
+ bin = contract_utils.Contract._load_bin(__name__, 'abi/DSEthToken.bin')
@staticmethod
def deploy(web3: Web3):
@@ -318,25 +327,25 @@ def deploy(web3: Web3):
Returns:
A `DSEthToken` class instance.
"""
- return DSEthToken(web3=web3, address=Contract._deploy(web3, DSEthToken.abi, DSEthToken.bin, []))
+ return DSEthToken(web3=web3, address=contract_utils.Contract._deploy(web3, DSEthToken.abi, DSEthToken.bin, []))
def __init__(self, web3, address):
super().__init__(web3, address)
self._contract = self._get_contract(web3, self.abi, address)
- def deposit(self, amount: Wad) -> Transact:
+ def deposit(self, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Deposits `amount` of raw ETH to `DSEthToken`.
Args:
amount: Amount of raw ETH to be deposited to `DSEthToken`.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'deposit', [], {'value': amount.value})
+ assert(isinstance(amount, big_number_utils.Wad))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'deposit', [], {'value': amount.value})
- def withdraw(self, amount: Wad) -> Transact:
+ def withdraw(self, amount: big_number_utils.Wad) -> 'transact_utils.Transact':
"""Withdraws `amount` of raw ETH from `DSEthToken`.
The withdrawn ETH will get transferred to the calling account.
@@ -345,10 +354,10 @@ def withdraw(self, amount: Wad) -> Transact:
amount: Amount of raw ETH to be withdrawn from `DSEthToken`.
Returns:
- A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ A :py:class:`transact_utils.Transact` instance, which can be used to trigger the transaction.
"""
- assert(isinstance(amount, Wad))
- return Transact(self, self.web3, self.abi, self.address, self._contract, 'withdraw', [amount.value])
+ assert(isinstance(amount, big_number_utils.Wad))
+ return transact_utils.Transact(self, self.web3, self.abi, self.address, self._contract, 'withdraw', [amount.value])
def __repr__(self):
return f"DSEthToken('{self.address}')"
@@ -362,9 +371,9 @@ class EthToken():
address: Ethereum address of the original ETH token.
"""
- def __init__(self, web3: Web3, address: Address):
+ def __init__(self, web3: Web3, address: address_utils.Address):
assert(isinstance(web3, Web3))
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
self.web3 = web3
self.address = address
@@ -378,6 +387,6 @@ def balance_of(self, address):
Returns:
The ETH balance of the address specified.
"""
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
- return Wad(self.web3.eth.getBalance(address.address))
+ return big_number_utils.Wad(self.web3.eth.getBalance(address.address))
diff --git a/chief_keeper/makerdao_utils/transactional.py b/chief_keeper/makerdao_utils/transactional.py
new file mode 100644
index 0000000..52bc827
--- /dev/null
+++ b/chief_keeper/makerdao_utils/transactional.py
@@ -0,0 +1,114 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2017-2018 reverendus
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import operator
+from functools import reduce
+from typing import List
+
+from web3 import Web3
+
+from chief_keeper.utils.address import Address
+from chief_keeper.utils.contract import Contract
+from chief_keeper.utils.transact import Transact, Invocation
+
+from chief_keeper.makerdao_utils.token import ERC20Token
+
+
+class TxManager(Contract):
+ """A client for the `TxManager` contract.
+
+ `TxManager` allows to invoke multiple contract methods in one Ethereum transaction.
+ Each invocation is represented as an instance of the `Invocation` class, containing a
+ contract address and a calldata.
+
+ In addition to that, these invocations can use ERC20 token balances. In order to do that,
+ the entire allowance of each token involved is transferred from the caller to the `TxManager`
+ contract at the beginning of the transaction and all the remaining balances are returned
+ to the caller at the end of it. In order to use this feature, ERC20 token allowances
+ have to be granted to the `TxManager`.
+
+ You can find the source code of the `TxManager` contract here:
+ .
+
+ Attributes:
+ web3: An instance of `Web` from `web3.py`.
+ address: Ethereum address of the `TxManager` contract.
+ """
+
+ abi = Contract._load_abi(__name__, 'abi/TxManager.abi')
+ bin = Contract._load_bin(__name__, 'abi/TxManager.bin')
+
+ def __init__(self, web3: Web3, address: Address):
+ assert(isinstance(web3, Web3))
+ assert(isinstance(address, Address))
+
+ self.web3 = web3
+ self.address = address
+ self._contract = self._get_contract(web3, self.abi, address)
+
+ @staticmethod
+ def deploy(web3: Web3):
+ return TxManager(web3=web3, address=Contract._deploy(web3, TxManager.abi, TxManager.bin, []))
+
+ def approve(self, tokens: List[ERC20Token], approval_function):
+ """Approve the TxManager contract to fully access balances of specified tokens.
+
+ For available approval functions (i.e. approval modes) see `directly` and `via_tx_manager`
+ in `pymaker.approval`.
+
+ Args:
+ tokens: List of :py:class:`pymaker.token.ERC20Token` class instances.
+ approval_function: Approval function (i.e. approval mode).
+ """
+ assert(isinstance(tokens, list))
+ assert(callable(approval_function))
+
+ for token in tokens:
+ approval_function(token, self.address, 'TxManager')
+
+ def owner(self) -> Address:
+ return Address(self._contract.functions.owner().call())
+
+ def execute(self, tokens: List[Address], invocations: List[Invocation]) -> Transact:
+ """Executes multiple contract methods in one Ethereum transaction.
+
+ Args:
+ tokens: List of addresses of ERC20 token the invocations should be able to access.
+ invocations: A list of invocations (contract methods) to be executed.
+
+ Returns:
+ A :py:class:`pymaker.Transact` instance, which can be used to trigger the transaction.
+ """
+ def token_addresses() -> list:
+ return list(map(lambda address: address.address, tokens))
+
+ def script() -> bytes:
+ return reduce(operator.add, map(lambda invocation: script_entry(invocation), invocations), bytes())
+
+ def script_entry(invocation: Invocation) -> bytes:
+ address = invocation.address.as_bytes()
+ calldata = invocation.calldata.as_bytes()
+ calldata_length = len(calldata).to_bytes(32, byteorder='big')
+ return address + calldata_length + calldata
+
+ assert(isinstance(tokens, list))
+ assert(isinstance(invocations, list))
+
+ return Transact(self, self.web3, self.abi, self.address, self._contract, 'execute', [token_addresses(), script()])
+
+ def __repr__(self):
+ return f"TxManager('{self.address}')"
diff --git a/chief_keeper/utils/gas.py b/chief_keeper/utils/gas.py
new file mode 100644
index 0000000..c11024d
--- /dev/null
+++ b/chief_keeper/utils/gas.py
@@ -0,0 +1,265 @@
+# This file is part of Maker Keeper Framework.
+#
+# Copyright (C) 2017-2021 reverendus, EdNoepel
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import math
+from pprint import pformat
+from typing import Optional, Tuple
+from web3 import Web3
+
+
+class GasStrategy(object):
+ GWEI = 1000000000
+
+ """Abstract class, which can be inherited for implementing different gas price strategies.
+
+ To build custom gas price strategies, override methods within such that gas fees returned
+ increase over time. The piece of code responsible for sending Ethereum transactions
+ (please see :py:class:`pymaker.Transact`) will in this case overwrite the transaction
+ with another one, using the same `nonce` but increasing gas price. If the value returned
+ by `get_gas_price` does not go up, no new transaction gets submitted to the network.
+
+ An example custom gas price strategy my be: start with 10 GWei. If transaction has not been
+ confirmed within 10 minutes, try again with 15 GWei. If still no confirmation, increase
+ to 30 GWei and then wait indefinitely for confirmation.
+ """
+
+ def get_gas_price(self, time_elapsed: int) -> Optional[int]:
+ """Return gas price applicable for type 0 transactions.
+
+ Bear in mind that Geth requires the gas price for overwritten transactions to increase by at
+ least 10%, while OpenEthereum requires a gas price bump of 12.5%. Also, you may return
+ `None` which will make the node use the default gas price, but once you returned
+ a numeric value (gas price in Wei), you shouldn't switch back to `None` as such
+ transaction will likely not get overwritten.
+
+ Args:
+ time_elapsed: Number of seconds since this specific Ethereum transaction
+ has been originally sent for the first time.
+
+ Returns:
+ Gas price in Wei, or `None` if default gas price should be used. Default gas price
+ means it's the Ethereum node the keeper is connected to will decide on the gas price.
+ """
+ raise NotImplementedError("Please implement this method")
+
+ def get_gas_fees(self, time_elapsed: int) -> Tuple[int, int]:
+ """Return max fee (fee cap) and priority fee (tip) for type 2 (EIP-1559) transactions.
+
+ Note that Web3 currently requires specifying both `maxFeePerGas` and `maxPriorityFeePerGas` on a type 2
+ transaction. This is inconsistent with the EIP-1559 spec.
+
+ Args:
+ time_elapsed: Number of seconds since this specific Ethereum transaction
+ has been originally sent for the first time.
+
+ Returns:
+ Gas price in Wei, or `None` if default gas price should be used. Default gas price
+ means it's the Ethereum node the keeper is connected to will decide on the gas price.
+ """
+ raise NotImplementedError("Please implement this method")
+
+ def __repr__(self):
+ return f"{__name__}({pformat(vars(self))})"
+
+
+class DefaultGasPrice(GasStrategy):
+ """Default gas price.
+
+ Uses the default gas price i.e. gas price will be decided by the Ethereum node
+ the keeper is connected to.
+ """
+
+ def get_gas_price(self, time_elapsed: int) -> Optional[int]:
+ return None
+
+ def get_gas_fees(self, time_elapsed: int) -> Optional[Tuple[int, int]]:
+ return None, None
+
+
+class NodeAwareGasStrategy(GasStrategy):
+ """Abstract baseclass which is Web3-aware.
+
+ Retrieves the default gas price provided by the Ethereum node to be consumed by subclasses.
+ """
+
+ def __init__(self, web3: Web3):
+ assert isinstance(web3, Web3)
+ if self.__class__ == NodeAwareGasStrategy:
+ raise NotImplementedError('This class is not intended to be used directly')
+ self.web3 = web3
+
+ def get_gas_price(self, time_elapsed: int) -> Optional[int]:
+ """If user wants node to choose gas price, they should use DefaultGasPrice for the same functionality
+ without an additional HTTP request. This baseclass exists to let a subclass manipulate the node price."""
+ raise NotImplementedError("Please implement this method")
+
+ def get_gas_fees(self, time_elapsed: int) -> Optional[Tuple[int, int]]:
+ """Implementation of tip is subjective. For August 2021, the following implementation is a reasonable example:
+ return int(self.get_next_base_fee(self)*1.5), 2 * self.GWEI"""
+ raise NotImplementedError("Please implement this method")
+
+ def get_node_gas_price(self) -> int:
+ return max(self.web3.manager.request_blocking("eth_gasPrice", []), 1)
+
+ def get_base_fee(self) -> Optional[int]:
+ """Useful for calculating maxfee; a multiple of this value is suggested"""
+ pending_block = self.web3.eth.get_block('pending')
+ if 'baseFeePerGas' in pending_block:
+ return max(int(pending_block['baseFeePerGas']), 1)
+ else:
+ return None
+
+
+class FixedGasPrice(GasStrategy):
+ """Fixed gas price.
+
+ Uses specified gas price instead of the default price suggested by the Ethereum
+ node the keeper is connected to. The gas price may be later changed (while the transaction
+ is still in progress) by calling the `update_gas_price` method.
+
+ Attributes:
+ gas_price: Gas price to be used (in Wei) for legacy transactions
+ max_fee: Maximum fee (in Wei) for EIP-1559 transactions, should be >= (base_fee + tip)
+ tip: Priority fee (in Wei) for EIP-1559 transactions
+ """
+ def __init__(self, gas_price: Optional[int], max_fee: Optional[int] = None, tip: Optional[int] = None):
+ assert isinstance(gas_price, int) or gas_price is None
+ assert isinstance(max_fee, int) or max_fee is None
+ assert isinstance(tip, int) or tip is None
+ assert gas_price or (max_fee and tip)
+ self.gas_price = gas_price
+ self.max_fee = max_fee
+ self.tip = tip
+
+ def update_gas_price(self, new_gas_price: int, new_max_fee: int, new_tip: int):
+ """Changes the initial gas price to a higher value, preferably higher.
+
+ The only reason when calling this function makes sense is when an async transaction is in progress.
+ In this case, the loop waiting for the transaction to be mined (see :py:class:`pymaker.Transact`)
+ will resend the pending transaction again with the new gas price.
+
+ As OpenEthereum excepts the gas price to rise by at least 12.5% in replacement transactions, the price
+ argument supplied to this method should be accordingly higher.
+
+ Args:
+ new_gas_price: New gas price to be set (in Wei).
+ new_max_fee: New maximum fee (in Wei) appropriate for subsequent block(s).
+ new_tip: New prioritization fee (in Wei).
+ """
+ assert isinstance(new_gas_price, int) or new_gas_price is None
+ assert isinstance(new_max_fee, int) or new_max_fee is None
+ assert isinstance(new_tip, int) or new_tip is None
+ assert new_gas_price or (new_max_fee and new_tip)
+ self.gas_price = new_gas_price
+ self.max_fee = new_max_fee
+ self.tip = new_tip
+
+ def get_gas_price(self, time_elapsed: int) -> Optional[int]:
+ return self.gas_price
+
+ def get_gas_fees(self, time_elapsed: int) -> Optional[Tuple[int, int]]:
+ return self.max_fee, self.tip
+
+
+class GeometricGasPrice(NodeAwareGasStrategy):
+ """Geometrically increasing gas price.
+
+ Start with `initial_price`, then increase it every 'every_secs' seconds by a fixed coefficient.
+ Coefficient defaults to 1.125 (12.5%), the minimum increase for OpenEthereum to replace a transaction.
+ Coefficient can be adjusted, and there is an optional upper limit.
+
+ To disable legacy (type 0) transactions, set initial_price None.
+ To disable EIP-1559 (type 2) transactions, set initial_tip None.
+ Other parameters apply to both transaction types.
+
+ Attributes:
+ initial_price: The initial gas price in Wei, used only for legacy transactions.
+ initial_tip: Initial priority fee paid on top of a base fee (recommend 1 GWEI minimum).
+ every_secs: Gas increase interval (in seconds).
+ coefficient: Gas price and tip multiplier, defaults to 1.125.
+ max_price: Optional upper limit and fee cap, defaults to None.
+ """
+ def __init__(self, web3: Web3, initial_price: Optional[int], initial_tip: Optional[int],
+ every_secs: int, coefficient=1.125, max_price: Optional[int] = None):
+ assert isinstance(web3, Web3)
+ assert (isinstance(initial_price, int) and initial_price > 0) or initial_price is None
+ assert isinstance(initial_tip, int) or initial_tip is None
+ assert initial_price or (initial_tip is not None and initial_tip > 0)
+ assert isinstance(every_secs, int)
+ assert isinstance(coefficient, float)
+ assert (isinstance(max_price, int) and max_price > 0) or max_price is None
+ assert every_secs > 0
+ assert coefficient > 1
+ if initial_price and max_price:
+ assert initial_price <= max_price
+ if initial_tip and max_price:
+ assert initial_tip < max_price
+ super().__init__(web3)
+
+ self.initial_price = initial_price
+ self.initial_tip = initial_tip
+ self.every_secs = every_secs
+ self.coefficient = coefficient
+ self.max_price = max_price
+
+ def scale_by_time(self, value: int, time_elapsed: int) -> int:
+ assert isinstance(value, int)
+ assert isinstance(time_elapsed, int)
+ result = value
+ if time_elapsed >= self.every_secs:
+ for second in range(math.floor(time_elapsed / self.every_secs)):
+ result *= self.coefficient
+ return math.ceil(result)
+
+ def get_gas_price(self, time_elapsed: int) -> Optional[int]:
+ assert isinstance(time_elapsed, int)
+ if not self.initial_price:
+ return None
+
+ result = self.scale_by_time(self.initial_price, time_elapsed)
+ if self.max_price is not None:
+ result = min(result, self.max_price)
+
+ return result
+
+ def get_gas_fees(self, time_elapsed: int) -> Optional[Tuple[int, int]]:
+ assert isinstance(time_elapsed, int)
+ if not self.initial_tip:
+ return None, None
+
+ base_fee = self.get_base_fee()
+ if not base_fee:
+ raise RuntimeError("Node does not provide baseFeePerGas; type 2 transactions are not available")
+
+ tip = self.scale_by_time(self.initial_tip, time_elapsed)
+
+ # This is how it should work, but doesn't; read more here: https://github.com/ethereum/go-ethereum/issues/23311
+ # if self.max_price:
+ # # If the scaled tip would exceed our fee cap, reduce tip to largest possible
+ # if base_fee + tip > self.max_price:
+ # tip = max(0, self.max_price - base_fee)
+ # # Honor the max_price, even if it does not exceed base fee
+ # return self.max_price, tip
+ # else:
+ # # If not limited by user, set a standard fee cap of twice the base fee with tip included
+ # return (base_fee * 2) + tip, tip
+
+ # HACK: Ensure both feecap and tip are scaled, satisfying geth's current replacement logic.
+ feecap = self.scale_by_time(int(base_fee * 1.2), time_elapsed) + tip
+ if self.max_price and feecap > self.max_price:
+ feecap = self.max_price
+ return feecap, min(tip, feecap)
diff --git a/chief_keeper/utils/receipt.py b/chief_keeper/utils/receipt.py
index b5a9d95..790aba7 100644
--- a/chief_keeper/utils/receipt.py
+++ b/chief_keeper/utils/receipt.py
@@ -17,12 +17,15 @@
from hexbytes import HexBytes
from web3._utils.events import get_event_data
+from web3.exceptions import LogTopicError
from eth_abi.codec import ABICodec
from eth_abi.registry import registry as default_registry
-from chief_keeper.utils.address import Address
-from chief_keeper.utils.big_number import Wad
+import chief_keeper.makerdao_utils.token as token_utils
+import chief_keeper.utils.address as address_utils
+import chief_keeper.utils.big_number as big_number_utils
+import chief_keeper.utils.transfer as transfer_utils
class Receipt:
"""Represents a receipt for an Ethereum transaction.
@@ -55,15 +58,14 @@ def __init__(self, receipt):
# $ seth keccak $(seth --from-ascii "Transfer(address,address,uint256)")
# 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
if receipt_log['topics'][0] == HexBytes('0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'):
- from pymaker.token import ERC20Token
- transfer_abi = [abi for abi in ERC20Token.abi if abi.get('name') == 'Transfer'][0]
+ transfer_abi = [abi for abi in token_utils.ERC20Token.abi if abi.get('name') == 'Transfer'][0]
codec = ABICodec(default_registry)
try:
event_data = get_event_data(codec, transfer_abi, receipt_log)
- self.transfers.append(Transfer(token_address=Address(event_data['address']),
- from_address=Address(event_data['args']['from']),
- to_address=Address(event_data['args']['to']),
- value=Wad(event_data['args']['value'])))
+ self.transfers.append(transfer_utils.Transfer(token_address=address_utils.Address(event_data['address']),
+ from_address=address_utils.Address(event_data['args']['from']),
+ to_address=address_utils.Address(event_data['args']['to']),
+ value=big_number_utils.Wad(event_data['args']['value'])))
# UniV3 Mint logIndex: 3 has an NFT mint of 1, from null, to a given address, but only 2 types (address, address)
except LogTopicError:
continue
@@ -71,26 +73,24 @@ def __init__(self, receipt):
# $ seth keccak $(seth --from-ascii "Mint(address,uint256)")
# 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885
if receipt_log['topics'][0] == HexBytes('0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885'):
- from pymaker.token import DSToken
- transfer_abi = [abi for abi in DSToken.abi if abi.get('name') == 'Mint'][0]
+ transfer_abi = [abi for abi in token_utils.DSToken.abi if abi.get('name') == 'Mint'][0]
codec = ABICodec(default_registry)
event_data = get_event_data(codec, transfer_abi, receipt_log)
- self.transfers.append(Transfer(token_address=Address(event_data['address']),
- from_address=Address('0x0000000000000000000000000000000000000000'),
- to_address=Address(event_data['args']['guy']),
- value=Wad(event_data['args']['wad'])))
+ self.transfers.append(transfer_utils.Transfer(token_address=address_utils.Address(event_data['address']),
+ from_address=address_utils.Address('0x0000000000000000000000000000000000000000'),
+ to_address=address_utils.Address(event_data['args']['guy']),
+ value=big_number_utils.Wad(event_data['args']['wad'])))
# $ seth keccak $(seth --from-ascii "Burn(address,uint256)")
# 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5
if receipt_log['topics'][0] == HexBytes('0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5'):
- from pymaker.token import DSToken
- transfer_abi = [abi for abi in DSToken.abi if abi.get('name') == 'Burn'][0]
+ transfer_abi = [abi for abi in token_utils.DSToken.abi if abi.get('name') == 'Burn'][0]
codec = ABICodec(default_registry)
event_data = get_event_data(codec, transfer_abi, receipt_log)
- self.transfers.append(Transfer(token_address=Address(event_data['address']),
- from_address=Address(event_data['args']['guy']),
- to_address=Address('0x0000000000000000000000000000000000000000'),
- value=Wad(event_data['args']['wad'])))
+ self.transfers.append(transfer_utils.Transfer(token_address=address_utils.Address(event_data['address']),
+ from_address=address_utils.Address(event_data['args']['guy']),
+ to_address=address_utils.Address('0x0000000000000000000000000000000000000000'),
+ value=big_number_utils.Wad(event_data['args']['wad'])))
else:
self.successful = False
diff --git a/chief_keeper/utils/transact.py b/chief_keeper/utils/transact.py
index e69cd75..998d6e7 100644
--- a/chief_keeper/utils/transact.py
+++ b/chief_keeper/utils/transact.py
@@ -20,13 +20,109 @@
import logging
import sys
import time
-from typing import Optional
+from typing import Optional
+from weakref import WeakKeyDictionary
+from threading import Lock
+from enum import Enum, auto
from web3 import Web3
from web3.exceptions import TransactionNotFound
+from functools import wraps
+
+
+import chief_keeper.utils.address as address_utils
-from pymaker.gas import DefaultGasPrice, GasStrategy
+from chief_keeper.utils.gas import DefaultGasPrice, GasStrategy
from chief_keeper.utils.utils import synchronize, bytes_to_hexstring
+from chief_keeper.utils.receipt import Receipt
+from chief_keeper.utils.calldata import Calldata
+
+filter_threads = []
+endpoint_behavior = WeakKeyDictionary()
+next_nonce = {}
+transaction_lock = Lock()
+logger = logging.getLogger()
+
+
+class NonceCalculation(Enum):
+ TX_COUNT = auto()
+ PARITY_NEXTNONCE = auto()
+ SERIAL = auto()
+ PARITY_SERIAL = auto()
+
+class Invocation(object):
+ """Single contract method invocation, to be used together with `TxManager`.
+
+ Attributes:
+ address: Contract address.
+ calldata: The calldata of the invocation.
+ """
+ def __init__(self, address: address_utils.Address, calldata: Calldata):
+ assert(isinstance(address, address_utils.Address))
+ assert(isinstance(calldata, Calldata))
+ self.address = address
+ self.calldata = calldata
+
+class EndpointBehavior:
+ def __init__(self, nonce_calc: NonceCalculation, supports_eip1559: bool):
+ assert isinstance(nonce_calc, NonceCalculation)
+ assert isinstance(supports_eip1559, bool)
+ self.nonce_calc = nonce_calc
+ self.supports_eip1559 = supports_eip1559
+
+ def __repr__(self):
+ if self.supports_eip1559:
+ return f"{self.nonce_calc} with EIP 1559 support"
+ else:
+ return f"{self.nonce_calc} without EIP 1559 support"
+
+class TransactStatus(Enum):
+ NEW = auto()
+ IN_PROGRESS = auto()
+ FINISHED = auto()
+
+def _get_endpoint_behavior(web3: Web3) -> EndpointBehavior:
+ assert isinstance(web3, Web3)
+ global endpoint_behavior
+ if web3 not in endpoint_behavior:
+
+ # Determine nonce calculation
+ providers_without_nonce_calculation = ['alchemy', 'infura', 'quiknode']
+ requires_serial_nonce = any(provider in web3.manager.provider.endpoint_uri for provider in
+ providers_without_nonce_calculation)
+ is_parity = "parity" in web3.clientVersion.lower() or "openethereum" in web3.clientVersion.lower()
+ if requires_serial_nonce:
+ nonce_calc = NonceCalculation.SERIAL
+ elif is_parity:
+ nonce_calc = NonceCalculation.PARITY_NEXTNONCE
+ else:
+ nonce_calc = NonceCalculation.TX_COUNT
+
+ # Check for EIP 1559 gas parameters support
+ supports_london = 'baseFeePerGas' in web3.eth.get_block('latest')
+
+ behavior = EndpointBehavior(nonce_calc, supports_london)
+ endpoint_behavior[web3] = behavior
+ logger.debug(f"node clientVersion={web3.clientVersion}, will use {behavior}")
+ return endpoint_behavior[web3]
+
+
+def _track_status(f):
+ @wraps(f)
+ async def wrapper(*args, **kwds):
+ # Check for multiple execution
+ if args[0].status != TransactStatus.NEW:
+ raise Exception("Each `Transact` can only be executed once")
+
+ # Set current status to in progress
+ args[0].status = TransactStatus.IN_PROGRESS
+
+ try:
+ return await f(*args, **kwds)
+ finally:
+ args[0].status = TransactStatus.FINISHED
+
+ return wrapper
class Transact:
@@ -39,7 +135,7 @@ def __init__(self,
origin: Optional[object],
web3: Web3,
abi: Optional[list],
- address: Address,
+ address: address_utils.Address,
contract: Optional[object],
function_name: Optional[str],
parameters: Optional[list],
@@ -48,7 +144,7 @@ def __init__(self,
assert(isinstance(origin, object) or (origin is None))
assert(isinstance(web3, Web3))
assert(isinstance(abi, list) or (abi is None))
- assert(isinstance(address, Address))
+ assert(isinstance(address, address_utils.Address))
assert(isinstance(contract, object) or (contract is None))
assert(isinstance(function_name, str) or (function_name is None))
assert(isinstance(parameters, list) or (parameters is None))
@@ -243,18 +339,18 @@ def format_parameter(parameter):
return name if self.extra is None else name + f" with {self.extra}"
- def estimated_gas(self, from_address: Address) -> int:
+ def estimated_gas(self, from_address: address_utils.Address) -> int:
"""Return an estimated amount of gas which will get consumed by this Ethereum transaction.
May throw an exception if the actual transaction will fail as well.
Args:
- from_address: Address to simulate sending the transaction from.
+ from_address: address_utils.Address to simulate sending the transaction from.
Returns:
Amount of gas as an integer.
"""
- assert(isinstance(from_address, Address))
+ assert(isinstance(from_address, address_utils.Address))
if self.contract is not None:
if self.function_name is None:
@@ -283,7 +379,7 @@ def transact(self, **kwargs) -> Optional[Receipt]:
Allowed keyword arguments are: `from_address`, `replace`, `gas`, `gas_buffer`, `gas_price`.
`gas_price` needs to be an instance of a class inheriting from :py:class:`pymaker.gas.GasPrice`.
- `from_address` needs to be an instance of :py:class:`pymaker.Address`.
+ `from_address` needs to be an instance of :py:class:`pymaker.address_utils.Address`.
The `gas` keyword argument is the gas limit for the transaction, whereas `gas_buffer`
specifies how much gas should be added to the estimate. They can not be present
@@ -331,7 +427,7 @@ async def transact_async(self, **kwargs) -> Optional[Receipt]:
# gas value (plus some `gas_buffer`) to the subsequent `transact` calls so it does not
# try to estimate it again.
try:
- gas_estimate = self.estimated_gas(Address(from_account))
+ gas_estimate = self.estimated_gas(address_utils.Address(from_account))
except:
if Transact.gas_estimate_for_bad_txs:
self.logger.warning(f"Transaction {self.name()} will fail, submitting anyway")
diff --git a/tests/test_database.py b/tests/test_database.py
index 56c7baa..8357990 100644
--- a/tests/test_database.py
+++ b/tests/test_database.py
@@ -24,7 +24,7 @@
from web3 import Web3
-from chief_keeper.spell import DSSSpell
+from chief_keeper.makerdao_utils.spell import DSSSpell
from chief_keeper.database import SimpleDatabase
from pymaker import Address, Contract, Transact
diff --git a/tests/test_keeper_chief.py b/tests/test_keeper_chief.py
index faddc0a..1963493 100644
--- a/tests/test_keeper_chief.py
+++ b/tests/test_keeper_chief.py
@@ -25,7 +25,7 @@
from chief_keeper.database import SimpleDatabase
from chief_keeper.chief_keeper import ChiefKeeper
-from chief_keeper.spell import DSSSpell
+from chief_keeper.makerdao_utils.spell import DSSSpell
from pymaker import Address
from pymaker.deployment import DssDeployment