{
  "address": "0xCba01Cd644d1fCF152971Cc7A8f4E7eabebFF04E",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_barFee",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_barFeeTo",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_bento",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "AddToWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "barFee",
          "type": "uint256"
        }
      ],
      "name": "BarFeeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "deployData",
          "type": "bytes"
        }
      ],
      "name": "DeployPool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "RemoveFromWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "TransferOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "TransferOwnerClaim",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "addToWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "barFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "barFeeTo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bento",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_deployData",
          "type": "bytes"
        }
      ],
      "name": "deployPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pools",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "removeFromWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_barFee",
          "type": "uint256"
        }
      ],
      "name": "setBarFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        }
      ],
      "name": "transferOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelistedFactories",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "transactionHash": "0x068f733f4e026536e3c9c1af94474dde276bd61268707179d5c1413d128025d0",
  "receipt": {
    "to": null,
    "from": "0x58B4B6951e9174F153635574076241315D7d3503",
    "contractAddress": "0xCba01Cd644d1fCF152971Cc7A8f4E7eabebFF04E",
    "transactionIndex": 43,
    "gasUsed": "763796",
    "logsBloom": "0x00000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000808000000000000000000000000000000004000000004000000000000000800000104000000000000100000000020000000000020000000000100000000800000000000000000080000800000000000000000000000000800000020000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000040000004000000000000000000001000000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000100000",
    "blockHash": "0x45e3a7a43b1d21c12cac4187c77d36fdbf97e93404b6e79bf7733e618f3a70ea",
    "transactionHash": "0x068f733f4e026536e3c9c1af94474dde276bd61268707179d5c1413d128025d0",
    "logs": [
      {
        "transactionIndex": 43,
        "blockNumber": 21678036,
        "transactionHash": "0x068f733f4e026536e3c9c1af94474dde276bd61268707179d5c1413d128025d0",
        "address": "0xCba01Cd644d1fCF152971Cc7A8f4E7eabebFF04E",
        "topics": [
          "0x5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c5",
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x00000000000000000000000058b4b6951e9174f153635574076241315d7d3503"
        ],
        "data": "0x",
        "logIndex": 237,
        "blockHash": "0x45e3a7a43b1d21c12cac4187c77d36fdbf97e93404b6e79bf7733e618f3a70ea"
      },
      {
        "transactionIndex": 43,
        "blockNumber": 21678036,
        "transactionHash": "0x068f733f4e026536e3c9c1af94474dde276bd61268707179d5c1413d128025d0",
        "address": "0x0000000000000000000000000000000000001010",
        "topics": [
          "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
          "0x0000000000000000000000000000000000000000000000000000000000001010",
          "0x00000000000000000000000058b4b6951e9174f153635574076241315d7d3503",
          "0x0000000000000000000000007b5000af8ab69fd59eb0d4f5762bff57c9c04385"
        ],
        "data": "0x0000000000000000000000000000000000000000000000000051680d6dd37000000000000000000000000000000000000000000000000000dc6cd5c545aad830000000000000000000000000000000000000000000007babc3c61d931bc352b1000000000000000000000000000000000000000000000000dc1b6db7d7d76830000000000000000000000000000000000000000000007babc41785a08996c2b1",
        "logIndex": 238,
        "blockHash": "0x45e3a7a43b1d21c12cac4187c77d36fdbf97e93404b6e79bf7733e618f3a70ea"
      }
    ],
    "blockNumber": 21678036,
    "cumulativeGasUsed": "9067855",
    "status": 1,
    "byzantium": true
  },
  "args": [
    17,
    "0x58B4B6951e9174F153635574076241315D7d3503",
    "0x0319000133d3AdA02600f0875d2cf03D442C3367"
  ],
  "solcInputHash": "426130bf1086dd12d6f15ed5763ff493",
  "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_barFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_barFeeTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bento\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"AddToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"barFee\",\"type\":\"uint256\"}],\"name\":\"BarFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"deployData\",\"type\":\"bytes\"}],\"name\":\"DeployPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"RemoveFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwnerClaim\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_barFee\",\"type\":\"uint256\"}],\"name\":\"setBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"}],\"name\":\"transferOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedFactories\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{\"transferOwner(address,bool)\":{\"params\":{\"direct\":\"If 'true', ownership is directly transferred.\",\"recipient\":\"Account granted `owner` access control.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimOwner()\":{\"notice\":\"`pendingOwner` can claim `owner` account.\"},\"transferOwner(address,bool)\":{\"notice\":\"Transfer `owner` account.\"}},\"notice\":\"Trident pool deployer contract with template factory whitelist.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/deployer/MasterDeployer.sol\":\"MasterDeployer\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/deployer/MasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IPoolFactory.sol\\\";\\nimport \\\"../utils/TridentOwnable.sol\\\";\\n\\n/// @notice Trident pool deployer contract with template factory whitelist.\\n/// @author Mudit Gupta.\\ncontract MasterDeployer is TridentOwnable {\\n    event DeployPool(address indexed factory, address indexed pool, bytes deployData);\\n    event AddToWhitelist(address indexed factory);\\n    event RemoveFromWhitelist(address indexed factory);\\n    event BarFeeUpdated(uint256 indexed barFee);\\n\\n    uint256 public barFee;\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n\\n    mapping(address => bool) public pools;\\n    mapping(address => bool) public whitelistedFactories;\\n\\n    constructor(\\n        uint256 _barFee,\\n        address _barFeeTo,\\n        address _bento\\n    ) {\\n        require(_barFee <= MAX_FEE, \\\"INVALID_BAR_FEE\\\");\\n        require(_barFeeTo != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_bento != address(0), \\\"ZERO_ADDRESS\\\");\\n\\n        barFee = _barFee;\\n        barFeeTo = _barFeeTo;\\n        bento = _bento;\\n    }\\n\\n    function deployPool(address _factory, bytes calldata _deployData) external returns (address pool) {\\n        require(whitelistedFactories[_factory], \\\"FACTORY_NOT_WHITELISTED\\\");\\n        pool = IPoolFactory(_factory).deployPool(_deployData);\\n        pools[pool] = true;\\n        emit DeployPool(_factory, pool, _deployData);\\n    }\\n\\n    function addToWhitelist(address _factory) external onlyOwner {\\n        whitelistedFactories[_factory] = true;\\n        emit AddToWhitelist(_factory);\\n    }\\n\\n    function removeFromWhitelist(address _factory) external onlyOwner {\\n        whitelistedFactories[_factory] = false;\\n        emit RemoveFromWhitelist(_factory);\\n    }\\n\\n    function setBarFee(uint256 _barFee) external onlyOwner {\\n        require(_barFee <= MAX_FEE, \\\"INVALID_BAR_FEE\\\");\\n        barFee = _barFee;\\n        emit BarFeeUpdated(_barFee);\\n    }\\n}\\n\",\"keccak256\":\"0x4c7478195fee64d773fbebb9a6435036cd478dbb27c60e35d5c64c7ceaf6d7f9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident access control contract.\\n/// @author Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.\\ncontract TridentOwnable {\\n    address public owner;\\n    address public pendingOwner;\\n\\n    event TransferOwner(address indexed sender, address indexed recipient);\\n    event TransferOwnerClaim(address indexed sender, address indexed recipient);\\n\\n    /// @notice Initialize and grant deployer account (`msg.sender`) `owner` access role.\\n    constructor() {\\n        owner = msg.sender;\\n        emit TransferOwner(address(0), msg.sender);\\n    }\\n\\n    /// @notice Access control modifier that requires modified function to be called by `owner` account.\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"NOT_OWNER\\\");\\n        _;\\n    }\\n\\n    /// @notice `pendingOwner` can claim `owner` account.\\n    function claimOwner() external {\\n        require(msg.sender == pendingOwner, \\\"NOT_PENDING_OWNER\\\");\\n        emit TransferOwner(owner, msg.sender);\\n        owner = msg.sender;\\n        pendingOwner = address(0);\\n    }\\n\\n    /// @notice Transfer `owner` account.\\n    /// @param recipient Account granted `owner` access control.\\n    /// @param direct If 'true', ownership is directly transferred.\\n    function transferOwner(address recipient, bool direct) external onlyOwner {\\n        require(recipient != address(0), \\\"ZERO_ADDRESS\\\");\\n        if (direct) {\\n            owner = recipient;\\n            emit TransferOwner(msg.sender, recipient);\\n        } else {\\n            pendingOwner = recipient;\\n            emit TransferOwnerClaim(msg.sender, recipient);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5bb04352352b77289553cf278a61c75206e2b14477f0e1d61e7ce648c2306b46\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
  "bytecode": "0x60c060405234801561001057600080fd5b50604051610de3380380610de383398101604081905261002f91610182565b600080546001600160a01b0319163390811782556040519091907f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c5908290a36127108311156100b75760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4241525f46454560881b60448201526064015b60405180910390fd5b6001600160a01b0382166100fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016100ae565b6001600160a01b0381166101415760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016100ae565b6002929092556001600160601b0319606091821b811660805291901b1660a0526101be565b80516001600160a01b038116811461017d57600080fd5b919050565b60008060006060848603121561019757600080fd5b835192506101a760208501610166565b91506101b560408501610166565b90509250925092565b60805160601c60a05160601c610bfb6101e8600039600061016a0152600060fe0152610bfb6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638ab1d6811161008c578063c14ad80211610066578063c14ad80214610215578063cf81afaa1461022c578063e30c39781461023f578063e43252d71461025f57600080fd5b80638ab1d681146101bf5780638da5cb5b146101d2578063a4063dbc146101f257600080fd5b80633bd1adec116100bd5780633bd1adec1461015d5780634da31827146101655780636f50f2f41461018c57600080fd5b806306e22d12146100e45780630c0a0cd2146100f9578063250558dc1461014a575b600080fd5b6100f76100f2366004610b3a565b610272565b005b6101207f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610120610158366004610ab5565b610397565b6100f7610564565b6101207f000000000000000000000000000000000000000000000000000000000000000081565b6101af61019a366004610a36565b60046020526000908152604090205460ff1681565b6040519015158152602001610141565b6100f76101cd366004610a36565b610662565b6000546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6101af610200366004610a36565b60036020526000908152604090205460ff1681565b61021e60025481565b604051908152602001610141565b6100f761023a366004610a77565b610757565b6001546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6100f761026d366004610a36565b61093e565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b612710811115610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f4241525f464545000000000000000000000000000000000060448201526064016102ef565b600281905560405181907f880a5214911723edb25bb08410581af1de2e40c52eda03920990c4bc27011fb690600090a250565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205460ff16610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464143544f52595f4e4f545f57484954454c495354454400000000000000000060448201526064016102ef565b6040517f27c3cae100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906327c3cae19061047a9086908690600401610b53565b602060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610a5a565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935091908616907fe469f9471ac1d98222517eb2cdff1ef4df5f7880269173bb782bb78e499d9de3906105559087908790610b53565b60405180910390a39392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064016102ef565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c29190a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff8216610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f41444452455353000000000000000000000000000000000000000060448201526064016102ef565b80156108cc57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c79190a250565b600060208284031215610a4857600080fd5b8135610a5381610ba0565b9392505050565b600060208284031215610a6c57600080fd5b8151610a5381610ba0565b60008060408385031215610a8a57600080fd5b8235610a9581610ba0565b915060208301358015158114610aaa57600080fd5b809150509250929050565b600080600060408486031215610aca57600080fd5b8335610ad581610ba0565b9250602084013567ffffffffffffffff80821115610af257600080fd5b818601915086601f830112610b0657600080fd5b813581811115610b1557600080fd5b876020828501011115610b2757600080fd5b6020830194508093505050509250925092565b600060208284031215610b4c57600080fd5b5035919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bc257600080fd5b5056fea2646970667358221220cc5260807bf7da6841ecbd59e377c4677e5f6464b547b04f22c2041f2567b64c64736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638ab1d6811161008c578063c14ad80211610066578063c14ad80214610215578063cf81afaa1461022c578063e30c39781461023f578063e43252d71461025f57600080fd5b80638ab1d681146101bf5780638da5cb5b146101d2578063a4063dbc146101f257600080fd5b80633bd1adec116100bd5780633bd1adec1461015d5780634da31827146101655780636f50f2f41461018c57600080fd5b806306e22d12146100e45780630c0a0cd2146100f9578063250558dc1461014a575b600080fd5b6100f76100f2366004610b3a565b610272565b005b6101207f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610120610158366004610ab5565b610397565b6100f7610564565b6101207f000000000000000000000000000000000000000000000000000000000000000081565b6101af61019a366004610a36565b60046020526000908152604090205460ff1681565b6040519015158152602001610141565b6100f76101cd366004610a36565b610662565b6000546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6101af610200366004610a36565b60036020526000908152604090205460ff1681565b61021e60025481565b604051908152602001610141565b6100f761023a366004610a77565b610757565b6001546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6100f761026d366004610a36565b61093e565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b612710811115610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f4241525f464545000000000000000000000000000000000060448201526064016102ef565b600281905560405181907f880a5214911723edb25bb08410581af1de2e40c52eda03920990c4bc27011fb690600090a250565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205460ff16610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464143544f52595f4e4f545f57484954454c495354454400000000000000000060448201526064016102ef565b6040517f27c3cae100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906327c3cae19061047a9086908690600401610b53565b602060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610a5a565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935091908616907fe469f9471ac1d98222517eb2cdff1ef4df5f7880269173bb782bb78e499d9de3906105559087908790610b53565b60405180910390a39392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064016102ef565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c29190a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff8216610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f41444452455353000000000000000000000000000000000000000060448201526064016102ef565b80156108cc57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c79190a250565b600060208284031215610a4857600080fd5b8135610a5381610ba0565b9392505050565b600060208284031215610a6c57600080fd5b8151610a5381610ba0565b60008060408385031215610a8a57600080fd5b8235610a9581610ba0565b915060208301358015158114610aaa57600080fd5b809150509250929050565b600080600060408486031215610aca57600080fd5b8335610ad581610ba0565b9250602084013567ffffffffffffffff80821115610af257600080fd5b818601915086601f830112610b0657600080fd5b813581811115610b1557600080fd5b876020828501011115610b2757600080fd5b6020830194508093505050509250925092565b600060208284031215610b4c57600080fd5b5035919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bc257600080fd5b5056fea2646970667358221220cc5260807bf7da6841ecbd59e377c4677e5f6464b547b04f22c2041f2567b64c64736f6c63430008070033",
  "devdoc": {
    "author": "Mudit Gupta.",
    "kind": "dev",
    "methods": {
      "transferOwner(address,bool)": {
        "params": {
          "direct": "If 'true', ownership is directly transferred.",
          "recipient": "Account granted `owner` access control."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "claimOwner()": {
        "notice": "`pendingOwner` can claim `owner` account."
      },
      "transferOwner(address,bool)": {
        "notice": "Transfer `owner` account."
      }
    },
    "notice": "Trident pool deployer contract with template factory whitelist.",
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 24062,
        "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
        "label": "owner",
        "offset": 0,
        "slot": "0",
        "type": "t_address"
      },
      {
        "astId": 24064,
        "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
        "label": "pendingOwner",
        "offset": 0,
        "slot": "1",
        "type": "t_address"
      },
      {
        "astId": 1921,
        "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
        "label": "barFee",
        "offset": 0,
        "slot": "2",
        "type": "t_uint256"
      },
      {
        "astId": 1932,
        "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
        "label": "pools",
        "offset": 0,
        "slot": "3",
        "type": "t_mapping(t_address,t_bool)"
      },
      {
        "astId": 1936,
        "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
        "label": "whitelistedFactories",
        "offset": 0,
        "slot": "4",
        "type": "t_mapping(t_address,t_bool)"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_bool": {
        "encoding": "inplace",
        "label": "bool",
        "numberOfBytes": "1"
      },
      "t_mapping(t_address,t_bool)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => bool)",
        "numberOfBytes": "32",
        "value": "t_bool"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}