{
  "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": "",
          "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": "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": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "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": "addressToRemove",
          "type": "address"
        }
      ],
      "name": "removeFromWhitelist",
      "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"
    },
    {
      "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"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addAdmin(address)\":{\"notice\":\"Add an admin to the list.  This should only be callable by the owner of the contract.\"},\"addToWhitelist(address,uint8)\":{\"notice\":\"Sets an address's white list ID.  Only administrators should be allowed to update this. If an address is on an existing whitelist, it will just get updated to the new value (removed from previous).\"},\"checkWhitelistAllowed(address,address)\":{\"notice\":\"Determine if the a sender is allowed to send to the receiver. The source whitelist must be enabled to send to the whitelist where the receive exists.\"},\"isAdministrator(address)\":{\"notice\":\"Determine if the message sender is in the administrators list.\"},\"removeAdmin(address)\":{\"notice\":\"Remove an admin from the list.  This should only be callable by the owner of the contract.\"},\"removeFromWhitelist(address)\":{\"notice\":\"Clears out an address's white list ID.  Only administrators should be allowed to update this.\"},\"updateOutboundWhitelistEnabled(uint8,uint8,bool)\":{\"notice\":\"Sets the flag to indicate whether source whitelist is allowed to send to destination whitelist. Only administrators should be allowed to update this.\"}},\"notice\":\"Keeps track of whitelists and can check if sender and reciever are configured to allow a transfer. Only administrators can update the whitelists. Any address can only be a member of one whitelist at a time.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/ProxySafeSimpleRestrictedFDT.sol\":\"Whitelistable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/FundsDistributionToken.sol\":{\"keccak256\":\"0x91b13e01fdef718f2d5a64d9d4051dd8495913ac78c2309342e6af7656d1ee21\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d9a17efea849552722739b1ffb0878a80da99072e6af5d8c2bd563dce00ebc29\",\"dweb:/ipfs/QmamL6A7LoLuqwNngKY3NPzZgpihiBPERFCbVB5G5wuPT5\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/IFundsDistributionToken.sol\":{\"keccak256\":\"0x357c01314146027ec6d250d5b29824bd795e00578b0b888b8c8063d1f49bfec8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4ba4486b5f8d60500cc1f8af3c9859c4bd0ee07a279f94b67ba1393391e54154\",\"dweb:/ipfs/QmNxYYnyPLh2vNJLzoPAVhHBxvuczBo24GDmRS61nD4ABv\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/IInitializableFDT.sol\":{\"keccak256\":\"0x367de24e2fcd7cd02aabe65af0afc0c5184781135bb826835a82d406f33c93b5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f08d02e99e8daf2be5f2067c12f2c81aff1983fa49eebbe9cf5bea75ae4f308c\",\"dweb:/ipfs/QmX1xtraEs8QwFF9tBTBPnuoU5mP3k9X9U1Y9eMoEjNyB7\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/ProxySafeSimpleRestrictedFDT.sol\":{\"keccak256\":\"0x3cbae3a5c69a96dad8db5de755d9a17a7b635aeb9c25770855ac7899a5a0665d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1ad9eaacfed275668030c96df6cf42a7ba5bbb54a088876ac32284f463692746\",\"dweb:/ipfs/QmSKbdDZz9YpGVaZYfB4FkA7Y3cvGCRVJQ6Jpd2SFg5TaL\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/math/SafeMathInt.sol\":{\"keccak256\":\"0xc53b786fe1e9a4a207e503272ca7bf485f4872a196fcdf9b209ff18a025857ae\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://99aef73723a7dac14a7a407036d85fe6070ea280e8509f214bf709321c1b7d68\",\"dweb:/ipfs/QmQW5ygUX2EJMQkUmNt3q18VrtrCEiNeape7JaUh19p1tF\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/FDT/math/SafeMathUint.sol\":{\"keccak256\":\"0xdba5f11842c7ef0d82b4fdccf5430ae81d677c426a8bbe1c5dd4df62ab9e43d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://216bba31081f8f7bae15fbd79648300a04740c472f23957963354497d82d86b2\",\"dweb:/ipfs/QmXMnSfoSKbobfQkcRExx8RC5ZSPCCiNdcb1xy3v3vGgWV\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0xe81686511d62f18b2d9c693c2c94c0a789c690de63aa90e15451ebf65c5bfd3e\",\"urls\":[\"bzz-raw://1332ee1d2b096456bf2e5795b5871d0fed47be6a31c9a2f2cef9206a299565ea\",\"dweb:/ipfs/Qmdu1847Y4UL3gTjbLUManMGfxYEoyGPSodM3Br89SKzwx\"]},\"@openzeppelin/contracts-ethereum-package/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f\",\"dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7\"]},\"@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol\":{\"keccak256\":\"0x04a69a78363214b4e3055db8e620bed222349f0c81e9d1cbe769eb849b69b73f\",\"urls\":[\"bzz-raw://b3115459376196d6c2c3817439c169d9b052b27b70e8ee2e28963cda760736da\",\"dweb:/ipfs/QmXaNF5rmcDSAzBiFMQjf979qb9xNXqD9eZtgo4uM9VEis\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x04d34b3cd5677bea25f8dfceb6dec0eaa071d4d4b789a43f13fe0c415ba4c296\",\"urls\":[\"bzz-raw://e7e8b526a6839e5ba14f0d23a830387fec47f7043ce01d42c9f285b709a9d080\",\"dweb:/ipfs/QmXmhhFmX5gcAvVzNiDPAGA35iHMPNaYtQkACswRHBVTNw\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x9c2d859bc9de93ced0875d226598e56067fe4d6b2dde0e1fd53ca60fa9603db0\",\"urls\":[\"bzz-raw://5df1baba4ea42a94d0e0aed4a87271369ef2cd54d86e89cab7ef1428ff387210\",\"dweb:/ipfs/QmV5ErriAFQWqEPAfWhJ6DxmujH6vBPB3F5Breaq9vUWGu\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x6cc1cb934a3ac2137a7dcaed018af9e235392236ceecfd3687259702b9c767ad\",\"urls\":[\"bzz-raw://0055fa88138cd1c3c6440370f8580f85857f8fe9dec41c99af9eafbeb8d9c3ce\",\"dweb:/ipfs/QmX1xDh8vwGLLCH8ti45eXjQ7Wcxv1FEGTR3jkFnd5Nv6F\"]},\"@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol\":{\"keccak256\":\"0x5f7da58ee3d9faa9b8999a93d49c8ff978f1afc88ae9bcfc6f9cbb44da011c2b\",\"urls\":[\"bzz-raw://4f089d954b3ecaa26949412fe63e9a184b056562c6c13dd4a0529a5d9a2e685a\",\"dweb:/ipfs/QmVK5iCNAMcEJQxT59bsC5E53JQASDQPU6khHox3d5ZXCn\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610b26806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806376be15851161008c57806392e6d68b1161006657806392e6d68b146102355780639437e2fe14610271578063e95945081461029f578063f2fde38b146102c7576100cf565b806376be1585146101c55780638ab1d681146101eb5780638da5cb5b14610211576100cf565b80630263b858146100d45780630a2eb301146101055780631785f53c1461013f5780633973b596146101655780637048027514610197578063715018a6146101bd575b600080fd5b610103600480360360408110156100ea57600080fd5b5080356001600160a01b0316906020013560ff166102ed565b005b61012b6004803603602081101561011b57600080fd5b50356001600160a01b0316610431565b604080519115158252519081900360200190f35b6101036004803603602081101561015557600080fd5b50356001600160a01b031661044f565b6101036004803603606081101561017b57600080fd5b5060ff813581169160208101359091169060400135151561054e565b610103600480360360208110156101ad57600080fd5b50356001600160a01b031661060b565b610103610709565b61012b600480360360208110156101db57600080fd5b50356001600160a01b03166107ab565b6101036004803603602081101561020157600080fd5b50356001600160a01b03166107c0565b61021961085b565b604080516001600160a01b039092168252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661086a565b6040805160ff9092168252519081900360200190f35b61012b6004803603604081101561028757600080fd5b506001600160a01b038135811691602001351661087f565b61012b600480360360408110156102b557600080fd5b5060ff813581169160200135166108f3565b610103600480360360208110156102dd57600080fd5b50356001600160a01b0316610913565b6102f633610431565b6103315760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff8116610386576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077686974656c69737420494420737570706c696564000000604482015290519081900360640190fd5b6001600160a01b0382166000908152609860205260409020805460ff83811660ff198316179092551680156103f157604051339060ff8316906001600160a01b038616907fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e90600090a45b604051339060ff8416906001600160a01b038616907fca6d1e885708b837a7647aeb7f4163ee4ca96058e08ac767be8d23c972c5027090600090a4505050565b6001600160a01b031660009081526097602052604090205460ff1690565b610457610a0c565b6065546001600160a01b039081169116146104a7576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff1615156001146105035760405162461bcd60e51b815260040180806020018281038252603d815260200180610a37603d913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055513392917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b61055733610431565b6105925760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b60ff838116600081815260996020908152604080832087861680855290835292819020805487151560ff1982168117909255825196168015158752928601528051919492939233927fb0353d563a9aa5231878c83727dc723a3cb8a38c2917f8ac2b777aa564c8a0d5929181900390910190a450505050565b610613610a0c565b6065546001600160a01b03908116911614610663576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526097602052604090205460ff16156106bb5760405162461bcd60e51b8152600401808060200182810382526035815260200180610abc6035913960400191505060405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055513392917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b610711610a0c565b6065546001600160a01b03908116911614610761576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b60976020526000908152604090205460ff1681565b6107c933610431565b6108045760405162461bcd60e51b8152600401808060200182810382526028815260200180610a746028913960400191505060405180910390fd5b6001600160a01b038116600081815260986020526040808220805460ff198116909155905160ff90911692339284927fb50a30a0fa972f89fbb2b514d12b31f5a5d64f53603402de7939742cd8507f6e9190a45050565b6065546001600160a01b031690565b60986020526000908152604090205460ff1681565b6001600160a01b03808316600090815260986020526040808220549284168252812054909160ff90811691168115806108b9575060ff8116155b156108c9576000925050506108ed565b60ff9182166000908152609960209081526040808320938516835292905220541690505b92915050565b609960209081526000928352604080842090915290825290205460ff1681565b61091b610a0c565b6065546001600160a01b0390811691161461096b576040805162461bcd60e51b81526020600482018190526024820152600080516020610a9c833981519152604482015290519081900360640190fd5b6001600160a01b0381166109b05760405162461bcd60e51b8152600401808060200182810382526026815260200180610a116026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734163636f756e7420746f2062652072656d6f7665642066726f6d2061646d696e206c697374206973206e6f7420616c726561647920616e2061646d696e43616c6c696e67206163636f756e74206973206e6f7420616e2061646d696e6973747261746f722e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724163636f756e7420746f20626520616464656420746f2061646d696e206c69737420697320616c726561647920616e2061646d696ea264697066735822122033e1d4ca91ed8eb89dd077e0f29984a8cd8d787a22a343e6ceb72f2dbbf4318164736f6c634300060b0033",
  "immutableReferences": {},
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "updatedAt": "2020-08-12T09:47:18.149Z"
}
