{
  "contractName": "Whitelistable",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "addedAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint8",
          "name": "whitelist",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "addedBy",
          "type": "address"
        }
      ],
      "name": "AddressAddedToWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "removedAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint8",
          "name": "whitelist",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "removedBy",
          "type": "address"
        }
      ],
      "name": "AddressRemovedFromWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "addedAdmin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "addedBy",
          "type": "address"
        }
      ],
      "name": "AdminAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "removedAdmin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "removedBy",
          "type": "address"
        }
      ],
      "name": "AdminRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "updatedBy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint8",
          "name": "sourceWhitelist",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "uint8",
          "name": "destinationWhitelist",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "from",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "to",
          "type": "bool"
        }
      ],
      "name": "OutboundWhitelistUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adminToAdd",
          "type": "address"
        }
      ],
      "name": "addAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressToAdd",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "whitelist",
          "type": "uint8"
        }
      ],
      "name": "addToWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "addressWhitelists",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "administrators",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "checkWhitelistAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressToTest",
          "type": "address"
        }
      ],
      "name": "isAdministrator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "outboundWhitelistsEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adminToRemove",
          "type": "address"
        }
      ],
      "name": "removeAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressToRemove",
          "type": "address"
        }
      ],
      "name": "removeFromWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "sourceWhitelist",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "destinationWhitelist",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "newEnabledValue",
          "type": "bool"
        }
      ],
      "name": "updateOutboundWhitelistEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610b26806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806376be15851161008c57806392e6d68b1161006657806392e6d68b146102355780639437e2fe14610271578063e95945081461029f578063f2fde38b146102c7576100cf565b806376be1585146101c55780638ab1d681146101eb5780638da5cb5b14610211576100cf565b80630263b858146100d45780630a2eb301146101055780631785f53c1461013f5780633973b596146101655780637048027514610197578063715018a6146101bd575b600080fd5b610103600480360360408110156100ea57600080fd5b5080356001600160a01b0316906020013560ff166102ed565b005b61012b6004803603602081101561011b57600080fd5b50356001600160a01b0316610431565b604080519115158252519081900360200190f35b6101036004803603602081101561015557600080fd5b50356001600160a01b031661044f565b6101036004803603606081101561017b57600080fd5b5060ff813581169160208101359091169060400135151561054e565b610103600480360360208110156101ad57600080fd5b50356001600160a01b031661060b565b610103610709565b61012b600480360360208110156101db57600080fd5b50356001600160a01b03166107ab565b6101036004803603602081101561020157600080fd5b50356001600160a01b03166107c0565b61021961085b565b604080516001600160a01b039092168252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661086a565b6040805160ff9092168252519081900360200190f35b61012b6004803603604081101561028757600080fd5b506001600160a01b038135811691602001351661087f565b61012b600480360360408110156102b557600080fd5b5060ff813581169160200135166108f3565b610103600480360360208110156102dd57600080fd5b50356001600160a01b0316610913565b6102f633610431565b6103315760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff8116610386576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077686974656c69737420494420737570706c696564000000604482015290519081900360640190fd5b6001600160a01b0382166000908152609860205260409020805460ff83811660ff198316179092551680156103f157604051339060ff8316906001600160a01b038616907fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e90600090a45b604051339060ff8416906001600160a01b038616907fca6d1e885708b837a7647aeb7f4163ee4ca96058e08ac767be8d23c972c5027090600090a4505050565b6001600160a01b031660009081526097602052604090205460ff1690565b610457610a0c565b6065546001600160a01b039081169116146104a7576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff1615156001146105035760405162461bcd60e51b815260040180806020018281038252603d815260200180610a37603d913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055513392917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b61055733610431565b6105925760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff838116600081815260996020908152604080832087861680855290835292819020805487151560ff1982168117909255825196168015158752928601528051919492939233927fb0353d563a9aa5231878c83727dc723a3cb8a38c2917f8ac2b777aa564c8a0d5929181900390910190a450505050565b610613610a0c565b6065546001600160a01b03908116911614610663576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff16156106bb5760405162461bcd60e51b8152600401808060200182810382526035815260200180610abc6035913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055513392917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b610711610a0c565b6065546001600160a01b03908116911614610761576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b60976020526000908152604090205460ff1681565b6107c933610431565b6108045760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff198116909155905160ff90911692339284927fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e9190a45050565b6065546001600160a01b031690565b60986020526000908152604090205460ff1681565b6001600160a01b03808316600090815260986020526040808220549284168252812054909160ff90811691168115806108b9575060ff8116155b156108c9576000925050506108ed565b60ff9182166000908152609960209081526040808320938516835292905220541690505b92915050565b609960209081526000928352604080842090915290825290205460ff1681565b61091b610a0c565b6065546001600160a01b0390811691161461096b576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b0381166109b05760405162461bcd60e51b8152600401808060200182810382526026815260200180610a116026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734163636f756e7420746f2062652072656d6f7665642066726f6d2061646d696e206c697374206973206e6f7420616c726561647920616e2061646d696e43616c6c696e67206163636f756e74206973206e6f7420616e2061646d696e6973747261746f722e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724163636f756e7420746f20626520616464656420746f2061646d696e206c69737420697320616c726561647920616e2061646d696ea264697066735822122000b49acfe276b1029638733e1967f3ecf080b117374b0ba1dbab7c8c4becca9164736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806376be15851161008c57806392e6d68b1161006657806392e6d68b146102355780639437e2fe14610271578063e95945081461029f578063f2fde38b146102c7576100cf565b806376be1585146101c55780638ab1d681146101eb5780638da5cb5b14610211576100cf565b80630263b858146100d45780630a2eb301146101055780631785f53c1461013f5780633973b596146101655780637048027514610197578063715018a6146101bd575b600080fd5b610103600480360360408110156100ea57600080fd5b5080356001600160a01b0316906020013560ff166102ed565b005b61012b6004803603602081101561011b57600080fd5b50356001600160a01b0316610431565b604080519115158252519081900360200190f35b6101036004803603602081101561015557600080fd5b50356001600160a01b031661044f565b6101036004803603606081101561017b57600080fd5b5060ff813581169160208101359091169060400135151561054e565b610103600480360360208110156101ad57600080fd5b50356001600160a01b031661060b565b610103610709565b61012b600480360360208110156101db57600080fd5b50356001600160a01b03166107ab565b6101036004803603602081101561020157600080fd5b50356001600160a01b03166107c0565b61021961085b565b604080516001600160a01b039092168252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661086a565b6040805160ff9092168252519081900360200190f35b61012b6004803603604081101561028757600080fd5b506001600160a01b038135811691602001351661087f565b61012b600480360360408110156102b557600080fd5b5060ff813581169160200135166108f3565b610103600480360360208110156102dd57600080fd5b50356001600160a01b0316610913565b6102f633610431565b6103315760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff8116610386576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077686974656c69737420494420737570706c696564000000604482015290519081900360640190fd5b6001600160a01b0382166000908152609860205260409020805460ff83811660ff198316179092551680156103f157604051339060ff8316906001600160a01b038616907fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e90600090a45b604051339060ff8416906001600160a01b038616907fca6d1e885708b837a7647aeb7f4163ee4ca96058e08ac767be8d23c972c5027090600090a4505050565b6001600160a01b031660009081526097602052604090205460ff1690565b610457610a0c565b6065546001600160a01b039081169116146104a7576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff1615156001146105035760405162461bcd60e51b815260040180806020018281038252603d815260200180610a37603d913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055513392917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b61055733610431565b6105925760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff838116600081815260996020908152604080832087861680855290835292819020805487151560ff1982168117909255825196168015158752928601528051919492939233927fb0353d563a9aa5231878c83727dc723a3cb8a38c2917f8ac2b777aa564c8a0d5929181900390910190a450505050565b610613610a0c565b6065546001600160a01b03908116911614610663576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff16156106bb5760405162461bcd60e51b8152600401808060200182810382526035815260200180610abc6035913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055513392917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b610711610a0c565b6065546001600160a01b03908116911614610761576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b60976020526000908152604090205460ff1681565b6107c933610431565b6108045760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff198116909155905160ff90911692339284927fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e9190a45050565b6065546001600160a01b031690565b60986020526000908152604090205460ff1681565b6001600160a01b03808316600090815260986020526040808220549284168252812054909160ff90811691168115806108b9575060ff8116155b156108c9576000925050506108ed565b60ff9182166000908152609960209081526040808320938516835292905220541690505b92915050565b609960209081526000928352604080842090915290825290205460ff1681565b61091b610a0c565b6065546001600160a01b0390811691161461096b576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b0381166109b05760405162461bcd60e51b8152600401808060200182810382526026815260200180610a116026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734163636f756e7420746f2062652072656d6f7665642066726f6d2061646d696e206c697374206973206e6f7420616c726561647920616e2061646d696e43616c6c696e67206163636f756e74206973206e6f7420616e2061646d696e6973747261746f722e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724163636f756e7420746f20626520616464656420746f2061646d696e206c69737420697320616c726561647920616e2061646d696ea264697066735822122000b49acfe276b1029638733e1967f3ecf080b117374b0ba1dbab7c8c4becca9164736f6c634300060b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
