{
  "contractName": "GeneralTransferManager",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "allowAllBurnTransfers",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "WHITELIST",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allowAllWhitelistTransfers",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "takeFee",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FLAGS",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelist",
      "outputs": [
        {
          "name": "fromTime",
          "type": "uint256"
        },
        {
          "name": "toTime",
          "type": "uint256"
        },
        {
          "name": "expiryTime",
          "type": "uint256"
        },
        {
          "name": "canBuyFromSTO",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allowAllTransfers",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signingAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "issuanceAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allowAllWhitelistIssuances",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_securityToken",
          "type": "address"
        },
        {
          "name": "_polyAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_issuanceAddress",
          "type": "address"
        }
      ],
      "name": "LogChangeIssuanceAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_allowAllTransfers",
          "type": "bool"
        }
      ],
      "name": "LogAllowAllTransfers",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_allowAllWhitelistTransfers",
          "type": "bool"
        }
      ],
      "name": "LogAllowAllWhitelistTransfers",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_allowAllWhitelistIssuances",
          "type": "bool"
        }
      ],
      "name": "LogAllowAllWhitelistIssuances",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_allowAllBurnTransfers",
          "type": "bool"
        }
      ],
      "name": "LogAllowAllBurnTransfers",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_signingAddress",
          "type": "address"
        }
      ],
      "name": "LogChangeSigningAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_investor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_dateAdded",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_addedBy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_fromTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_toTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_expiryTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_canBuyFromSTO",
          "type": "bool"
        }
      ],
      "name": "LogModifyWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestammp",
          "type": "uint256"
        }
      ],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Unpause",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitFunction",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_issuanceAddress",
          "type": "address"
        }
      ],
      "name": "changeIssuanceAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_signingAddress",
          "type": "address"
        }
      ],
      "name": "changeSigningAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_allowAllTransfers",
          "type": "bool"
        }
      ],
      "name": "changeAllowAllTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_allowAllWhitelistTransfers",
          "type": "bool"
        }
      ],
      "name": "changeAllowAllWhitelistTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_allowAllWhitelistIssuances",
          "type": "bool"
        }
      ],
      "name": "changeAllowAllWhitelistIssuances",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_allowAllBurnTransfers",
          "type": "bool"
        }
      ],
      "name": "changeAllowAllBurnTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "bool"
        }
      ],
      "name": "verifyTransfer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investor",
          "type": "address"
        },
        {
          "name": "_fromTime",
          "type": "uint256"
        },
        {
          "name": "_toTime",
          "type": "uint256"
        },
        {
          "name": "_expiryTime",
          "type": "uint256"
        },
        {
          "name": "_canBuyFromSTO",
          "type": "bool"
        }
      ],
      "name": "modifyWhitelist",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investors",
          "type": "address[]"
        },
        {
          "name": "_fromTimes",
          "type": "uint256[]"
        },
        {
          "name": "_toTimes",
          "type": "uint256[]"
        },
        {
          "name": "_expiryTimes",
          "type": "uint256[]"
        },
        {
          "name": "_canBuyFromSTO",
          "type": "bool[]"
        }
      ],
      "name": "modifyWhitelistMulti",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investor",
          "type": "address"
        },
        {
          "name": "_fromTime",
          "type": "uint256"
        },
        {
          "name": "_toTime",
          "type": "uint256"
        },
        {
          "name": "_expiryTime",
          "type": "uint256"
        },
        {
          "name": "_canBuyFromSTO",
          "type": "bool"
        },
        {
          "name": "_validFrom",
          "type": "uint256"
        },
        {
          "name": "_validTo",
          "type": "uint256"
        },
        {
          "name": "_v",
          "type": "uint8"
        },
        {
          "name": "_r",
          "type": "bytes32"
        },
        {
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "modifyWhitelistSigned",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460a060020a60ff021916905560038054600160a060020a03199081169091556004805490911690556006805463ff0000001962ffffff19909116620100001716905534801561005657600080fd5b5060405160408061287883398101604052805160209091015160018054600160a060020a03938416600160a060020a03199182161790915560008054821633179055600280549390921692169190911790556127c1806100b76000396000f30060806040526004361061015b5763ffffffff60e060020a60003504166307592f6081146101605780630f28937c146101a5578063144b8afa146102de5780631613ec9d146103075780631bb7cc99146103515780632909a80e146103785780633f0547bb1461038d5780633f4ba83a146103a75780634caaf45f146103bc5780635c975abb146103dd5780635f7619a4146103f25780636faa22a51461040a5780637915c9e01461043b5780637ecc866f1461048e5780638456cb59146104a85780639332b62c146104bd5780639728538f146104d75780639b19251a146104ec578063b1dd811114610535578063b3e82dc91461054a578063b3fac8ce1461055f578063b84dfbd214610574578063c3a07df614610589578063c45a0155146105ee578063d70afa9614610603578063d7604a7814610618578063e0c6815814610647578063e55d0f8b14610668578063e8a28d521461067d575b600080fd5b34801561016c57600080fd5b506101a3600160a060020a0360043516602435604435606435608435151560a43560c43560ff60e435166101043561012435610697565b005b3480156101b157600080fd5b50604080516020600480358082013583810280860185019096528085526101a395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506109689650505050505050565b3480156102ea57600080fd5b506102f3610cf8565b604080519115158252519081900360200190f35b34801561031357600080fd5b5061031c610d08565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561035d57600080fd5b50610366610d0d565b60408051918252519081900360200190f35b34801561038457600080fd5b506102f3610d1f565b34801561039957600080fd5b506101a36004351515610d2d565b3480156103b357600080fd5b506101a3610efa565b3480156103c857600080fd5b506101a3600160a060020a0360043516610fe2565b3480156103e957600080fd5b506102f36111c9565b3480156103fe57600080fd5b506102f36004356111d9565b34801561041657600080fd5b5061041f6114f0565b60408051600160a060020a039092168252519081900360200190f35b34801561044757600080fd5b5061046a600160a060020a036004358116906024351660443560643515156114ff565b6040518082600381111561047a57fe5b60ff16815260200191505060405180910390f35b34801561049a57600080fd5b506101a36004351515611678565b3480156104b457600080fd5b506101a361184f565b3480156104c957600080fd5b506101a36004351515611935565b3480156104e357600080fd5b50610366611b0a565b3480156104f857600080fd5b5061050d600160a060020a0360043516611b19565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561054157600080fd5b506102f3611b43565b34801561055657600080fd5b5061041f611b4c565b34801561056b57600080fd5b5061041f611b5b565b34801561058057600080fd5b5061041f611b6a565b34801561059557600080fd5b5061059e611b79565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105da5781810151838201526020016105c2565b505050509050019250505060405180910390f35b3480156105fa57600080fd5b5061041f611bf3565b34801561060f57600080fd5b50610366611c02565b34801561062457600080fd5b506101a3600160a060020a03600435166024356044356064356084351515611c26565b34801561065357600080fd5b506101a3600160a060020a0360043516611ecf565b34801561067457600080fd5b506102f36120b6565b34801561068957600080fd5b506101a360043515156120c5565b6000428611156106f1576040805160e560020a62461bcd02815260206004820152601660248201527f56616c696446726f6d20697320746f6f206561726c7900000000000000000000604482015290519081900360640190fd5b42851015610749576040805160e560020a62461bcd02815260206004820152601360248201527f56616c6964546f20697320746f6f206c61746500000000000000000000000000604482015290519081900360640190fd5b604080516c01000000000000000000000000308102602080840191909152600160a060020a038f169091026034830152604882018d9052606882018c9052608882018b90527f01000000000000000000000000000000000000000000000000000000000000008a15150260a883015260a9820189905260c98083018990528351808403909101815260e990920192839052815191929182918401908083835b602083106108075780518252601f1990920191602091820191016107e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506108428185858561229e565b6080604051908101604052808b81526020018a8152602001898152602001881515815250600560008d600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f7a985b3a91e6a809b9457eb0e56c26c57186f124ae7e661ef14fa3518d49cdba8b42338d8d8d8d6040518088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a031681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390a15050505050505050505050565b6000600080516020612756833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109cf57600080fd5b505af11580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b505160005433600160a060020a039283168114945091161490508180610a1c5750805b80610aac57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b505050506040513d6020811015610aa957600080fd5b50515b1515610af0576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b8751895114610b49576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8651885114610ba2576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8551875114610bfb576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8651855114610c54576040805160e560020a62461bcd02815260206004820152601760248201527f4d69736d61746368656420696e707574206c656e677468000000000000000000604482015290519081900360640190fd5b600093505b8851841015610ced57610ce28985815181101515610c7357fe5b906020019060200201518986815181101515610c8b57fe5b906020019060200201518987815181101515610ca357fe5b906020019060200201518988815181101515610cbb57fe5b906020019060200201518989815181101515610cd357fe5b90602001906020020151611c26565b600190930192610c59565b505050505050505050565b6006546301000000900460ff1681565b600090565b60008051602061275683398151915281565b600654610100900460ff1681565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b505050506040513d6020811015610db957600080fd5b505160005433600160a060020a039283168114945091161490508180610ddc5750805b80610e6c57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610e3f57600080fd5b505af1158015610e53573d6000803e3d6000fd5b505050506040513d6020811015610e6957600080fd5b50515b1515610eb0576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b6006805485151560ff19909116811790915560408051918252517f185556241b5bd01bdb7ff63397b8990ec8d33116f15a7d7eb5f2b8f7072e1d499181900360200190a150505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f4d57600080fd5b505af1158015610f61573d6000803e3d6000fd5b505050506040513d6020811015610f7757600080fd5b5051600160a060020a03163314610fd8576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610fe06124b7565b565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505160005433600160a060020a0392831681149450911614905081806110915750805b8061112157506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b50515b1515611165576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60048054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f5940b3e4196e0af34b25de54a6476219b7065395349f15fb84006511fd962d329181900360200190a150505050565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506040513d602081101561127c57600080fd5b505160005433600160a060020a03928316811494509116149050818061129f5750805b8061132f57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561130257600080fd5b505af1158015611316573d6000803e3d6000fd5b505050506040513d602081101561132c57600080fd5b50515b1515611373576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156113e257600080fd5b505af11580156113f6573d6000803e3d6000fd5b505050506040513d602081101561140c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d602081101561148d57600080fd5b505115156114e5576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b60025460009060a060020a900460ff1615156114e55760065460ff161561152857506002611670565b6006546301000000900460ff1680156115485750600160a060020a038416155b1561155557506002611670565b600654610100900460ff16156115935761156e8461256d565b801561157e575061157e8561256d565b61158957600161158c565b60025b9050611670565b60065462010000900460ff1680156115b85750600354600160a060020a038681169116145b1561160257600160a060020a03841660009081526005602052604090206003015460ff161580156115ec57506115ec6125da565b156115f957506001611670565b61157e8461256d565b61160b8561256d565b801561162f5750600160a060020a0385166000908152600560205260409020544210155b801561157e575061163f8461256d565b801561157e5750600160a060020a03841660009081526005602052604090206001015442101561158957600161158c565b949350505050565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b505050506040513d602081101561170457600080fd5b505160005433600160a060020a0392831681149450911614905081806117275750805b806117b757506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561178a57600080fd5b505af115801561179e573d6000803e3d6000fd5b505050506040513d60208110156117b457600080fd5b50515b15156117fb576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b6006805485151562010000810262ff0000199092169190911790915560408051918252517f4b711350abee425bbbbd22b0a6615df775a36f2838168ca64da9177ad8fec1609181900360200190a150505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b505050506040513d60208110156118cc57600080fd5b5051600160a060020a0316331461192d576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610fe061269a565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561199757600080fd5b505af11580156119ab573d6000803e3d6000fd5b505050506040513d60208110156119c157600080fd5b505160005433600160a060020a0392831681149450911614905081806119e45750805b80611a7457506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611a4757600080fd5b505af1158015611a5b573d6000803e3d6000fd5b505050506040513d6020811015611a7157600080fd5b50515b1515611ab8576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60068054851515610100810261ff00199092169190911790915560408051918252517f7544dcc0388a2e2a001b92ece53af2e1e3135973ff37e5dcd80a12cf5ed2b4259181900360200190a150505050565b60d860020a64464c4147530281565b60056020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60065460ff1681565b600454600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b604080516002808252606080830184529283929190602083019080388339019050509050600080516020612756833981519152816000815181101515611bbb57fe5b60209081029091010152805160d860020a64464c414753029082906001908110611be157fe5b602090810290910101529050805b5090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b600080516020612756833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611c8b57600080fd5b505af1158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b505160005433600160a060020a039283168114945091161490508180611cd85750805b80611d6857506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611d3b57600080fd5b505af1158015611d4f573d6000803e3d6000fd5b505050506040513d6020811015611d6557600080fd5b50515b1515611dac576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b608060405190810160405280888152602001878152602001868152602001851515815250600560008a600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f7a985b3a91e6a809b9457eb0e56c26c57186f124ae7e661ef14fa3518d49cdba8842338a8a8a8a6040518088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a031681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390a15050505050505050565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f3157600080fd5b505af1158015611f45573d6000803e3d6000fd5b505050506040513d6020811015611f5b57600080fd5b505160005433600160a060020a039283168114945091161490508180611f7e5750805b8061200e57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611fe157600080fd5b505af1158015611ff5573d6000803e3d6000fd5b505050506040513d602081101561200b57600080fd5b50515b1515612052576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60038054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f0e2eb0247b22c29b3f02a9a2b65eae999b4117981e84dc701ce1fb6830a6ac5f9181900360200190a150505050565b60065462010000900460ff1681565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561212757600080fd5b505af115801561213b573d6000803e3d6000fd5b505050506040513d602081101561215157600080fd5b505160005433600160a060020a0392831681149450911614905081806121745750805b8061220457506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b505050506040513d602081101561220157600080fd5b50515b1515612248576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b600680548515156301000000810263ff000000199092169190911790915560408051918252517f1234a547e9a90612dd64cdca6ea7120623490ff57b5762b1e6f7bec9a81aaa409181900360200190a150505050565b600060018560405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106123215780518252601f199092019160209182019101612302565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8c1683860152606083018b9052608083018a9052935160a08084019750919550601f1981019492819003909101925090865af115801561239d573d6000803e3d6000fd5b505060408051601f198101516001547f8da5cb5b0000000000000000000000000000000000000000000000000000000083529251909450600160a060020a039092169250638da5cb5b9160048083019260209291908290030181600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050506040513d602081101561243257600080fd5b5051600160a060020a038281169116148061245a5750600454600160a060020a038281169116145b15156124b0576040805160e560020a62461bcd02815260206004820152601060248201527f496e636f7272656374207369676e657200000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b60025460a060020a900460ff16151561251a576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b600160a060020a0381166000908152600560205260408120541515806125ad5750600160a060020a03821660009081526005602052604090206001015415155b80156125d45750600160a060020a0382166000908152600560205260409020600201544211155b92915050565b600154604080517f46b65ffd00000000000000000000000000000000000000000000000000000000815260036004820152600060248201819052825190938493600160a060020a03909116926346b65ffd926044808301939282900301818787803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d604081101561267257600080fd5b50602001519050600160a060020a03811615156126925760009150611bef565b600191505090565b60025460a060020a900460ff16156126fc576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1560057484954454c49535400000000000000000000000000000000000000000000005065726d697373696f6e20636865636b206661696c6564000000000000000000a165627a7a72305820a1f92723bd8a4c700bc135f7e04f35fe9dec11d8d2916e12ffee583ef17684300029",
  "deployedBytecode": "0x60806040526004361061015b5763ffffffff60e060020a60003504166307592f6081146101605780630f28937c146101a5578063144b8afa146102de5780631613ec9d146103075780631bb7cc99146103515780632909a80e146103785780633f0547bb1461038d5780633f4ba83a146103a75780634caaf45f146103bc5780635c975abb146103dd5780635f7619a4146103f25780636faa22a51461040a5780637915c9e01461043b5780637ecc866f1461048e5780638456cb59146104a85780639332b62c146104bd5780639728538f146104d75780639b19251a146104ec578063b1dd811114610535578063b3e82dc91461054a578063b3fac8ce1461055f578063b84dfbd214610574578063c3a07df614610589578063c45a0155146105ee578063d70afa9614610603578063d7604a7814610618578063e0c6815814610647578063e55d0f8b14610668578063e8a28d521461067d575b600080fd5b34801561016c57600080fd5b506101a3600160a060020a0360043516602435604435606435608435151560a43560c43560ff60e435166101043561012435610697565b005b3480156101b157600080fd5b50604080516020600480358082013583810280860185019096528085526101a395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506109689650505050505050565b3480156102ea57600080fd5b506102f3610cf8565b604080519115158252519081900360200190f35b34801561031357600080fd5b5061031c610d08565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561035d57600080fd5b50610366610d0d565b60408051918252519081900360200190f35b34801561038457600080fd5b506102f3610d1f565b34801561039957600080fd5b506101a36004351515610d2d565b3480156103b357600080fd5b506101a3610efa565b3480156103c857600080fd5b506101a3600160a060020a0360043516610fe2565b3480156103e957600080fd5b506102f36111c9565b3480156103fe57600080fd5b506102f36004356111d9565b34801561041657600080fd5b5061041f6114f0565b60408051600160a060020a039092168252519081900360200190f35b34801561044757600080fd5b5061046a600160a060020a036004358116906024351660443560643515156114ff565b6040518082600381111561047a57fe5b60ff16815260200191505060405180910390f35b34801561049a57600080fd5b506101a36004351515611678565b3480156104b457600080fd5b506101a361184f565b3480156104c957600080fd5b506101a36004351515611935565b3480156104e357600080fd5b50610366611b0a565b3480156104f857600080fd5b5061050d600160a060020a0360043516611b19565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561054157600080fd5b506102f3611b43565b34801561055657600080fd5b5061041f611b4c565b34801561056b57600080fd5b5061041f611b5b565b34801561058057600080fd5b5061041f611b6a565b34801561059557600080fd5b5061059e611b79565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105da5781810151838201526020016105c2565b505050509050019250505060405180910390f35b3480156105fa57600080fd5b5061041f611bf3565b34801561060f57600080fd5b50610366611c02565b34801561062457600080fd5b506101a3600160a060020a03600435166024356044356064356084351515611c26565b34801561065357600080fd5b506101a3600160a060020a0360043516611ecf565b34801561067457600080fd5b506102f36120b6565b34801561068957600080fd5b506101a360043515156120c5565b6000428611156106f1576040805160e560020a62461bcd02815260206004820152601660248201527f56616c696446726f6d20697320746f6f206561726c7900000000000000000000604482015290519081900360640190fd5b42851015610749576040805160e560020a62461bcd02815260206004820152601360248201527f56616c6964546f20697320746f6f206c61746500000000000000000000000000604482015290519081900360640190fd5b604080516c01000000000000000000000000308102602080840191909152600160a060020a038f169091026034830152604882018d9052606882018c9052608882018b90527f01000000000000000000000000000000000000000000000000000000000000008a15150260a883015260a9820189905260c98083018990528351808403909101815260e990920192839052815191929182918401908083835b602083106108075780518252601f1990920191602091820191016107e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506108428185858561229e565b6080604051908101604052808b81526020018a8152602001898152602001881515815250600560008d600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f7a985b3a91e6a809b9457eb0e56c26c57186f124ae7e661ef14fa3518d49cdba8b42338d8d8d8d6040518088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a031681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390a15050505050505050505050565b6000600080516020612756833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109cf57600080fd5b505af11580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b505160005433600160a060020a039283168114945091161490508180610a1c5750805b80610aac57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b505050506040513d6020811015610aa957600080fd5b50515b1515610af0576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b8751895114610b49576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8651885114610ba2576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8551875114610bfb576040805160e560020a62461bcd02815260206004820152601860248201527f4d69736d61746368656420696e707574206c656e677468730000000000000000604482015290519081900360640190fd5b8651855114610c54576040805160e560020a62461bcd02815260206004820152601760248201527f4d69736d61746368656420696e707574206c656e677468000000000000000000604482015290519081900360640190fd5b600093505b8851841015610ced57610ce28985815181101515610c7357fe5b906020019060200201518986815181101515610c8b57fe5b906020019060200201518987815181101515610ca357fe5b906020019060200201518988815181101515610cbb57fe5b906020019060200201518989815181101515610cd357fe5b90602001906020020151611c26565b600190930192610c59565b505050505050505050565b6006546301000000900460ff1681565b600090565b60008051602061275683398151915281565b600654610100900460ff1681565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b505050506040513d6020811015610db957600080fd5b505160005433600160a060020a039283168114945091161490508180610ddc5750805b80610e6c57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610e3f57600080fd5b505af1158015610e53573d6000803e3d6000fd5b505050506040513d6020811015610e6957600080fd5b50515b1515610eb0576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b6006805485151560ff19909116811790915560408051918252517f185556241b5bd01bdb7ff63397b8990ec8d33116f15a7d7eb5f2b8f7072e1d499181900360200190a150505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f4d57600080fd5b505af1158015610f61573d6000803e3d6000fd5b505050506040513d6020811015610f7757600080fd5b5051600160a060020a03163314610fd8576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610fe06124b7565b565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505160005433600160a060020a0392831681149450911614905081806110915750805b8061112157506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b50515b1515611165576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60048054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f5940b3e4196e0af34b25de54a6476219b7065395349f15fb84006511fd962d329181900360200190a150505050565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506040513d602081101561127c57600080fd5b505160005433600160a060020a03928316811494509116149050818061129f5750805b8061132f57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561130257600080fd5b505af1158015611316573d6000803e3d6000fd5b505050506040513d602081101561132c57600080fd5b50515b1515611373576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156113e257600080fd5b505af11580156113f6573d6000803e3d6000fd5b505050506040513d602081101561140c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d602081101561148d57600080fd5b505115156114e5576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b60025460009060a060020a900460ff1615156114e55760065460ff161561152857506002611670565b6006546301000000900460ff1680156115485750600160a060020a038416155b1561155557506002611670565b600654610100900460ff16156115935761156e8461256d565b801561157e575061157e8561256d565b61158957600161158c565b60025b9050611670565b60065462010000900460ff1680156115b85750600354600160a060020a038681169116145b1561160257600160a060020a03841660009081526005602052604090206003015460ff161580156115ec57506115ec6125da565b156115f957506001611670565b61157e8461256d565b61160b8561256d565b801561162f5750600160a060020a0385166000908152600560205260409020544210155b801561157e575061163f8461256d565b801561157e5750600160a060020a03841660009081526005602052604090206001015442101561158957600161158c565b949350505050565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b505050506040513d602081101561170457600080fd5b505160005433600160a060020a0392831681149450911614905081806117275750805b806117b757506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561178a57600080fd5b505af115801561179e573d6000803e3d6000fd5b505050506040513d60208110156117b457600080fd5b50515b15156117fb576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b6006805485151562010000810262ff0000199092169190911790915560408051918252517f4b711350abee425bbbbd22b0a6615df775a36f2838168ca64da9177ad8fec1609181900360200190a150505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b505050506040513d60208110156118cc57600080fd5b5051600160a060020a0316331461192d576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610fe061269a565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561199757600080fd5b505af11580156119ab573d6000803e3d6000fd5b505050506040513d60208110156119c157600080fd5b505160005433600160a060020a0392831681149450911614905081806119e45750805b80611a7457506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611a4757600080fd5b505af1158015611a5b573d6000803e3d6000fd5b505050506040513d6020811015611a7157600080fd5b50515b1515611ab8576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60068054851515610100810261ff00199092169190911790915560408051918252517f7544dcc0388a2e2a001b92ece53af2e1e3135973ff37e5dcd80a12cf5ed2b4259181900360200190a150505050565b60d860020a64464c4147530281565b60056020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60065460ff1681565b600454600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b604080516002808252606080830184529283929190602083019080388339019050509050600080516020612756833981519152816000815181101515611bbb57fe5b60209081029091010152805160d860020a64464c414753029082906001908110611be157fe5b602090810290910101529050805b5090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b600080516020612756833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611c8b57600080fd5b505af1158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b505160005433600160a060020a039283168114945091161490508180611cd85750805b80611d6857506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611d3b57600080fd5b505af1158015611d4f573d6000803e3d6000fd5b505050506040513d6020811015611d6557600080fd5b50515b1515611dac576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b608060405190810160405280888152602001878152602001868152602001851515815250600560008a600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f7a985b3a91e6a809b9457eb0e56c26c57186f124ae7e661ef14fa3518d49cdba8842338a8a8a8a6040518088600160a060020a0316600160a060020a0316815260200187815260200186600160a060020a0316600160a060020a031681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390a15050505050505050565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f3157600080fd5b505af1158015611f45573d6000803e3d6000fd5b505050506040513d6020811015611f5b57600080fd5b505160005433600160a060020a039283168114945091161490508180611f7e5750805b8061200e57506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015611fe157600080fd5b505af1158015611ff5573d6000803e3d6000fd5b505050506040513d602081101561200b57600080fd5b50515b1515612052576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b60038054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f0e2eb0247b22c29b3f02a9a2b65eae999b4117981e84dc701ce1fb6830a6ac5f9181900360200190a150505050565b60065462010000900460ff1681565b60d860020a64464c41475302600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561212757600080fd5b505af115801561213b573d6000803e3d6000fd5b505050506040513d602081101561215157600080fd5b505160005433600160a060020a0392831681149450911614905081806121745750805b8061220457506001546040805160e060020a638658b8b9028152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b505050506040513d602081101561220157600080fd5b50515b1515612248576040805160e560020a62461bcd0281526020600482015260176024820152600080516020612776833981519152604482015290519081900360640190fd5b600680548515156301000000810263ff000000199092169190911790915560408051918252517f1234a547e9a90612dd64cdca6ea7120623490ff57b5762b1e6f7bec9a81aaa409181900360200190a150505050565b600060018560405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106123215780518252601f199092019160209182019101612302565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8c1683860152606083018b9052608083018a9052935160a08084019750919550601f1981019492819003909101925090865af115801561239d573d6000803e3d6000fd5b505060408051601f198101516001547f8da5cb5b0000000000000000000000000000000000000000000000000000000083529251909450600160a060020a039092169250638da5cb5b9160048083019260209291908290030181600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050506040513d602081101561243257600080fd5b5051600160a060020a038281169116148061245a5750600454600160a060020a038281169116145b15156124b0576040805160e560020a62461bcd02815260206004820152601060248201527f496e636f7272656374207369676e657200000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b60025460a060020a900460ff16151561251a576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b600160a060020a0381166000908152600560205260408120541515806125ad5750600160a060020a03821660009081526005602052604090206001015415155b80156125d45750600160a060020a0382166000908152600560205260409020600201544211155b92915050565b600154604080517f46b65ffd00000000000000000000000000000000000000000000000000000000815260036004820152600060248201819052825190938493600160a060020a03909116926346b65ffd926044808301939282900301818787803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d604081101561267257600080fd5b50602001519050600160a060020a03811615156126925760009150611bef565b600191505090565b60025460a060020a900460ff16156126fc576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1560057484954454c49535400000000000000000000000000000000000000000000005065726d697373696f6e20636865636b206661696c6564000000000000000000a165627a7a72305820a1f92723bd8a4c700bc135f7e04f35fe9dec11d8d2916e12ffee583ef17684300029",
  "sourceMap": "759:13030:48:-;;;216:26:2;;;-1:-1:-1;;;;;;216:26:2;;;891:43:48;;;-1:-1:-1;;;;;;891:43:48;;;;;;988:42;;;;;;;;1669:37;;;-1:-1:-1;;;;1938:45:48;;;;;2047:41;;;3408:123;5:2:-1;;;;30:1;27;20:12;5:2;3408:123:48;;;;;;;;;;;;;;;;;;;624:13:13;:30;;-1:-1:-1;;;;;624:30:13;;;-1:-1:-1;;;;;;624:30:13;;;;;;;:13;664:20;;;;674:10;664:20;;;694:9;:31;;;;;;;;;;;;;;759:13030:48;;;;;;",
  "deployedSourceMap": "759:13030:48:-;;;;;;;;-1:-1:-1;759:13030:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11191:912;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11191:912:48;;;-1:-1:-1;;;;;11191:912:48;;;;;;;;;;;;;;;;;;;;;;;;;;;9584:736;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9584:736:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9584:736:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9584:736:48;;;;-1:-1:-1;9584:736:48;-1:-1:-1;9584:736:48;;-1:-1:-1;9584:736:48;;;;;;;;;-1:-1:-1;;9584:736:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9584:736:48;;;;-1:-1:-1;9584:736:48;-1:-1:-1;9584:736:48;;-1:-1:-1;9584:736:48;;;;;;;;;-1:-1:-1;;9584:736:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9584:736:48;;;;-1:-1:-1;9584:736:48;-1:-1:-1;9584:736:48;;-1:-1:-1;9584:736:48;;;;;;;;;-1:-1:-1;;9584:736:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9584:736:48;;;;-1:-1:-1;9584:736:48;-1:-1:-1;9584:736:48;;-1:-1:-1;9584:736:48;;;;;;;;;-1:-1:-1;9584:736:48;;-1:-1:-1;9584:736:48;;-1:-1:-1;;;;;;;9584:736:48;2047:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2047:41:48;;;;;;;;;;;;;;;;;;;;;;3626:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3626:89:48;;;;;;;;;;;;;;;;;;;;;;;1037:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1037:47:48;;;;;;;;;;;;;;;;;;;;1799:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1799:46:48;;;;4611:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4611:191:48;;;;;;;711:69:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:69:50;;;;4167:182:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4167:182:48;;;-1:-1:-1;;;;;4167:182:48;;;216:26:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:26:2;;;;1890:223:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1890:223:13;;;;;365:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:22:13;;;;;;;;-1:-1:-1;;;;;365:22:13;;;;;;;;;;;;;;6703:1241:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6703:1241:48;-1:-1:-1;;;;;6703:1241:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5635:245;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5635:245:48;;;;;;;786:65:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;786:65:50;;;;5096:245:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5096:245:48;;;;;;;1090:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1090:39:48;;;;1540:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1540:53:48;;;-1:-1:-1;;;;;1540:53:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:37:48;;;;988:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;988:42:48;;;;891:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;891:43:48;;;;276:28:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;276:28:13;;;;12764:229:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12764:229:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12764:229:48;;;;;;;;;;;;;;;;;247:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:22:13;;;;311:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:47:13;;;;8529:473:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8529:473:48;;;-1:-1:-1;;;;;8529:473:48;;;;;;;;;;;;;3848:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3848:188:48;;;-1:-1:-1;;;;;3848:188:48;;;1938:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1938:45:48;;;;6093:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6093:215:48;;;;;;;11191:912;11613:12;11516:3;11502:17;;;11494:52;;;;;-1:-1:-1;;;;;11494:52:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;11576:3;11564:15;;;11556:47;;;;;-1:-1:-1;;;;;11556:47:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;11638:104;;;;11655:4;11638:104;;;;;;;;;;-1:-1:-1;;;;;11638:104:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11638:104:48;;;;;;;;11628:115;;11638:104;;;;;11628:115;;;;11638:104;11628:115;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11628:115:48;;;;;;;;;;;;;;;;11613:130;;11753:26;11762:4;11768:2;11772;11776;11753:8;:26::i;:::-;11922:64;;;;;;;;;11938:9;11922:64;;;;11949:7;11922:64;;;;11958:11;11922:64;;;;11971:14;11922:64;;;;;11899:9;:20;11909:9;-1:-1:-1;;;;;11899:20:48;-1:-1:-1;;;;;11899:20:48;;;;;;;;;;;;:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12001:95;12020:9;12031:3;12036:10;12048:9;12059:7;12068:11;12081:14;12001:95;;;;-1:-1:-1;;;;;12001:95:48;-1:-1:-1;;;;;12001:95:48;;;;;;;;;;;-1:-1:-1;;;;;12001:95:48;-1:-1:-1;;;;;12001:95:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11191:912;;;;;;;;;;;:::o;9584:736::-;10152:9;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;9837:17:48;;9816;;:38;9808:75;;;;;-1:-1:-1;;;;;9808:75:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:15;;9901:17;;:36;9893:73;;;;;-1:-1:-1;;;;;9893:73:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;10003:19;;9984:15;;:38;9976:75;;;;;-1:-1:-1;;;;;9976:75:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;10094:15;;10069:21;;:40;10061:76;;;;;-1:-1:-1;;;;;10061:76:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;10164:1;10152:13;;10147:167;10171:10;:17;10167:1;:21;10147:167;;;10209:94;10225:10;10236:1;10225:13;;;;;;;;;;;;;;;;;;10240:10;10251:1;10240:13;;;;;;;;;;;;;;;;;;10255:8;10264:1;10255:11;;;;;;;;;;;;;;;;;;10268:12;10281:1;10268:15;;;;;;;;;;;;;;;;;;10285:14;10300:1;10285:17;;;;;;;;;;;;;;;;;;10209:15;:94::i;:::-;10190:3;;;;;10147:167;;;9584:736;;;;;;;;;:::o;2047:41::-;;;;;;;;;:::o;3626:89::-;3674:6;3626:89;:::o;1037:47::-;-1:-1:-1;;;;;;;;;;;1037:47:48;:::o;1799:46::-;;;;;;;;;:::o;4611:191::-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;4702:17:48;:38;;-1:-1:-1;;4702:38:48;;;;;;;;;;4755:40;;;;;;;;;;;;;;;;;4611:191;;;;:::o;711:69:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:16:50;:14;:16::i;:::-;711:69::o;4167:182:48:-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;4255:14:48;:32;;-1:-1:-1;;4255:32:48;-1:-1:-1;;;;;4255:32:48;;;;;;;;4302:40;;;;;;;;;;;;;;;;;4167:182;;;;:::o;216:26:2:-;;;-1:-1:-1;216:26:2;;;;;:::o;1890:223:13:-;1029:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;1959:4;;1940:9;;1959:4;;;;-1:-1:-1;;;;;1029:13:13;;1014:35;;:37;;;;;;;;;;;;;;1959:4;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;1983:9;;;2036:7;;2021:31;;;-1:-1:-1;;;;;2021:31:13;;;;-1:-1:-1;;;;;1983:9:13;;;;:22;;2014:4;;2036:7;;;;;2021:29;;:31;;;;;;;;;;;;;;;;2036:7;2021:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2021:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:31:13;1983:79;;;;;;-1:-1:-1;1983:79:13;;;-1:-1:-1;;;;;1983:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:31;;1983:79;;;;;;;-1:-1:-1;1983:79:13;;;;5:2:-1;;;;30:1;27;20:12;5:2;1983:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1983:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1983:79:13;1975:110;;;;;;;-1:-1:-1;;;;;1975:110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:4:13;;1890:223;-1:-1:-1;;;;1890:223:13:o;365:22::-;;;-1:-1:-1;;;;;365:22:13;;:::o;6703:1241:48:-;6838:6;;6815;;-1:-1:-1;6838:6:48;;;;6837:7;6833:1079;;;6864:17;;;;6860:140;;;-1:-1:-1;6973:12:48;6966:19;;6860:140;7017:21;;;;;;;:44;;;;-1:-1:-1;;;;;;7043:17:48;;;7017:44;7013:102;;;-1:-1:-1;7088:12:48;7081:19;;7013:102;7132:26;;;;;;;7128:222;;;7269:16;7281:3;7269:11;:16::i;:::-;:38;;;;;7289:18;7301:5;7289:11;:18::i;:::-;7268:67;;7326:9;7268:67;;;7311:12;7268:67;7261:74;;;;7128:222;7367:26;;;;;;;:54;;;;-1:-1:-1;7406:15:48;;-1:-1:-1;;;;;7397:24:48;;;7406:15;;7397:24;7367:54;7363:271;;;-1:-1:-1;;;;;7446:14:48;;;;;;:9;:14;;;;;:28;;;;;7445:29;:48;;;;;7478:15;:13;:15::i;:::-;7441:111;;;-1:-1:-1;7524:9:48;7517:16;;7441:111;7576:16;7588:3;7576:11;:16::i;7363:271::-;7748:18;7760:5;7748:11;:18::i;:::-;:54;;;;-1:-1:-1;;;;;;7770:16:48;;;;;;:9;:16;;;;;:25;7799:3;-1:-1:-1;7770:32:48;7748:54;7747:126;;;;;7824:16;7836:3;7824:11;:16::i;:::-;:48;;;;-1:-1:-1;;;;;;7844:14:48;;;;;;:9;:14;;;;;-1:-1:-1;7844:21:48;;7869:3;-1:-1:-1;7844:28:48;7746:155;;7892:9;7746:155;;6703:1241;;;;;;;:::o;5635:245::-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;5744:26:48;:56;;-1:-1:-1;;5744:56:48;;;;;;;;;;;;;;;5815:58;;;;;;;;;;;;;;;;;5635:245;;;;:::o;786:65:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;830:14:50;:12;:14::i;5096:245:48:-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;5205:26:48;:56;;-1:-1:-1;;5205:56:48;;;;;;;;;;;;;;;5276:58;;;;;;;;;;;;;;;;;5096:245;;;;:::o;1090:39::-;-1:-1:-1;;;;;1090:39:48;:::o;1540:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1669:37::-;;;;;;:::o;988:42::-;;;-1:-1:-1;;;;;988:42:48;;:::o;891:43::-;;;-1:-1:-1;;;;;891:43:48;;:::o;276:28:13:-;;;-1:-1:-1;;;;;276:28:13;;:::o;12764:229:48:-;12865:16;;;12879:1;12865:16;;;12810:9;12865:16;;;;;12810:9;;;12865:16;12879:1;12865:16;;;;;105:10:-1;12865:16:48;88:34:-1;136:17;;-1:-1;12865:16:48;12831:50;;-1:-1:-1;;;;;;;;;;;12891:14:48;12906:1;12891:17;;;;;;;;;;;;;;;;;;;:29;12930:17;;-1:-1:-1;;;;;;12930:17:48;;12945:1;;12930:17;;;;;;;;;;;;;;:25;12972:14;-1:-1:-1;12972:14:48;12764:229;;;:::o;247:22:13:-;;;-1:-1:-1;;;;;247:22:13;;:::o;311:47::-;;;:::o;8529:473:48:-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;8821:64:48;;;;;;;;;8837:9;8821:64;;;;8848:7;8821:64;;;;8857:11;8821:64;;;;8870:14;8821:64;;;;;8798:9;:20;8808:9;-1:-1:-1;;;;;8798:20:48;-1:-1:-1;;;;;8798:20:48;;;;;;;;;;;;:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8900:95;8919:9;8930:3;8935:10;8947:9;8958:7;8967:11;8980:14;8900:95;;;;-1:-1:-1;;;;;8900:95:48;-1:-1:-1;;;;;8900:95:48;;;;;;;;;;;-1:-1:-1;;;;;8900:95:48;-1:-1:-1;;;;;8900:95:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8529:473;;;;;;;;:::o;3848:188::-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;3938:15:48;:34;;-1:-1:-1;;3938:34:48;-1:-1:-1;;;;;3938:34:48;;;;;;;;3987:42;;;;;;;;;;;;;;;;;3848:188;;;;:::o;1938:45::-;;;;;;;;;:::o;6093:215::-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;-1:-1:-1;;;;;1137:79:13;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;-1:-1:-1;;1137:79:13;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;1109:135:13;;;;;;;;;;;;;;;6192:21:48;:46;;-1:-1:-1;;6192:46:48;;;;;;;;;;;;;;;6253:48;;;;;;;;;;;;;;;;;6093:215;;;;:::o;12169:480::-;12418:14;12435:93;12508:5;12455:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12455:59:48;;;12445:70;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;377:20;365:33;;12445:70:48;;;;;;;;;;;;-1:-1:-1;12435:93:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;263:2;;-1:-1;;;12435:93:48;;;;;;;;;;-1:-1:-1;12435:93:48;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12435:93:48;;;-1:-1:-1;;12435:93:48;;;12571:13;;-1:-1:-1;;;;;12556:37:48;;;;12435:93;;-1:-1:-1;;;;;;12571:13:48;;;;-1:-1:-1;12556:35:48;;:37;;;;;12435:93;;12556:37;;;;;;;-1:-1:-1;12571:13:48;12556:37;;;5:2:-1;;;;30:1;27;20:12;5:2;12556:37:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12556:37:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12556:37:48;-1:-1:-1;;;;;12546:47:48;;;;;;;:75;;-1:-1:-1;12607:14:48;;-1:-1:-1;;;;;12597:24:48;;;12607:14;;12597:24;12546:75;12538:104;;;;;;;-1:-1:-1;;;;;12538:104:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;12169:480;;;;;:::o;915:98:2:-;590:6;;-1:-1:-1;590:6:2;;;;582:41;;;;;;;-1:-1:-1;;;;;582:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:6;:14;;-1:-1:-1;;965:14:2;;;994:12;;;1002:3;994:12;;;;;;;;;;;;;915:98::o;13231:226:48:-;-1:-1:-1;;;;;13319:20:48;;13293:4;13319:20;;;:9;:20;;;;;:29;:34;;;13318:74;;-1:-1:-1;;;;;;13359:20:48;;;;;;:9;:20;;;;;-1:-1:-1;13359:27:48;;:32;;13318:74;13317:132;;;;-1:-1:-1;;;;;;13410:20:48;;;;;;:9;:20;;;;;-1:-1:-1;13410:31:48;;13445:3;-1:-1:-1;13410:38:48;13317:132;13309:141;13231:226;-1:-1:-1;;13231:226:48:o;13559:227::-;13670:13;;13655:45;;;;;;13695:1;13655:45;;;;-1:-1:-1;13655:45:48;;;;;;;;-1:-1:-1;;;;;;;;;13670:13:48;;;;13655:39;;:45;;;;;;;;;;;-1:-1:-1;13670:13:48;13655:45;;;5:2:-1;;;;30:1;27;20:12;5:2;13655:45:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13655:45:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13655:45:48;;;;-1:-1:-1;;;;;;13714:18:48;;;13710:48;;;13753:5;13746:12;;;;13710:48;13775:4;13768:11;;13559:227;;:::o;728:96:2:-;397:6;;-1:-1:-1;397:6:2;;;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:6;:13;;-1:-1:-1;;779:13:2;-1:-1:-1;;;779:13:2;;;807:10;;;813:3;807:10;;;;;;;;;;;;;728:96::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ITransferManager.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n/////////////////////\n// Module permissions\n/////////////////////\n//                                        Owner       WHITELIST      FLAGS\n// changeIssuanceAddress                    X                          X\n// changeAllowAllTransfers                  X                          X\n// changeAllowAllWhitelistTransfers         X                          X\n// changeAllowAllWhitelistIssuances         X                          X\n// modifyWhitelist                          X             X\n// modifyWhitelistMulti                     X             X\n\n/**\n * @title Transfer Manager module for core transfer validation functionality\n */\ncontract GeneralTransferManager is ITransferManager {\n\n    using SafeMath for uint256;\n\n    //Address from which issuances come\n    address public issuanceAddress = address(0);\n\n    //Address which can sign whitelist changes\n    address public signingAddress = address(0);\n\n    bytes32 public constant WHITELIST = \"WHITELIST\";\n    bytes32 public constant FLAGS = \"FLAGS\";\n\n    //from and to timestamps that an investor can send / receive tokens respectively\n    struct TimeRestriction {\n        uint256 fromTime;\n        uint256 toTime;\n        uint256 expiryTime;\n        bool canBuyFromSTO;\n    }\n\n    // An address can only send / receive tokens once their corresponding uint256 > block.number\n    // (unless allowAllTransfers == true or allowAllWhitelistTransfers == true)\n    mapping (address => TimeRestriction) public whitelist;\n\n    //If true, there are no transfer restrictions, for any addresses\n    bool public allowAllTransfers = false;\n    //If true, time lock is ignored for transfers (address must still be on whitelist)\n    bool public allowAllWhitelistTransfers = false;\n    //If true, time lock is ignored for issuances (address must still be on whitelist)\n    bool public allowAllWhitelistIssuances = true;\n    //If true, time lock is ignored for burn transactions\n    bool public allowAllBurnTransfers = false;\n\n    // Emit when Issuance address get changed\n    event LogChangeIssuanceAddress(address _issuanceAddress);\n    // Emit when there is change in the flag variable called allowAllTransfers\n    event LogAllowAllTransfers(bool _allowAllTransfers);\n    // Emit when there is change in the flag variable called allowAllWhitelistTransfers\n    event LogAllowAllWhitelistTransfers(bool _allowAllWhitelistTransfers);\n    // Emit when there is change in the flag variable called allowAllWhitelistIssuances\n    event LogAllowAllWhitelistIssuances(bool _allowAllWhitelistIssuances);\n    // Emit when there is change in the flag variable called allowAllBurnTransfers\n    event LogAllowAllBurnTransfers(bool _allowAllBurnTransfers);\n    // Emit when there is change in the flag variable called signingAddress\n    event LogChangeSigningAddress(address _signingAddress);\n    // Emit when investor details get modified related to their whitelisting\n    event LogModifyWhitelist(\n        address _investor,\n        uint256 _dateAdded,\n        address _addedBy,\n        uint256 _fromTime,\n        uint256 _toTime,\n        uint256 _expiryTime,\n        bool _canBuyFromSTO\n    );\n\n    /**\n     * @notice Constructor\n     * @param _securityToken Address of the security token\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _securityToken, address _polyAddress)\n    public\n    IModule(_securityToken, _polyAddress)\n    {\n    }\n\n    /**\n     * @notice This function returns the signature of configure function\n     */\n    function getInitFunction() public pure returns (bytes4) {\n        return bytes4(0);\n    }\n\n    /**\n     * @notice Used to change the Issuance Address\n     * @param _issuanceAddress new address for the issuance\n     */\n    function changeIssuanceAddress(address _issuanceAddress) public withPerm(FLAGS) {\n        issuanceAddress = _issuanceAddress;\n        emit LogChangeIssuanceAddress(_issuanceAddress);\n    }\n\n    /**\n     * @notice Used to change the Sigining Address\n     * @param _signingAddress new address for the signing\n     */\n    function changeSigningAddress(address _signingAddress) public withPerm(FLAGS) {\n        signingAddress = _signingAddress;\n        emit LogChangeSigningAddress(_signingAddress);\n    }\n\n    /**\n     * @notice Used to change the flag\n            true - It refers there are no transfer restrictions, for any addresses\n            false - It refers transfers are restricted for all addresses.\n     * @param _allowAllTransfers flag value\n     */\n    function changeAllowAllTransfers(bool _allowAllTransfers) public withPerm(FLAGS) {\n        allowAllTransfers = _allowAllTransfers;\n        emit LogAllowAllTransfers(_allowAllTransfers);\n    }\n\n    /**\n     * @notice Used to change the flag\n            true - It refers that time lock is ignored for transfers (address must still be on whitelist)\n            false - It refers transfers are restricted for all addresses.\n     * @param _allowAllWhitelistTransfers flag value\n     */\n    function changeAllowAllWhitelistTransfers(bool _allowAllWhitelistTransfers) public withPerm(FLAGS) {\n        allowAllWhitelistTransfers = _allowAllWhitelistTransfers;\n        emit LogAllowAllWhitelistTransfers(_allowAllWhitelistTransfers);\n    }\n\n    /**\n     * @notice Used to change the flag\n            true - It refers that time lock is ignored for issuances (address must still be on whitelist)\n            false - It refers transfers are restricted for all addresses.\n     * @param _allowAllWhitelistIssuances flag value\n     */\n    function changeAllowAllWhitelistIssuances(bool _allowAllWhitelistIssuances) public withPerm(FLAGS) {\n        allowAllWhitelistIssuances = _allowAllWhitelistIssuances;\n        emit LogAllowAllWhitelistIssuances(_allowAllWhitelistIssuances);\n    }\n\n    /**\n     * @notice Used to change the flag\n            true - It allow to burn the tokens\n            false - It deactivate the burning mechanism.\n     * @param _allowAllBurnTransfers flag value\n     */\n    function changeAllowAllBurnTransfers(bool _allowAllBurnTransfers) public withPerm(FLAGS) {\n        allowAllBurnTransfers = _allowAllBurnTransfers;\n        emit LogAllowAllBurnTransfers(_allowAllBurnTransfers);\n    }\n\n    /**\n    * @notice default implementation of verifyTransfer used by SecurityToken\n    * If the transfer request comes from the STO, it only checks that the investor is in the whitelist\n    * If the transfer request comes from a token holder, it checks that:\n    * a) Both are on the whitelist\n    * b) Seller's sale lockup period is over\n    * c) Buyer's purchase lockup is over\n    */\n    function verifyTransfer(address _from, address _to, uint256 /*_amount*/, bool /* _isTransfer */) public returns(Result) {\n        if (!paused) {\n            if (allowAllTransfers) {\n                //All transfers allowed, regardless of whitelist\n                return Result.VALID;\n            }\n            if (allowAllBurnTransfers && (_to == address(0))) {\n                return Result.VALID;\n            }\n            if (allowAllWhitelistTransfers) {\n                //Anyone on the whitelist can transfer, regardless of block number\n                return (onWhitelist(_to) && onWhitelist(_from)) ? Result.VALID : Result.NA;\n            }\n            if (allowAllWhitelistIssuances && _from == issuanceAddress) {\n                if (!whitelist[_to].canBuyFromSTO && isSTOAttached()) {\n                    return Result.NA;\n                }\n                return onWhitelist(_to) ? Result.VALID : Result.NA;\n            }\n            //Anyone on the whitelist can transfer provided the blocknumber is large enough\n            return ((onWhitelist(_from) && whitelist[_from].fromTime <= now) &&\n                (onWhitelist(_to) && whitelist[_to].toTime <= now)) ? Result.VALID : Result.NA;\n        }\n        return Result.NA;\n    }\n\n    /**\n    * @notice adds or removes addresses from the whitelist.\n    * @param _investor is the address to whitelist\n    * @param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n    * @param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n    * @param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n    * @param _canBuyFromSTO is used to know whether the investor is restricted investor or not.\n    */\n    function modifyWhitelist(address _investor, uint256 _fromTime, uint256 _toTime, uint256 _expiryTime, bool _canBuyFromSTO) public withPerm(WHITELIST) {\n        //Passing a _time == 0 into this function, is equivalent to removing the _investor from the whitelist\n        whitelist[_investor] = TimeRestriction(_fromTime, _toTime, _expiryTime, _canBuyFromSTO);\n        emit LogModifyWhitelist(_investor, now, msg.sender, _fromTime, _toTime, _expiryTime, _canBuyFromSTO);\n    }\n\n    /**\n    * @notice adds or removes addresses from the whitelist.\n    * @param _investors List of the addresses to whitelist\n    * @param _fromTimes An array of the moment when the sale lockup period ends and the investor can freely sell his tokens\n    * @param _toTimes An array of the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n    * @param _expiryTimes An array of the moment till investors KYC will be validated. After that investor need to do re-KYC\n    * @param _canBuyFromSTO An array of boolean values\n    */\n    function modifyWhitelistMulti(\n        address[] _investors,\n        uint256[] _fromTimes,\n        uint256[] _toTimes,\n        uint256[] _expiryTimes,\n        bool[] _canBuyFromSTO\n    ) public withPerm(WHITELIST) {\n        require(_investors.length == _fromTimes.length, \"Mismatched input lengths\");\n        require(_fromTimes.length == _toTimes.length, \"Mismatched input lengths\");\n        require(_toTimes.length == _expiryTimes.length, \"Mismatched input lengths\");\n        require(_canBuyFromSTO.length == _toTimes.length, \"Mismatched input length\");\n        for (uint256 i = 0; i < _investors.length; i++) {\n            modifyWhitelist(_investors[i], _fromTimes[i], _toTimes[i], _expiryTimes[i], _canBuyFromSTO[i]);\n        }\n    }\n\n    /**\n    * @notice adds or removes addresses from the whitelist - can be called by anyone with a valid signature\n    * @param _investor is the address to whitelist\n    * @param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n    * @param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n    * @param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n    * @param _canBuyFromSTO is used to know whether the investor is restricted investor or not.\n    * @param _validFrom is the time that this signature is valid from\n    * @param _validTo is the time that this signature is valid until\n    * @param _v issuer signature\n    * @param _r issuer signature\n    * @param _s issuer signature\n    */\n    function modifyWhitelistSigned(\n        address _investor,\n        uint256 _fromTime,\n        uint256 _toTime,\n        uint256 _expiryTime,\n        bool _canBuyFromSTO,\n        uint256 _validFrom,\n        uint256 _validTo,\n        uint8 _v,\n        bytes32 _r,\n        bytes32 _s\n    ) public {\n        require(_validFrom <= now, \"ValidFrom is too early\");\n        require(_validTo >= now, \"ValidTo is too late\");\n        bytes32 hash = keccak256(abi.encodePacked(this, _investor, _fromTime, _toTime, _expiryTime, _canBuyFromSTO, _validFrom, _validTo));\n        checkSig(hash, _v, _r, _s);\n        //Passing a _time == 0 into this function, is equivalent to removing the _investor from the whitelist\n        whitelist[_investor] = TimeRestriction(_fromTime, _toTime, _expiryTime, _canBuyFromSTO);\n        emit LogModifyWhitelist(_investor, now, msg.sender, _fromTime, _toTime, _expiryTime, _canBuyFromSTO);\n    }\n\n    /**\n     * @notice used to verify the signature\n     */\n    function checkSig(bytes32 _hash, uint8 _v, bytes32 _r, bytes32 _s) internal view {\n        //Check that the signature is valid\n        //sig should be signing - _investor, _fromTime, _toTime & _expiryTime and be signed by the issuer address\n        address signer = ecrecover(keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)), _v, _r, _s);\n        require(signer == ISecurityToken(securityToken).owner() || signer == signingAddress, \"Incorrect signer\");\n    }\n\n    /**\n     * @notice Return the permissions flag that are associated with general trnasfer manager\n     */\n    function getPermissions() public view returns(bytes32[]) {\n        bytes32[] memory allPermissions = new bytes32[](2);\n        allPermissions[0] = WHITELIST;\n        allPermissions[1] = FLAGS;\n        return allPermissions;\n    }\n\n    /**\n     * @notice Internal function used to check whether the investor is in the whitelist or not\n            & also checks whether the KYC of investor get expired or not\n     * @param _investor Address of the investor\n     */\n    function onWhitelist(address _investor) internal view returns(bool) {\n        return (((whitelist[_investor].fromTime != 0) || (whitelist[_investor].toTime != 0)) &&\n            (whitelist[_investor].expiryTime >= now));\n    }\n\n    /**\n     * @notice Internal function use to know whether the STO is attached or not\n     */\n    function isSTOAttached() internal view returns(bool) {\n        address _sto;\n        (, _sto) = ISecurityToken(securityToken).getModule(3, 0);\n        if (_sto == address(0))\n            return false;\n        return true;\n    }\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/GeneralTransferManager.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/GeneralTransferManager.sol",
    "exportedSymbols": {
      "GeneralTransferManager": [
        18197
      ]
    },
    "id": 18198,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17520,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:48"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 17521,
        "nodeType": "ImportDirective",
        "scope": 18198,
        "sourceUnit": 18395,
        "src": "26:32:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 17522,
        "nodeType": "ImportDirective",
        "scope": 18198,
        "sourceUnit": 22579,
        "src": "59:59:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17523,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "794:16:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 17524,
            "nodeType": "InheritanceSpecifier",
            "src": "794:16:48"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager module for core transfer validation functionality",
        "fullyImplemented": true,
        "id": 18197,
        "linearizedBaseContracts": [
          18197,
          18394,
          471,
          9717
        ],
        "name": "GeneralTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17527,
            "libraryName": {
              "contractScope": null,
              "id": 17525,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "824:8:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "818:27:48",
            "typeName": {
              "id": 17526,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "837:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 17532,
            "name": "issuanceAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "891:43:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17528,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "891:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 17530,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "932:1:48",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 17529,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "924:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 17531,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "924:10:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17537,
            "name": "signingAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "988:42:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17533,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "988:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 17535,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1028:1:48",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 17534,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "1020:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 17536,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1020:10:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17540,
            "name": "WHITELIST",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1037:47:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17538,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1037:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "57484954454c495354",
              "id": 17539,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1073:11:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0af0c3ebe77999ca20698e1ff25f812bf82409a59d21ca15a41f39e0ce9f2500",
                "typeString": "literal_string \"WHITELIST\""
              },
              "value": "WHITELIST"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17543,
            "name": "FLAGS",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1090:39:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17541,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1090:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "464c414753",
              "id": 17542,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1122:7:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_343c07b3fb8ec1ffc9ce674026a727b988856209732b2202571e75a0996b3a37",
                "typeString": "literal_string \"FLAGS\""
              },
              "value": "FLAGS"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "GeneralTransferManager.TimeRestriction",
            "id": 17552,
            "members": [
              {
                "constant": false,
                "id": 17545,
                "name": "fromTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1254:16:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17544,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1254:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17547,
                "name": "toTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1280:14:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17546,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1280:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17549,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1304:18:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17548,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1304:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17551,
                "name": "canBuyFromSTO",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1332:18:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17550,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1332:4:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "TimeRestriction",
            "nodeType": "StructDefinition",
            "scope": 18197,
            "src": "1221:136:48",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17556,
            "name": "whitelist",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1540:53:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
              "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction)"
            },
            "typeName": {
              "id": 17555,
              "keyType": {
                "id": 17553,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1549:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1540:36:48",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction)"
              },
              "valueType": {
                "contractScope": null,
                "id": 17554,
                "name": "TimeRestriction",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17552,
                "src": "1560:15:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage_ptr",
                  "typeString": "struct GeneralTransferManager.TimeRestriction"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17559,
            "name": "allowAllTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1669:37:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17557,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1669:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17558,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1701:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17562,
            "name": "allowAllWhitelistTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1799:46:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17560,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1799:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17561,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1840:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17565,
            "name": "allowAllWhitelistIssuances",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1938:45:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17563,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1938:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 17564,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1979:4:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17568,
            "name": "allowAllBurnTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "2047:41:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17566,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2047:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17567,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2083:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17572,
            "name": "LogChangeIssuanceAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17570,
                  "indexed": false,
                  "name": "_issuanceAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17572,
                  "src": "2172:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17569,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2172:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2171:26:48"
            },
            "src": "2141:57:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17576,
            "name": "LogAllowAllTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17574,
                  "indexed": false,
                  "name": "_allowAllTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17576,
                  "src": "2309:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17573,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2309:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2308:25:48"
            },
            "src": "2282:52:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17580,
            "name": "LogAllowAllWhitelistTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17578,
                  "indexed": false,
                  "name": "_allowAllWhitelistTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17580,
                  "src": "2463:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17577,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2463:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2462:34:48"
            },
            "src": "2427:70:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17584,
            "name": "LogAllowAllWhitelistIssuances",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17582,
                  "indexed": false,
                  "name": "_allowAllWhitelistIssuances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17584,
                  "src": "2626:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17581,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2626:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2625:34:48"
            },
            "src": "2590:70:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17588,
            "name": "LogAllowAllBurnTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17586,
                  "indexed": false,
                  "name": "_allowAllBurnTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17588,
                  "src": "2779:27:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17585,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2779:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:29:48"
            },
            "src": "2748:60:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17592,
            "name": "LogChangeSigningAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17590,
                  "indexed": false,
                  "name": "_signingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17592,
                  "src": "2919:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17589,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2919:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2918:25:48"
            },
            "src": "2889:55:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17608,
            "name": "LogModifyWhitelist",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17594,
                  "indexed": false,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3060:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3060:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17596,
                  "indexed": false,
                  "name": "_dateAdded",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3087:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17595,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17598,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3115:16:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3115:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17600,
                  "indexed": false,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3141:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17599,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3141:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17602,
                  "indexed": false,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3168:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17604,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3193:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3193:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17606,
                  "indexed": false,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3222:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17605,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3050:197:48"
            },
            "src": "3026:222:48"
          },
          {
            "body": {
              "id": 17619,
              "nodeType": "Block",
              "src": "3524:7:48",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 17620,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17615,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17610,
                    "src": "3490:14:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 17616,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17612,
                    "src": "3506:12:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17617,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17614,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "3482:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3482:37:48"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17610,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 17620,
                  "src": "3421:22:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3421:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17612,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17620,
                  "src": "3445:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3445:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3420:46:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3524:0:48"
            },
            "scope": 18197,
            "src": "3408:123:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17629,
              "nodeType": "Block",
              "src": "3682:33:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 17626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3706:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 17625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3699:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 17627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3699:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 17624,
                  "id": 17628,
                  "nodeType": "Return",
                  "src": "3692:16:48"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 17630,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3650:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17623,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17630,
                  "src": "3674:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17622,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3674:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3673:8:48"
            },
            "scope": 18197,
            "src": "3626:89:48",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17646,
              "nodeType": "Block",
              "src": "3928:108:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17638,
                      "name": "issuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17532,
                      "src": "3938:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17639,
                      "name": "_issuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17632,
                      "src": "3956:16:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3938:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17641,
                  "nodeType": "ExpressionStatement",
                  "src": "3938:34:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17643,
                        "name": "_issuanceAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17632,
                        "src": "4012:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17642,
                      "name": "LogChangeIssuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17572,
                      "src": "3987:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3987:42:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17645,
                  "nodeType": "EmitStatement",
                  "src": "3982:47:48"
                }
              ]
            },
            "documentation": "@notice Used to change the Issuance Address\n@param _issuanceAddress new address for the issuance",
            "id": 17647,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17635,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "3921:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17636,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17634,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "3912:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3912:15:48"
              }
            ],
            "name": "changeIssuanceAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17632,
                  "name": "_issuanceAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17647,
                  "src": "3879:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3879:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3878:26:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17637,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3928:0:48"
            },
            "scope": 18197,
            "src": "3848:188:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17663,
              "nodeType": "Block",
              "src": "4245:104:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17655,
                      "name": "signingAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17537,
                      "src": "4255:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17656,
                      "name": "_signingAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17649,
                      "src": "4272:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4255:32:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17658,
                  "nodeType": "ExpressionStatement",
                  "src": "4255:32:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17660,
                        "name": "_signingAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17649,
                        "src": "4326:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17659,
                      "name": "LogChangeSigningAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17592,
                      "src": "4302:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4302:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17662,
                  "nodeType": "EmitStatement",
                  "src": "4297:45:48"
                }
              ]
            },
            "documentation": "@notice Used to change the Sigining Address\n@param _signingAddress new address for the signing",
            "id": 17664,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17652,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "4238:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17653,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17651,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4229:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4229:15:48"
              }
            ],
            "name": "changeSigningAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17649,
                  "name": "_signingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17664,
                  "src": "4197:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4197:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4196:25:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4245:0:48"
            },
            "scope": 18197,
            "src": "4167:182:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17680,
              "nodeType": "Block",
              "src": "4692:110:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17672,
                      "name": "allowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17559,
                      "src": "4702:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17673,
                      "name": "_allowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17666,
                      "src": "4722:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4702:38:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17675,
                  "nodeType": "ExpressionStatement",
                  "src": "4702:38:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17677,
                        "name": "_allowAllTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17666,
                        "src": "4776:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17676,
                      "name": "LogAllowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17576,
                      "src": "4755:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4755:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17679,
                  "nodeType": "EmitStatement",
                  "src": "4750:45:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers there are no transfer restrictions, for any addresses\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllTransfers flag value",
            "id": 17681,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17669,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "4685:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17668,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4676:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4676:15:48"
              }
            ],
            "name": "changeAllowAllTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17666,
                  "name": "_allowAllTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17681,
                  "src": "4644:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:25:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4692:0:48"
            },
            "scope": 18197,
            "src": "4611:191:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17697,
              "nodeType": "Block",
              "src": "5195:146:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17689,
                      "name": "allowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17562,
                      "src": "5205:26:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17690,
                      "name": "_allowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17683,
                      "src": "5234:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5205:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17692,
                  "nodeType": "ExpressionStatement",
                  "src": "5205:56:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17694,
                        "name": "_allowAllWhitelistTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17683,
                        "src": "5306:27:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17693,
                      "name": "LogAllowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17580,
                      "src": "5276:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17695,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5276:58:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17696,
                  "nodeType": "EmitStatement",
                  "src": "5271:63:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers that time lock is ignored for transfers (address must still be on whitelist)\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllWhitelistTransfers flag value",
            "id": 17698,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17686,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "5188:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17687,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17685,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5179:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5179:15:48"
              }
            ],
            "name": "changeAllowAllWhitelistTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17683,
                  "name": "_allowAllWhitelistTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17698,
                  "src": "5138:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17682,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5138:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5137:34:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17688,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5195:0:48"
            },
            "scope": 18197,
            "src": "5096:245:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17714,
              "nodeType": "Block",
              "src": "5734:146:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17706,
                      "name": "allowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17565,
                      "src": "5744:26:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17707,
                      "name": "_allowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17700,
                      "src": "5773:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5744:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17709,
                  "nodeType": "ExpressionStatement",
                  "src": "5744:56:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17711,
                        "name": "_allowAllWhitelistIssuances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17700,
                        "src": "5845:27:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17710,
                      "name": "LogAllowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17584,
                      "src": "5815:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5815:58:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17713,
                  "nodeType": "EmitStatement",
                  "src": "5810:63:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers that time lock is ignored for issuances (address must still be on whitelist)\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllWhitelistIssuances flag value",
            "id": 17715,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17703,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "5727:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17704,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17702,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5718:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5718:15:48"
              }
            ],
            "name": "changeAllowAllWhitelistIssuances",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17700,
                  "name": "_allowAllWhitelistIssuances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17715,
                  "src": "5677:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17699,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5677:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5676:34:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5734:0:48"
            },
            "scope": 18197,
            "src": "5635:245:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17731,
              "nodeType": "Block",
              "src": "6182:126:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17723,
                      "name": "allowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17568,
                      "src": "6192:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17724,
                      "name": "_allowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17717,
                      "src": "6216:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6192:46:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17726,
                  "nodeType": "ExpressionStatement",
                  "src": "6192:46:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17728,
                        "name": "_allowAllBurnTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17717,
                        "src": "6278:22:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17727,
                      "name": "LogAllowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17588,
                      "src": "6253:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6253:48:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17730,
                  "nodeType": "EmitStatement",
                  "src": "6248:53:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It allow to burn the tokens\nfalse - It deactivate the burning mechanism.\n@param _allowAllBurnTransfers flag value",
            "id": 17732,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17720,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "6175:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17721,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17719,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6166:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6166:15:48"
              }
            ],
            "name": "changeAllowAllBurnTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17717,
                  "name": "_allowAllBurnTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "6130:27:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17716,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6130:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6129:29:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6182:0:48"
            },
            "scope": 18197,
            "src": "6093:215:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17847,
              "nodeType": "Block",
              "src": "6823:1121:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 17746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6837:7:48",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 17745,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "6838:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17843,
                  "nodeType": "IfStatement",
                  "src": "6833:1079:48",
                  "trueBody": {
                    "id": 17842,
                    "nodeType": "Block",
                    "src": "6846:1066:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17747,
                          "name": "allowAllTransfers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17559,
                          "src": "6864:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17752,
                        "nodeType": "IfStatement",
                        "src": "6860:140:48",
                        "trueBody": {
                          "id": 17751,
                          "nodeType": "Block",
                          "src": "6883:117:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17748,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "6973:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6973:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17750,
                              "nodeType": "Return",
                              "src": "6966:19:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17753,
                            "name": "allowAllBurnTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17568,
                            "src": "7017:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 17758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17754,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17736,
                                  "src": "7043:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 17756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7058:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 17755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7050:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 17757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7050:10:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7043:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17759,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7042:19:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7017:44:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17765,
                        "nodeType": "IfStatement",
                        "src": "7013:102:48",
                        "trueBody": {
                          "id": 17764,
                          "nodeType": "Block",
                          "src": "7063:52:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17761,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "7088:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7088:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17763,
                              "nodeType": "Return",
                              "src": "7081:19:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17766,
                          "name": "allowAllWhitelistTransfers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17562,
                          "src": "7132:26:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17782,
                        "nodeType": "IfStatement",
                        "src": "7128:222:48",
                        "trueBody": {
                          "id": 17781,
                          "nodeType": "Block",
                          "src": "7160:190:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17773,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17768,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17736,
                                            "src": "7281:3:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17767,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7269:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17769,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7269:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17771,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17734,
                                            "src": "7301:5:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17770,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7289:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17772,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7289:18:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7269:38:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17774,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7268:40:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17777,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7326:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7326:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "id": 17779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7268:67:48",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17775,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7311:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "VALID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7311:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17780,
                              "nodeType": "Return",
                              "src": "7261:74:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17783,
                            "name": "allowAllWhitelistIssuances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17565,
                            "src": "7367:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 17786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 17784,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17734,
                              "src": "7397:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 17785,
                              "name": "issuanceAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17532,
                              "src": "7406:15:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7397:24:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7367:54:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17811,
                        "nodeType": "IfStatement",
                        "src": "7363:271:48",
                        "trueBody": {
                          "id": 17810,
                          "nodeType": "Block",
                          "src": "7423:211:48",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "7445:29:48",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17788,
                                        "name": "whitelist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17556,
                                        "src": "7446:9:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                        }
                                      },
                                      "id": 17790,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17789,
                                        "name": "_to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17736,
                                        "src": "7456:3:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7446:14:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                      }
                                    },
                                    "id": 17791,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "canBuyFromSTO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17551,
                                    "src": "7446:28:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 17793,
                                    "name": "isSTOAttached",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18196,
                                    "src": "7478:13:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                      "typeString": "function () view returns (bool)"
                                    }
                                  },
                                  "id": 17794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7478:15:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7445:48:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17800,
                              "nodeType": "IfStatement",
                              "src": "7441:111:48",
                              "trueBody": {
                                "id": 17799,
                                "nodeType": "Block",
                                "src": "7495:57:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17796,
                                        "name": "Result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18358,
                                        "src": "7524:6:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                          "typeString": "type(enum ITransferManager.Result)"
                                        }
                                      },
                                      "id": 17797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7524:9:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Result_$18358",
                                        "typeString": "enum ITransferManager.Result"
                                      }
                                    },
                                    "functionReturnParameters": 17744,
                                    "id": 17798,
                                    "nodeType": "Return",
                                    "src": "7517:16:48"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17802,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17736,
                                      "src": "7588:3:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17801,
                                    "name": "onWhitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18166,
                                    "src": "7576:11:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (address) view returns (bool)"
                                    }
                                  },
                                  "id": 17803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7576:16:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17806,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7610:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7610:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "id": 17808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7576:43:48",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17804,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7595:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "VALID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7595:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17809,
                              "nodeType": "Return",
                              "src": "7569:50:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17821,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17813,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17734,
                                            "src": "7760:5:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17812,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7748:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7748:18:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 17820,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 17815,
                                              "name": "whitelist",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17556,
                                              "src": "7770:9:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                              }
                                            },
                                            "id": 17817,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 17816,
                                              "name": "_from",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17734,
                                              "src": "7780:5:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7770:16:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                              "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                            }
                                          },
                                          "id": 17818,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fromTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17545,
                                          "src": "7770:25:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 17819,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23133,
                                          "src": "7799:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7770:32:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7748:54:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17822,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7747:56:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17824,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17736,
                                            "src": "7836:3:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17823,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7824:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7824:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 17831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 17826,
                                              "name": "whitelist",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17556,
                                              "src": "7844:9:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                              }
                                            },
                                            "id": 17828,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 17827,
                                              "name": "_to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17736,
                                              "src": "7854:3:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7844:14:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                              "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                            }
                                          },
                                          "id": 17829,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "toTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17547,
                                          "src": "7844:21:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 17830,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23133,
                                          "src": "7869:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7844:28:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7824:48:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17833,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7823:50:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7747:126:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17835,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7746:128:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17838,
                              "name": "Result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18358,
                              "src": "7892:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                "typeString": "type(enum ITransferManager.Result)"
                              }
                            },
                            "id": 17839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7892:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Result_$18358",
                              "typeString": "enum ITransferManager.Result"
                            }
                          },
                          "id": 17840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "7746:155:48",
                          "trueExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17836,
                              "name": "Result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18358,
                              "src": "7877:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                "typeString": "type(enum ITransferManager.Result)"
                              }
                            },
                            "id": 17837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "VALID",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7877:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Result_$18358",
                              "typeString": "enum ITransferManager.Result"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Result_$18358",
                            "typeString": "enum ITransferManager.Result"
                          }
                        },
                        "functionReturnParameters": 17744,
                        "id": 17841,
                        "nodeType": "Return",
                        "src": "7739:162:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 17844,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "7928:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 17845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7928:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 17744,
                  "id": 17846,
                  "nodeType": "Return",
                  "src": "7921:16:48"
                }
              ]
            },
            "documentation": "@notice default implementation of verifyTransfer used by SecurityToken\nIf the transfer request comes from the STO, it only checks that the investor is in the whitelist\nIf the transfer request comes from a token holder, it checks that:\na) Both are on the whitelist\nb) Seller's sale lockup period is over\nc) Buyer's purchase lockup is over",
            "id": 17848,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17734,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6727:13:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17733,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6727:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17736,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6742:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6742:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17738,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6755:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17737,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6755:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17740,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6776:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17739,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6776:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6726:73:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17744,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17743,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6815:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17742,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "6815:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6814:8:48"
            },
            "scope": 18197,
            "src": "6703:1241:48",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17886,
              "nodeType": "Block",
              "src": "8678:324:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17864,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17556,
                        "src": "8798:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                        }
                      },
                      "id": 17866,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17865,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17850,
                        "src": "8808:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8798:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17868,
                          "name": "_fromTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17852,
                          "src": "8837:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17869,
                          "name": "_toTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17854,
                          "src": "8848:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17870,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17856,
                          "src": "8857:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17871,
                          "name": "_canBuyFromSTO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17858,
                          "src": "8870:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 17867,
                        "name": "TimeRestriction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17552,
                        "src": "8821:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TimeRestriction_$17552_storage_ptr_$",
                          "typeString": "type(struct GeneralTransferManager.TimeRestriction storage pointer)"
                        }
                      },
                      "id": 17872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8821:64:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_memory",
                        "typeString": "struct GeneralTransferManager.TimeRestriction memory"
                      }
                    },
                    "src": "8798:87:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                      "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                    }
                  },
                  "id": 17874,
                  "nodeType": "ExpressionStatement",
                  "src": "8798:87:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17876,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17850,
                        "src": "8919:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17877,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "8930:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17878,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8935:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 17879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8935:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17880,
                        "name": "_fromTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17852,
                        "src": "8947:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17881,
                        "name": "_toTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "8958:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17882,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17856,
                        "src": "8967:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17883,
                        "name": "_canBuyFromSTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17858,
                        "src": "8980:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17875,
                      "name": "LogModifyWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17608,
                      "src": "8900:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256,uint256,uint256,bool)"
                      }
                    },
                    "id": 17884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8900:95:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17885,
                  "nodeType": "EmitStatement",
                  "src": "8895:100:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist.\n@param _investor is the address to whitelist\n@param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO is used to know whether the investor is restricted investor or not.",
            "id": 17887,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17861,
                    "name": "WHITELIST",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17540,
                    "src": "8667:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17862,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17860,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "8658:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8658:19:48"
              }
            ],
            "name": "modifyWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17850,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8554:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17849,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8554:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17852,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8573:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8573:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17854,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8592:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8592:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17856,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8609:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17858,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8630:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8630:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8553:97:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8678:0:48"
            },
            "scope": 18197,
            "src": "8529:473:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17975,
              "nodeType": "Block",
              "src": "9798:522:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17909,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17890,
                            "src": "9816:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 17910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9816:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17911,
                            "name": "_fromTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17893,
                            "src": "9837:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9837:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9816:38:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9856:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17908,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9808:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9808:75:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17916,
                  "nodeType": "ExpressionStatement",
                  "src": "9808:75:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17922,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17918,
                            "name": "_fromTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17893,
                            "src": "9901:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9901:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17920,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "9922:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9922:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9901:36:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9939:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17917,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9893:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9893:73:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17925,
                  "nodeType": "ExpressionStatement",
                  "src": "9893:73:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17927,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "9984:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9984:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17929,
                            "name": "_expiryTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17899,
                            "src": "10003:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10003:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9984:38:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10024:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17926,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9976:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9976:75:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17934,
                  "nodeType": "ExpressionStatement",
                  "src": "9976:75:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17936,
                            "name": "_canBuyFromSTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17902,
                            "src": "10069:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "id": 17937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10069:21:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17938,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "10094:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10094:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10069:40:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e677468",
                        "id": 17941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10111:25:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_105cd25b3fa111d79edd195a9110213618d4a0b70897083c4c45e06854cf081f",
                          "typeString": "literal_string \"Mismatched input length\""
                        },
                        "value": "Mismatched input length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_105cd25b3fa111d79edd195a9110213618d4a0b70897083c4c45e06854cf081f",
                          "typeString": "literal_string \"Mismatched input length\""
                        }
                      ],
                      "id": 17935,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "10061:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17942,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10061:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17943,
                  "nodeType": "ExpressionStatement",
                  "src": "10061:76:48"
                },
                {
                  "body": {
                    "id": 17973,
                    "nodeType": "Block",
                    "src": "10195:119:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17956,
                                "name": "_investors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17890,
                                "src": "10225:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 17958,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17957,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10236:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10225:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17959,
                                "name": "_fromTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17893,
                                "src": "10240:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17961,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17960,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10251:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10240:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17962,
                                "name": "_toTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17896,
                                "src": "10255:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17964,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17963,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10264:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10255:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17965,
                                "name": "_expiryTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17899,
                                "src": "10268:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17967,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17966,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10281:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10268:15:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17968,
                                "name": "_canBuyFromSTO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17902,
                                "src": "10285:14:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                  "typeString": "bool[] memory"
                                }
                              },
                              "id": 17970,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17969,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10300:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10285:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17955,
                            "name": "modifyWhitelist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17887,
                            "src": "10209:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,bool)"
                            }
                          },
                          "id": 17971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10209:94:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17972,
                        "nodeType": "ExpressionStatement",
                        "src": "10209:94:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17948,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17945,
                      "src": "10167:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17949,
                        "name": "_investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17890,
                        "src": "10171:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 17950,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10171:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10167:21:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17974,
                  "initializationExpression": {
                    "assignments": [
                      17945
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17945,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 17976,
                        "src": "10152:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17944,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10152:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17947,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10164:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10152:13:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10190:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17952,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17945,
                        "src": "10190:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17954,
                    "nodeType": "ExpressionStatement",
                    "src": "10190:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "10147:167:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist.\n@param _investors List of the addresses to whitelist\n@param _fromTimes An array of the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTimes An array of the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTimes An array of the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO An array of boolean values",
            "id": 17976,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17905,
                    "name": "WHITELIST",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17540,
                    "src": "9787:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17906,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17904,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "9778:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9778:19:48"
              }
            ],
            "name": "modifyWhitelistMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17890,
                  "name": "_investors",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9623:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17888,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "9623:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 17889,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9623:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17893,
                  "name": "_fromTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9653:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17891,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9653:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17892,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9653:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17896,
                  "name": "_toTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9683:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17894,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9683:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17895,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9683:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17899,
                  "name": "_expiryTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9711:22:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17897,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9711:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17898,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9711:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17902,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9743:21:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17900,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "9743:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 17901,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9743:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9613:157:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9798:0:48"
            },
            "scope": 18197,
            "src": "9584:736:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18058,
              "nodeType": "Block",
              "src": "11484:619:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18000,
                          "name": "_validFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17988,
                          "src": "11502:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18001,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "11516:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11502:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696446726f6d20697320746f6f206561726c79",
                        "id": 18003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11521:24:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_99e48cd3a89cd958b606f09b46fee13c6f02a8c1cabd819bdc259be60f8be245",
                          "typeString": "literal_string \"ValidFrom is too early\""
                        },
                        "value": "ValidFrom is too early"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_99e48cd3a89cd958b606f09b46fee13c6f02a8c1cabd819bdc259be60f8be245",
                          "typeString": "literal_string \"ValidFrom is too early\""
                        }
                      ],
                      "id": 17999,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "11494:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11494:52:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18005,
                  "nodeType": "ExpressionStatement",
                  "src": "11494:52:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18007,
                          "name": "_validTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17990,
                          "src": "11564:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18008,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "11576:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11564:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c6964546f20697320746f6f206c617465",
                        "id": 18010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11581:21:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_32b35358d9cb029ce5f1705ced20cd49735d5c5348949ad9326e100596c13439",
                          "typeString": "literal_string \"ValidTo is too late\""
                        },
                        "value": "ValidTo is too late"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_32b35358d9cb029ce5f1705ced20cd49735d5c5348949ad9326e100596c13439",
                          "typeString": "literal_string \"ValidTo is too late\""
                        }
                      ],
                      "id": 18006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "11556:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11556:47:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18012,
                  "nodeType": "ExpressionStatement",
                  "src": "11556:47:48"
                },
                {
                  "assignments": [
                    18014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18014,
                      "name": "hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 18059,
                      "src": "11613:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18013,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11613:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18028,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18018,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23290,
                            "src": "11655:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GeneralTransferManager_$18197",
                              "typeString": "contract GeneralTransferManager"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18019,
                            "name": "_investor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17978,
                            "src": "11661:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18020,
                            "name": "_fromTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17980,
                            "src": "11672:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18021,
                            "name": "_toTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17982,
                            "src": "11683:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18022,
                            "name": "_expiryTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17984,
                            "src": "11692:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18023,
                            "name": "_canBuyFromSTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17986,
                            "src": "11705:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18024,
                            "name": "_validFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17988,
                            "src": "11721:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18025,
                            "name": "_validTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17990,
                            "src": "11733:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GeneralTransferManager_$18197",
                              "typeString": "contract GeneralTransferManager"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18016,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23118,
                            "src": "11638:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11638:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 18026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11638:104:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18015,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "11628:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 18027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11628:115:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11613:130:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18030,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18014,
                        "src": "11762:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18031,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17992,
                        "src": "11768:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18032,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17994,
                        "src": "11772:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18033,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17996,
                        "src": "11776:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18029,
                      "name": "checkSig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18101,
                      "src": "11753:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) view"
                      }
                    },
                    "id": 18034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11753:26:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18035,
                  "nodeType": "ExpressionStatement",
                  "src": "11753:26:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18036,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17556,
                        "src": "11899:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                        }
                      },
                      "id": 18038,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18037,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17978,
                        "src": "11909:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11899:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18040,
                          "name": "_fromTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17980,
                          "src": "11938:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18041,
                          "name": "_toTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17982,
                          "src": "11949:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18042,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17984,
                          "src": "11958:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18043,
                          "name": "_canBuyFromSTO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17986,
                          "src": "11971:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 18039,
                        "name": "TimeRestriction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17552,
                        "src": "11922:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TimeRestriction_$17552_storage_ptr_$",
                          "typeString": "type(struct GeneralTransferManager.TimeRestriction storage pointer)"
                        }
                      },
                      "id": 18044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11922:64:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_memory",
                        "typeString": "struct GeneralTransferManager.TimeRestriction memory"
                      }
                    },
                    "src": "11899:87:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                      "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                    }
                  },
                  "id": 18046,
                  "nodeType": "ExpressionStatement",
                  "src": "11899:87:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18048,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17978,
                        "src": "12020:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18049,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "12031:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18050,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "12036:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12036:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18052,
                        "name": "_fromTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17980,
                        "src": "12048:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18053,
                        "name": "_toTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17982,
                        "src": "12059:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18054,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17984,
                        "src": "12068:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18055,
                        "name": "_canBuyFromSTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17986,
                        "src": "12081:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18047,
                      "name": "LogModifyWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17608,
                      "src": "12001:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256,uint256,uint256,bool)"
                      }
                    },
                    "id": 18056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12001:95:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18057,
                  "nodeType": "EmitStatement",
                  "src": "11996:100:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist - can be called by anyone with a valid signature\n@param _investor is the address to whitelist\n@param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO is used to know whether the investor is restricted investor or not.\n@param _validFrom is the time that this signature is valid from\n@param _validTo is the time that this signature is valid until\n@param _v issuer signature\n@param _r issuer signature\n@param _s issuer signature",
            "id": 18059,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "modifyWhitelistSigned",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17978,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11231:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17977,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11231:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17980,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11258:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17979,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11258:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17982,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11285:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11285:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17984,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11310:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17983,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11310:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17986,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11339:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17985,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11339:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17988,
                  "name": "_validFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11368:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11368:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17990,
                  "name": "_validTo",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11396:16:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17989,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11396:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17992,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11422:8:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 17991,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "11422:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17994,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11440:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17993,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11440:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17996,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11460:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17995,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11460:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11221:255:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11484:0:48"
            },
            "scope": 18197,
            "src": "11191:912:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18100,
              "nodeType": "Block",
              "src": "12250:399:48",
              "statements": [
                {
                  "assignments": [
                    18071
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18071,
                      "name": "signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 18101,
                      "src": "12418:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18070,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12418:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18084,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                "id": 18076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12472:34:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                  "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
                                },
                                "value": "\u0019Ethereum Signed Message:\n32"
                              },
                              {
                                "argumentTypes": null,
                                "id": 18077,
                                "name": "_hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18061,
                                "src": "12508:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                  "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18074,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23118,
                                "src": "12455:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 18075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12455:16:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 18078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12455:59:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 18073,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "12445:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 18079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12445:70:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18080,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18063,
                        "src": "12517:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18081,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18065,
                        "src": "12521:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18082,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18067,
                        "src": "12525:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18072,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23123,
                      "src": "12435:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 18083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12435:93:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12418:110:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18086,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18071,
                            "src": "12546:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18088,
                                    "name": "securityToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9561,
                                    "src": "12571:13:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18087,
                                  "name": "ISecurityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10159,
                                  "src": "12556:14:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                    "typeString": "type(contract ISecurityToken)"
                                  }
                                },
                                "id": 18089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12556:29:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                  "typeString": "contract ISecurityToken"
                                }
                              },
                              "id": 18090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22582,
                              "src": "12556:35:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 18091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12556:37:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12546:47:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18093,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18071,
                            "src": "12597:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 18094,
                            "name": "signingAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17537,
                            "src": "12607:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12597:24:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12546:75:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374207369676e6572",
                        "id": 18097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12623:18:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f959bac4fcb8350e440bda9ef2e133685bbcca7e96b8c2ce30bcb87b7e733c10",
                          "typeString": "literal_string \"Incorrect signer\""
                        },
                        "value": "Incorrect signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f959bac4fcb8350e440bda9ef2e133685bbcca7e96b8c2ce30bcb87b7e733c10",
                          "typeString": "literal_string \"Incorrect signer\""
                        }
                      ],
                      "id": 18085,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "12538:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12538:104:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18099,
                  "nodeType": "ExpressionStatement",
                  "src": "12538:104:48"
                }
              ]
            },
            "documentation": "@notice used to verify the signature",
            "id": 18101,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "checkSig",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18061,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12187:13:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12187:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18063,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12202:8:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 18062,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "12202:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18065,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12212:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12212:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18067,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12224:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12224:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12186:49:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18069,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12250:0:48"
            },
            "scope": 18197,
            "src": "12169:480:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18131,
              "nodeType": "Block",
              "src": "12821:172:48",
              "statements": [
                {
                  "assignments": [
                    18110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18110,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 18132,
                      "src": "12831:31:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18108,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12831:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18109,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12831:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18116,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 18114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12879:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 18113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12865:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18111,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12869:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18112,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12869:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 18115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12865:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12831:50:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18117,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18110,
                        "src": "12891:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18119,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12906:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12891:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18120,
                      "name": "WHITELIST",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17540,
                      "src": "12911:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "12891:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18122,
                  "nodeType": "ExpressionStatement",
                  "src": "12891:29:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18123,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18110,
                        "src": "12930:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18125,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 18124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12945:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12930:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18126,
                      "name": "FLAGS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17543,
                      "src": "12950:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "12930:25:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18128,
                  "nodeType": "ExpressionStatement",
                  "src": "12930:25:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18129,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18110,
                    "src": "12972:14:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 18106,
                  "id": 18130,
                  "nodeType": "Return",
                  "src": "12965:21:48"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with general trnasfer manager",
            "id": 18132,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18102,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12787:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18105,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18132,
                  "src": "12810:9:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18103,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "12810:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18104,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12810:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12809:11:48"
            },
            "scope": 18197,
            "src": "12764:229:48",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18165,
              "nodeType": "Block",
              "src": "13299:158:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18139,
                                          "name": "whitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17556,
                                          "src": "13319:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                            "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                          }
                                        },
                                        "id": 18141,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18140,
                                          "name": "_investor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18134,
                                          "src": "13329:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13319:20:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                          "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                        }
                                      },
                                      "id": 18142,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "fromTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17545,
                                      "src": "13319:29:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13352:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "13319:34:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 18145,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13318:36:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18146,
                                          "name": "whitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17556,
                                          "src": "13359:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                            "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                          }
                                        },
                                        "id": 18148,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18147,
                                          "name": "_investor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18134,
                                          "src": "13369:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13359:20:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                          "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                        }
                                      },
                                      "id": 18149,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17547,
                                      "src": "13359:27:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13390:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "13359:32:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 18152,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13358:34:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13318:74:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18154,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13317:76:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18155,
                                    "name": "whitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17556,
                                    "src": "13410:9:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                      "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                    }
                                  },
                                  "id": 18157,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 18156,
                                    "name": "_investor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18134,
                                    "src": "13420:9:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13410:20:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                    "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                  }
                                },
                                "id": 18158,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiryTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17549,
                                "src": "13410:31:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 18159,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23133,
                                "src": "13445:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13410:38:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18161,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13409:40:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13317:132:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 18163,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13316:134:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 18138,
                  "id": 18164,
                  "nodeType": "Return",
                  "src": "13309:141:48"
                }
              ]
            },
            "documentation": "@notice Internal function used to check whether the investor is in the whitelist or not\n& also checks whether the KYC of investor get expired or not\n@param _investor Address of the investor",
            "id": 18166,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "onWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18134,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 18166,
                  "src": "13252:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18133,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13252:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13251:19:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18137,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18166,
                  "src": "13293:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18136,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13293:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13292:6:48"
            },
            "scope": 18197,
            "src": "13231:226:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18195,
              "nodeType": "Block",
              "src": "13612:174:48",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18172,
                      "name": "_sto",
                      "nodeType": "VariableDeclaration",
                      "scope": 18196,
                      "src": "13622:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18171,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13622:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18173,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13622:12:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 18174,
                          "name": "_sto",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18172,
                          "src": "13647:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 18175,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "13644:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_address_$",
                        "typeString": "tuple(,address)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 18180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13695:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13698:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18177,
                              "name": "securityToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9561,
                              "src": "13670:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18176,
                            "name": "ISecurityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10159,
                            "src": "13655:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                              "typeString": "type(contract ISecurityToken)"
                            }
                          },
                          "id": 18178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13655:29:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                            "typeString": "contract ISecurityToken"
                          }
                        },
                        "id": 18179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getModule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10121,
                        "src": "13655:39:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint8_$_t_uint256_$returns$_t_bytes32_$_t_address_$",
                          "typeString": "function (uint8,uint256) view external returns (bytes32,address)"
                        }
                      },
                      "id": 18182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13655:45:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$",
                        "typeString": "tuple(bytes32,address)"
                      }
                    },
                    "src": "13644:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18184,
                  "nodeType": "ExpressionStatement",
                  "src": "13644:56:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 18189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18185,
                      "name": "_sto",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18172,
                      "src": "13714:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13730:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 18186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13722:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 18188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13722:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13714:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18192,
                  "nodeType": "IfStatement",
                  "src": "13710:48:48",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 18190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13753:5:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 18170,
                    "id": 18191,
                    "nodeType": "Return",
                    "src": "13746:12:48"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 18193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13775:4:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 18170,
                  "id": 18194,
                  "nodeType": "Return",
                  "src": "13768:11:48"
                }
              ]
            },
            "documentation": "@notice Internal function use to know whether the STO is attached or not",
            "id": 18196,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isSTOAttached",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13581:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18169,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18196,
                  "src": "13606:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18168,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13606:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13605:6:48"
            },
            "scope": 18197,
            "src": "13559:227:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 18198,
        "src": "759:13030:48"
      }
    ],
    "src": "0:13790:48"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/GeneralTransferManager.sol",
    "exportedSymbols": {
      "GeneralTransferManager": [
        18197
      ]
    },
    "id": 18198,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17520,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:48"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 17521,
        "nodeType": "ImportDirective",
        "scope": 18198,
        "sourceUnit": 18395,
        "src": "26:32:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 17522,
        "nodeType": "ImportDirective",
        "scope": 18198,
        "sourceUnit": 22579,
        "src": "59:59:48",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17523,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "794:16:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 17524,
            "nodeType": "InheritanceSpecifier",
            "src": "794:16:48"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager module for core transfer validation functionality",
        "fullyImplemented": true,
        "id": 18197,
        "linearizedBaseContracts": [
          18197,
          18394,
          471,
          9717
        ],
        "name": "GeneralTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17527,
            "libraryName": {
              "contractScope": null,
              "id": 17525,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "824:8:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "818:27:48",
            "typeName": {
              "id": 17526,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "837:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 17532,
            "name": "issuanceAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "891:43:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17528,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "891:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 17530,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "932:1:48",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 17529,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "924:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 17531,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "924:10:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17537,
            "name": "signingAddress",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "988:42:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17533,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "988:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "30",
                  "id": 17535,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1028:1:48",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 17534,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "1020:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 17536,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1020:10:48",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17540,
            "name": "WHITELIST",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1037:47:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17538,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1037:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "57484954454c495354",
              "id": 17539,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1073:11:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0af0c3ebe77999ca20698e1ff25f812bf82409a59d21ca15a41f39e0ce9f2500",
                "typeString": "literal_string \"WHITELIST\""
              },
              "value": "WHITELIST"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17543,
            "name": "FLAGS",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1090:39:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17541,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1090:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "464c414753",
              "id": 17542,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1122:7:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_343c07b3fb8ec1ffc9ce674026a727b988856209732b2202571e75a0996b3a37",
                "typeString": "literal_string \"FLAGS\""
              },
              "value": "FLAGS"
            },
            "visibility": "public"
          },
          {
            "canonicalName": "GeneralTransferManager.TimeRestriction",
            "id": 17552,
            "members": [
              {
                "constant": false,
                "id": 17545,
                "name": "fromTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1254:16:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17544,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1254:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17547,
                "name": "toTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1280:14:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17546,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1280:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17549,
                "name": "expiryTime",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1304:18:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17548,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1304:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17551,
                "name": "canBuyFromSTO",
                "nodeType": "VariableDeclaration",
                "scope": 17552,
                "src": "1332:18:48",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17550,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1332:4:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "TimeRestriction",
            "nodeType": "StructDefinition",
            "scope": 18197,
            "src": "1221:136:48",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17556,
            "name": "whitelist",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1540:53:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
              "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction)"
            },
            "typeName": {
              "id": 17555,
              "keyType": {
                "id": 17553,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1549:7:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1540:36:48",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction)"
              },
              "valueType": {
                "contractScope": null,
                "id": 17554,
                "name": "TimeRestriction",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17552,
                "src": "1560:15:48",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage_ptr",
                  "typeString": "struct GeneralTransferManager.TimeRestriction"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17559,
            "name": "allowAllTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1669:37:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17557,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1669:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17558,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1701:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17562,
            "name": "allowAllWhitelistTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1799:46:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17560,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1799:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17561,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1840:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17565,
            "name": "allowAllWhitelistIssuances",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "1938:45:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17563,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1938:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 17564,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1979:4:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 17568,
            "name": "allowAllBurnTransfers",
            "nodeType": "VariableDeclaration",
            "scope": 18197,
            "src": "2047:41:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17566,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2047:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 17567,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2083:5:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17572,
            "name": "LogChangeIssuanceAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17570,
                  "indexed": false,
                  "name": "_issuanceAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17572,
                  "src": "2172:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17569,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2172:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2171:26:48"
            },
            "src": "2141:57:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17576,
            "name": "LogAllowAllTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17574,
                  "indexed": false,
                  "name": "_allowAllTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17576,
                  "src": "2309:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17573,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2309:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2308:25:48"
            },
            "src": "2282:52:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17580,
            "name": "LogAllowAllWhitelistTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17578,
                  "indexed": false,
                  "name": "_allowAllWhitelistTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17580,
                  "src": "2463:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17577,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2463:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2462:34:48"
            },
            "src": "2427:70:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17584,
            "name": "LogAllowAllWhitelistIssuances",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17582,
                  "indexed": false,
                  "name": "_allowAllWhitelistIssuances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17584,
                  "src": "2626:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17581,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2626:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2625:34:48"
            },
            "src": "2590:70:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17588,
            "name": "LogAllowAllBurnTransfers",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17586,
                  "indexed": false,
                  "name": "_allowAllBurnTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17588,
                  "src": "2779:27:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17585,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2779:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:29:48"
            },
            "src": "2748:60:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17592,
            "name": "LogChangeSigningAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17590,
                  "indexed": false,
                  "name": "_signingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17592,
                  "src": "2919:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17589,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2919:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2918:25:48"
            },
            "src": "2889:55:48"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17608,
            "name": "LogModifyWhitelist",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17594,
                  "indexed": false,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3060:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3060:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17596,
                  "indexed": false,
                  "name": "_dateAdded",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3087:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17595,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17598,
                  "indexed": false,
                  "name": "_addedBy",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3115:16:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3115:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17600,
                  "indexed": false,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3141:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17599,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3141:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17602,
                  "indexed": false,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3168:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17604,
                  "indexed": false,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3193:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3193:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17606,
                  "indexed": false,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17608,
                  "src": "3222:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17605,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3050:197:48"
            },
            "src": "3026:222:48"
          },
          {
            "body": {
              "id": 17619,
              "nodeType": "Block",
              "src": "3524:7:48",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 17620,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17615,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17610,
                    "src": "3490:14:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 17616,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17612,
                    "src": "3506:12:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17617,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17614,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "3482:7:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3482:37:48"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17610,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 17620,
                  "src": "3421:22:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3421:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17612,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17620,
                  "src": "3445:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3445:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3420:46:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3524:0:48"
            },
            "scope": 18197,
            "src": "3408:123:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17629,
              "nodeType": "Block",
              "src": "3682:33:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 17626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3706:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 17625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3699:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 17627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3699:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 17624,
                  "id": 17628,
                  "nodeType": "Return",
                  "src": "3692:16:48"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 17630,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3650:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17623,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17630,
                  "src": "3674:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17622,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3674:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3673:8:48"
            },
            "scope": 18197,
            "src": "3626:89:48",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17646,
              "nodeType": "Block",
              "src": "3928:108:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17638,
                      "name": "issuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17532,
                      "src": "3938:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17639,
                      "name": "_issuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17632,
                      "src": "3956:16:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3938:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17641,
                  "nodeType": "ExpressionStatement",
                  "src": "3938:34:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17643,
                        "name": "_issuanceAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17632,
                        "src": "4012:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17642,
                      "name": "LogChangeIssuanceAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17572,
                      "src": "3987:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3987:42:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17645,
                  "nodeType": "EmitStatement",
                  "src": "3982:47:48"
                }
              ]
            },
            "documentation": "@notice Used to change the Issuance Address\n@param _issuanceAddress new address for the issuance",
            "id": 17647,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17635,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "3921:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17636,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17634,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "3912:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3912:15:48"
              }
            ],
            "name": "changeIssuanceAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17632,
                  "name": "_issuanceAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17647,
                  "src": "3879:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3879:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3878:26:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17637,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3928:0:48"
            },
            "scope": 18197,
            "src": "3848:188:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17663,
              "nodeType": "Block",
              "src": "4245:104:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17655,
                      "name": "signingAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17537,
                      "src": "4255:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17656,
                      "name": "_signingAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17649,
                      "src": "4272:15:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4255:32:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17658,
                  "nodeType": "ExpressionStatement",
                  "src": "4255:32:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17660,
                        "name": "_signingAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17649,
                        "src": "4326:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17659,
                      "name": "LogChangeSigningAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17592,
                      "src": "4302:23:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4302:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17662,
                  "nodeType": "EmitStatement",
                  "src": "4297:45:48"
                }
              ]
            },
            "documentation": "@notice Used to change the Sigining Address\n@param _signingAddress new address for the signing",
            "id": 17664,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17652,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "4238:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17653,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17651,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4229:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4229:15:48"
              }
            ],
            "name": "changeSigningAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17649,
                  "name": "_signingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17664,
                  "src": "4197:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4197:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4196:25:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4245:0:48"
            },
            "scope": 18197,
            "src": "4167:182:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17680,
              "nodeType": "Block",
              "src": "4692:110:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17672,
                      "name": "allowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17559,
                      "src": "4702:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17673,
                      "name": "_allowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17666,
                      "src": "4722:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4702:38:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17675,
                  "nodeType": "ExpressionStatement",
                  "src": "4702:38:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17677,
                        "name": "_allowAllTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17666,
                        "src": "4776:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17676,
                      "name": "LogAllowAllTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17576,
                      "src": "4755:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4755:40:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17679,
                  "nodeType": "EmitStatement",
                  "src": "4750:45:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers there are no transfer restrictions, for any addresses\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllTransfers flag value",
            "id": 17681,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17669,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "4685:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17670,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17668,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "4676:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4676:15:48"
              }
            ],
            "name": "changeAllowAllTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17666,
                  "name": "_allowAllTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17681,
                  "src": "4644:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:25:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4692:0:48"
            },
            "scope": 18197,
            "src": "4611:191:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17697,
              "nodeType": "Block",
              "src": "5195:146:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17689,
                      "name": "allowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17562,
                      "src": "5205:26:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17690,
                      "name": "_allowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17683,
                      "src": "5234:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5205:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17692,
                  "nodeType": "ExpressionStatement",
                  "src": "5205:56:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17694,
                        "name": "_allowAllWhitelistTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17683,
                        "src": "5306:27:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17693,
                      "name": "LogAllowAllWhitelistTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17580,
                      "src": "5276:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17695,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5276:58:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17696,
                  "nodeType": "EmitStatement",
                  "src": "5271:63:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers that time lock is ignored for transfers (address must still be on whitelist)\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllWhitelistTransfers flag value",
            "id": 17698,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17686,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "5188:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17687,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17685,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5179:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5179:15:48"
              }
            ],
            "name": "changeAllowAllWhitelistTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17683,
                  "name": "_allowAllWhitelistTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17698,
                  "src": "5138:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17682,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5138:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5137:34:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17688,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5195:0:48"
            },
            "scope": 18197,
            "src": "5096:245:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17714,
              "nodeType": "Block",
              "src": "5734:146:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17706,
                      "name": "allowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17565,
                      "src": "5744:26:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17707,
                      "name": "_allowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17700,
                      "src": "5773:27:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5744:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17709,
                  "nodeType": "ExpressionStatement",
                  "src": "5744:56:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17711,
                        "name": "_allowAllWhitelistIssuances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17700,
                        "src": "5845:27:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17710,
                      "name": "LogAllowAllWhitelistIssuances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17584,
                      "src": "5815:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5815:58:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17713,
                  "nodeType": "EmitStatement",
                  "src": "5810:63:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It refers that time lock is ignored for issuances (address must still be on whitelist)\nfalse - It refers transfers are restricted for all addresses.\n@param _allowAllWhitelistIssuances flag value",
            "id": 17715,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17703,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "5727:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17704,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17702,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "5718:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5718:15:48"
              }
            ],
            "name": "changeAllowAllWhitelistIssuances",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17700,
                  "name": "_allowAllWhitelistIssuances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17715,
                  "src": "5677:32:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17699,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5677:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5676:34:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5734:0:48"
            },
            "scope": 18197,
            "src": "5635:245:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17731,
              "nodeType": "Block",
              "src": "6182:126:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17723,
                      "name": "allowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17568,
                      "src": "6192:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17724,
                      "name": "_allowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17717,
                      "src": "6216:22:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6192:46:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17726,
                  "nodeType": "ExpressionStatement",
                  "src": "6192:46:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17728,
                        "name": "_allowAllBurnTransfers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17717,
                        "src": "6278:22:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17727,
                      "name": "LogAllowAllBurnTransfers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17588,
                      "src": "6253:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 17729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6253:48:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17730,
                  "nodeType": "EmitStatement",
                  "src": "6248:53:48"
                }
              ]
            },
            "documentation": "@notice Used to change the flag\ntrue - It allow to burn the tokens\nfalse - It deactivate the burning mechanism.\n@param _allowAllBurnTransfers flag value",
            "id": 17732,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17720,
                    "name": "FLAGS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17543,
                    "src": "6175:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17721,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17719,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "6166:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6166:15:48"
              }
            ],
            "name": "changeAllowAllBurnTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17717,
                  "name": "_allowAllBurnTransfers",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "6130:27:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17716,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6130:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6129:29:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6182:0:48"
            },
            "scope": 18197,
            "src": "6093:215:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17847,
              "nodeType": "Block",
              "src": "6823:1121:48",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 17746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6837:7:48",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 17745,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "6838:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17843,
                  "nodeType": "IfStatement",
                  "src": "6833:1079:48",
                  "trueBody": {
                    "id": 17842,
                    "nodeType": "Block",
                    "src": "6846:1066:48",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17747,
                          "name": "allowAllTransfers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17559,
                          "src": "6864:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17752,
                        "nodeType": "IfStatement",
                        "src": "6860:140:48",
                        "trueBody": {
                          "id": 17751,
                          "nodeType": "Block",
                          "src": "6883:117:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17748,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "6973:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6973:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17750,
                              "nodeType": "Return",
                              "src": "6966:19:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17753,
                            "name": "allowAllBurnTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17568,
                            "src": "7017:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 17758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17754,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17736,
                                  "src": "7043:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 17756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7058:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 17755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7050:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 17757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7050:10:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7043:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17759,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7042:19:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7017:44:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17765,
                        "nodeType": "IfStatement",
                        "src": "7013:102:48",
                        "trueBody": {
                          "id": 17764,
                          "nodeType": "Block",
                          "src": "7063:52:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17761,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "7088:6:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "VALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7088:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17763,
                              "nodeType": "Return",
                              "src": "7081:19:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17766,
                          "name": "allowAllWhitelistTransfers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17562,
                          "src": "7132:26:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17782,
                        "nodeType": "IfStatement",
                        "src": "7128:222:48",
                        "trueBody": {
                          "id": 17781,
                          "nodeType": "Block",
                          "src": "7160:190:48",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17773,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17768,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17736,
                                            "src": "7281:3:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17767,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7269:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17769,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7269:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17771,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17734,
                                            "src": "7301:5:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17770,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7289:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17772,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7289:18:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7269:38:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17774,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7268:40:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17777,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7326:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7326:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "id": 17779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7268:67:48",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17775,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7311:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "VALID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7311:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17780,
                              "nodeType": "Return",
                              "src": "7261:74:48"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17783,
                            "name": "allowAllWhitelistIssuances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17565,
                            "src": "7367:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 17786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 17784,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17734,
                              "src": "7397:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 17785,
                              "name": "issuanceAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17532,
                              "src": "7406:15:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7397:24:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7367:54:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17811,
                        "nodeType": "IfStatement",
                        "src": "7363:271:48",
                        "trueBody": {
                          "id": 17810,
                          "nodeType": "Block",
                          "src": "7423:211:48",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "7445:29:48",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17788,
                                        "name": "whitelist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17556,
                                        "src": "7446:9:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                        }
                                      },
                                      "id": 17790,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17789,
                                        "name": "_to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17736,
                                        "src": "7456:3:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7446:14:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                      }
                                    },
                                    "id": 17791,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "canBuyFromSTO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17551,
                                    "src": "7446:28:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 17793,
                                    "name": "isSTOAttached",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18196,
                                    "src": "7478:13:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                      "typeString": "function () view returns (bool)"
                                    }
                                  },
                                  "id": 17794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7478:15:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7445:48:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17800,
                              "nodeType": "IfStatement",
                              "src": "7441:111:48",
                              "trueBody": {
                                "id": 17799,
                                "nodeType": "Block",
                                "src": "7495:57:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17796,
                                        "name": "Result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18358,
                                        "src": "7524:6:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                          "typeString": "type(enum ITransferManager.Result)"
                                        }
                                      },
                                      "id": 17797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7524:9:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Result_$18358",
                                        "typeString": "enum ITransferManager.Result"
                                      }
                                    },
                                    "functionReturnParameters": 17744,
                                    "id": 17798,
                                    "nodeType": "Return",
                                    "src": "7517:16:48"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17802,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17736,
                                      "src": "7588:3:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17801,
                                    "name": "onWhitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18166,
                                    "src": "7576:11:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                      "typeString": "function (address) view returns (bool)"
                                    }
                                  },
                                  "id": 17803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7576:16:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17806,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7610:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7610:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "id": 17808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7576:43:48",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17804,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18358,
                                    "src": "7595:6:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                      "typeString": "type(enum ITransferManager.Result)"
                                    }
                                  },
                                  "id": 17805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "VALID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7595:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Result_$18358",
                                    "typeString": "enum ITransferManager.Result"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17744,
                              "id": 17809,
                              "nodeType": "Return",
                              "src": "7569:50:48"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17821,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17813,
                                            "name": "_from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17734,
                                            "src": "7760:5:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17812,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7748:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7748:18:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 17820,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 17815,
                                              "name": "whitelist",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17556,
                                              "src": "7770:9:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                              }
                                            },
                                            "id": 17817,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 17816,
                                              "name": "_from",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17734,
                                              "src": "7780:5:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7770:16:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                              "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                            }
                                          },
                                          "id": 17818,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fromTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17545,
                                          "src": "7770:25:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 17819,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23133,
                                          "src": "7799:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7770:32:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7748:54:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17822,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7747:56:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 17832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17824,
                                            "name": "_to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17736,
                                            "src": "7836:3:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17823,
                                          "name": "onWhitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18166,
                                          "src": "7824:11:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 17825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7824:16:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 17831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 17826,
                                              "name": "whitelist",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17556,
                                              "src": "7844:9:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                                "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                              }
                                            },
                                            "id": 17828,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 17827,
                                              "name": "_to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17736,
                                              "src": "7854:3:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7844:14:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                              "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                            }
                                          },
                                          "id": 17829,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "toTime",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17547,
                                          "src": "7844:21:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 17830,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23133,
                                          "src": "7869:3:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7844:28:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7824:48:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 17833,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7823:50:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7747:126:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17835,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7746:128:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17838,
                              "name": "Result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18358,
                              "src": "7892:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                "typeString": "type(enum ITransferManager.Result)"
                              }
                            },
                            "id": 17839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7892:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Result_$18358",
                              "typeString": "enum ITransferManager.Result"
                            }
                          },
                          "id": 17840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "7746:155:48",
                          "trueExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17836,
                              "name": "Result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18358,
                              "src": "7877:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                "typeString": "type(enum ITransferManager.Result)"
                              }
                            },
                            "id": 17837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "VALID",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7877:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Result_$18358",
                              "typeString": "enum ITransferManager.Result"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Result_$18358",
                            "typeString": "enum ITransferManager.Result"
                          }
                        },
                        "functionReturnParameters": 17744,
                        "id": 17841,
                        "nodeType": "Return",
                        "src": "7739:162:48"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 17844,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "7928:6:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 17845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7928:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 17744,
                  "id": 17846,
                  "nodeType": "Return",
                  "src": "7921:16:48"
                }
              ]
            },
            "documentation": "@notice default implementation of verifyTransfer used by SecurityToken\nIf the transfer request comes from the STO, it only checks that the investor is in the whitelist\nIf the transfer request comes from a token holder, it checks that:\na) Both are on the whitelist\nb) Seller's sale lockup period is over\nc) Buyer's purchase lockup is over",
            "id": 17848,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17734,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6727:13:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17733,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6727:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17736,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6742:11:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6742:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17738,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6755:7:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17737,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6755:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17740,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6776:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17739,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6776:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6726:73:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17744,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17743,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17848,
                  "src": "6815:6:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17742,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "6815:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6814:8:48"
            },
            "scope": 18197,
            "src": "6703:1241:48",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17886,
              "nodeType": "Block",
              "src": "8678:324:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17864,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17556,
                        "src": "8798:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                        }
                      },
                      "id": 17866,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17865,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17850,
                        "src": "8808:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8798:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17868,
                          "name": "_fromTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17852,
                          "src": "8837:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17869,
                          "name": "_toTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17854,
                          "src": "8848:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17870,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17856,
                          "src": "8857:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17871,
                          "name": "_canBuyFromSTO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17858,
                          "src": "8870:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 17867,
                        "name": "TimeRestriction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17552,
                        "src": "8821:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TimeRestriction_$17552_storage_ptr_$",
                          "typeString": "type(struct GeneralTransferManager.TimeRestriction storage pointer)"
                        }
                      },
                      "id": 17872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8821:64:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_memory",
                        "typeString": "struct GeneralTransferManager.TimeRestriction memory"
                      }
                    },
                    "src": "8798:87:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                      "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                    }
                  },
                  "id": 17874,
                  "nodeType": "ExpressionStatement",
                  "src": "8798:87:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17876,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17850,
                        "src": "8919:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17877,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "8930:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17878,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "8935:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 17879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8935:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17880,
                        "name": "_fromTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17852,
                        "src": "8947:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17881,
                        "name": "_toTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "8958:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17882,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17856,
                        "src": "8967:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17883,
                        "name": "_canBuyFromSTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17858,
                        "src": "8980:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17875,
                      "name": "LogModifyWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17608,
                      "src": "8900:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256,uint256,uint256,bool)"
                      }
                    },
                    "id": 17884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8900:95:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17885,
                  "nodeType": "EmitStatement",
                  "src": "8895:100:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist.\n@param _investor is the address to whitelist\n@param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO is used to know whether the investor is restricted investor or not.",
            "id": 17887,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17861,
                    "name": "WHITELIST",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17540,
                    "src": "8667:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17862,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17860,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "8658:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8658:19:48"
              }
            ],
            "name": "modifyWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17850,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8554:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17849,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8554:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17852,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8573:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8573:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17854,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8592:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8592:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17856,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8609:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17858,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17887,
                  "src": "8630:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8630:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8553:97:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8678:0:48"
            },
            "scope": 18197,
            "src": "8529:473:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17975,
              "nodeType": "Block",
              "src": "9798:522:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17909,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17890,
                            "src": "9816:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 17910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9816:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17911,
                            "name": "_fromTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17893,
                            "src": "9837:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9837:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9816:38:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9856:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17908,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9808:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9808:75:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17916,
                  "nodeType": "ExpressionStatement",
                  "src": "9808:75:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17922,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17918,
                            "name": "_fromTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17893,
                            "src": "9901:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9901:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17920,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "9922:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9922:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9901:36:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9939:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17917,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9893:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9893:73:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17925,
                  "nodeType": "ExpressionStatement",
                  "src": "9893:73:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17927,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "9984:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9984:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17929,
                            "name": "_expiryTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17899,
                            "src": "10003:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10003:19:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9984:38:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e67746873",
                        "id": 17932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10024:26:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        },
                        "value": "Mismatched input lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_757ac971b3c89ff6729d1b818f9eb2011ff93a983cd352fb4a93d3214c1015fe",
                          "typeString": "literal_string \"Mismatched input lengths\""
                        }
                      ],
                      "id": 17926,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "9976:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9976:75:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17934,
                  "nodeType": "ExpressionStatement",
                  "src": "9976:75:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17936,
                            "name": "_canBuyFromSTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17902,
                            "src": "10069:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "id": 17937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10069:21:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17938,
                            "name": "_toTimes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17896,
                            "src": "10094:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 17939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10094:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10069:40:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69736d61746368656420696e707574206c656e677468",
                        "id": 17941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10111:25:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_105cd25b3fa111d79edd195a9110213618d4a0b70897083c4c45e06854cf081f",
                          "typeString": "literal_string \"Mismatched input length\""
                        },
                        "value": "Mismatched input length"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_105cd25b3fa111d79edd195a9110213618d4a0b70897083c4c45e06854cf081f",
                          "typeString": "literal_string \"Mismatched input length\""
                        }
                      ],
                      "id": 17935,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "10061:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17942,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10061:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17943,
                  "nodeType": "ExpressionStatement",
                  "src": "10061:76:48"
                },
                {
                  "body": {
                    "id": 17973,
                    "nodeType": "Block",
                    "src": "10195:119:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17956,
                                "name": "_investors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17890,
                                "src": "10225:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 17958,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17957,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10236:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10225:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17959,
                                "name": "_fromTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17893,
                                "src": "10240:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17961,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17960,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10251:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10240:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17962,
                                "name": "_toTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17896,
                                "src": "10255:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17964,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17963,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10264:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10255:11:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17965,
                                "name": "_expiryTimes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17899,
                                "src": "10268:12:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 17967,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17966,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10281:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10268:15:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17968,
                                "name": "_canBuyFromSTO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17902,
                                "src": "10285:14:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                  "typeString": "bool[] memory"
                                }
                              },
                              "id": 17970,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17969,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17945,
                                "src": "10300:1:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10285:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17955,
                            "name": "modifyWhitelist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17887,
                            "src": "10209:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,bool)"
                            }
                          },
                          "id": 17971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10209:94:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17972,
                        "nodeType": "ExpressionStatement",
                        "src": "10209:94:48"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17948,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17945,
                      "src": "10167:1:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17949,
                        "name": "_investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17890,
                        "src": "10171:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 17950,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10171:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10167:21:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17974,
                  "initializationExpression": {
                    "assignments": [
                      17945
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17945,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 17976,
                        "src": "10152:9:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17944,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10152:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17947,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10164:1:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10152:13:48"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10190:3:48",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17952,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17945,
                        "src": "10190:1:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17954,
                    "nodeType": "ExpressionStatement",
                    "src": "10190:3:48"
                  },
                  "nodeType": "ForStatement",
                  "src": "10147:167:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist.\n@param _investors List of the addresses to whitelist\n@param _fromTimes An array of the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTimes An array of the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTimes An array of the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO An array of boolean values",
            "id": 17976,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17905,
                    "name": "WHITELIST",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17540,
                    "src": "9787:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17906,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17904,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "9778:8:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9778:19:48"
              }
            ],
            "name": "modifyWhitelistMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17890,
                  "name": "_investors",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9623:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17888,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "9623:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 17889,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9623:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17893,
                  "name": "_fromTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9653:20:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17891,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9653:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17892,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9653:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17896,
                  "name": "_toTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9683:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17894,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9683:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17895,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9683:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17899,
                  "name": "_expiryTimes",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9711:22:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17897,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9711:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17898,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9711:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17902,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 17976,
                  "src": "9743:21:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17900,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "9743:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 17901,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9743:6:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9613:157:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9798:0:48"
            },
            "scope": 18197,
            "src": "9584:736:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18058,
              "nodeType": "Block",
              "src": "11484:619:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18000,
                          "name": "_validFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17988,
                          "src": "11502:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18001,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "11516:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11502:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696446726f6d20697320746f6f206561726c79",
                        "id": 18003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11521:24:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_99e48cd3a89cd958b606f09b46fee13c6f02a8c1cabd819bdc259be60f8be245",
                          "typeString": "literal_string \"ValidFrom is too early\""
                        },
                        "value": "ValidFrom is too early"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_99e48cd3a89cd958b606f09b46fee13c6f02a8c1cabd819bdc259be60f8be245",
                          "typeString": "literal_string \"ValidFrom is too early\""
                        }
                      ],
                      "id": 17999,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "11494:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11494:52:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18005,
                  "nodeType": "ExpressionStatement",
                  "src": "11494:52:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18007,
                          "name": "_validTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17990,
                          "src": "11564:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 18008,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "11576:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11564:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c6964546f20697320746f6f206c617465",
                        "id": 18010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11581:21:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_32b35358d9cb029ce5f1705ced20cd49735d5c5348949ad9326e100596c13439",
                          "typeString": "literal_string \"ValidTo is too late\""
                        },
                        "value": "ValidTo is too late"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_32b35358d9cb029ce5f1705ced20cd49735d5c5348949ad9326e100596c13439",
                          "typeString": "literal_string \"ValidTo is too late\""
                        }
                      ],
                      "id": 18006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "11556:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11556:47:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18012,
                  "nodeType": "ExpressionStatement",
                  "src": "11556:47:48"
                },
                {
                  "assignments": [
                    18014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18014,
                      "name": "hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 18059,
                      "src": "11613:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18013,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11613:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18028,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18018,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23290,
                            "src": "11655:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GeneralTransferManager_$18197",
                              "typeString": "contract GeneralTransferManager"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18019,
                            "name": "_investor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17978,
                            "src": "11661:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18020,
                            "name": "_fromTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17980,
                            "src": "11672:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18021,
                            "name": "_toTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17982,
                            "src": "11683:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18022,
                            "name": "_expiryTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17984,
                            "src": "11692:11:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18023,
                            "name": "_canBuyFromSTO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17986,
                            "src": "11705:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18024,
                            "name": "_validFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17988,
                            "src": "11721:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18025,
                            "name": "_validTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17990,
                            "src": "11733:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GeneralTransferManager_$18197",
                              "typeString": "contract GeneralTransferManager"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18016,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23118,
                            "src": "11638:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11638:16:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 18026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11638:104:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18015,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "11628:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 18027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11628:115:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11613:130:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18030,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18014,
                        "src": "11762:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18031,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17992,
                        "src": "11768:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18032,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17994,
                        "src": "11772:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18033,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17996,
                        "src": "11776:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18029,
                      "name": "checkSig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18101,
                      "src": "11753:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) view"
                      }
                    },
                    "id": 18034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11753:26:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18035,
                  "nodeType": "ExpressionStatement",
                  "src": "11753:26:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18036,
                        "name": "whitelist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17556,
                        "src": "11899:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                          "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                        }
                      },
                      "id": 18038,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18037,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17978,
                        "src": "11909:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11899:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                        "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18040,
                          "name": "_fromTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17980,
                          "src": "11938:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18041,
                          "name": "_toTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17982,
                          "src": "11949:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18042,
                          "name": "_expiryTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17984,
                          "src": "11958:11:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18043,
                          "name": "_canBuyFromSTO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17986,
                          "src": "11971:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 18039,
                        "name": "TimeRestriction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17552,
                        "src": "11922:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_TimeRestriction_$17552_storage_ptr_$",
                          "typeString": "type(struct GeneralTransferManager.TimeRestriction storage pointer)"
                        }
                      },
                      "id": 18044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11922:64:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_TimeRestriction_$17552_memory",
                        "typeString": "struct GeneralTransferManager.TimeRestriction memory"
                      }
                    },
                    "src": "11899:87:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                      "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                    }
                  },
                  "id": 18046,
                  "nodeType": "ExpressionStatement",
                  "src": "11899:87:48"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18048,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17978,
                        "src": "12020:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18049,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23133,
                        "src": "12031:3:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18050,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "12036:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12036:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18052,
                        "name": "_fromTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17980,
                        "src": "12048:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18053,
                        "name": "_toTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17982,
                        "src": "12059:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18054,
                        "name": "_expiryTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17984,
                        "src": "12068:11:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18055,
                        "name": "_canBuyFromSTO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17986,
                        "src": "12081:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18047,
                      "name": "LogModifyWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17608,
                      "src": "12001:18:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256,uint256,uint256,bool)"
                      }
                    },
                    "id": 18056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12001:95:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18057,
                  "nodeType": "EmitStatement",
                  "src": "11996:100:48"
                }
              ]
            },
            "documentation": "@notice adds or removes addresses from the whitelist - can be called by anyone with a valid signature\n@param _investor is the address to whitelist\n@param _fromTime is the moment when the sale lockup period ends and the investor can freely sell his tokens\n@param _toTime is the moment when the purchase lockup period ends and the investor can freely purchase tokens from others\n@param _expiryTime is the moment till investors KYC will be validated. After that investor need to do re-KYC\n@param _canBuyFromSTO is used to know whether the investor is restricted investor or not.\n@param _validFrom is the time that this signature is valid from\n@param _validTo is the time that this signature is valid until\n@param _v issuer signature\n@param _r issuer signature\n@param _s issuer signature",
            "id": 18059,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "modifyWhitelistSigned",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17978,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11231:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17977,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11231:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17980,
                  "name": "_fromTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11258:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17979,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11258:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17982,
                  "name": "_toTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11285:15:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11285:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17984,
                  "name": "_expiryTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11310:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17983,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11310:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17986,
                  "name": "_canBuyFromSTO",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11339:19:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17985,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11339:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17988,
                  "name": "_validFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11368:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11368:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17990,
                  "name": "_validTo",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11396:16:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17989,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11396:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17992,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11422:8:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 17991,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "11422:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17994,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11440:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17993,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11440:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17996,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 18059,
                  "src": "11460:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17995,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11460:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11221:255:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 17998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11484:0:48"
            },
            "scope": 18197,
            "src": "11191:912:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18100,
              "nodeType": "Block",
              "src": "12250:399:48",
              "statements": [
                {
                  "assignments": [
                    18071
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18071,
                      "name": "signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 18101,
                      "src": "12418:14:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18070,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12418:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18084,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                "id": 18076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12472:34:48",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                  "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
                                },
                                "value": "\u0019Ethereum Signed Message:\n32"
                              },
                              {
                                "argumentTypes": null,
                                "id": 18077,
                                "name": "_hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18061,
                                "src": "12508:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                  "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18074,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23118,
                                "src": "12455:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 18075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12455:16:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 18078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12455:59:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 18073,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "12445:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 18079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12445:70:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18080,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18063,
                        "src": "12517:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18081,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18065,
                        "src": "12521:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18082,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18067,
                        "src": "12525:2:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18072,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23123,
                      "src": "12435:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 18083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12435:93:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12418:110:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18086,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18071,
                            "src": "12546:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18088,
                                    "name": "securityToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9561,
                                    "src": "12571:13:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18087,
                                  "name": "ISecurityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10159,
                                  "src": "12556:14:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                    "typeString": "type(contract ISecurityToken)"
                                  }
                                },
                                "id": 18089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12556:29:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                  "typeString": "contract ISecurityToken"
                                }
                              },
                              "id": 18090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22582,
                              "src": "12556:35:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 18091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12556:37:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12546:47:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18093,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18071,
                            "src": "12597:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 18094,
                            "name": "signingAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17537,
                            "src": "12607:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12597:24:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12546:75:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f7272656374207369676e6572",
                        "id": 18097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12623:18:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f959bac4fcb8350e440bda9ef2e133685bbcca7e96b8c2ce30bcb87b7e733c10",
                          "typeString": "literal_string \"Incorrect signer\""
                        },
                        "value": "Incorrect signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f959bac4fcb8350e440bda9ef2e133685bbcca7e96b8c2ce30bcb87b7e733c10",
                          "typeString": "literal_string \"Incorrect signer\""
                        }
                      ],
                      "id": 18085,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "12538:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12538:104:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18099,
                  "nodeType": "ExpressionStatement",
                  "src": "12538:104:48"
                }
              ]
            },
            "documentation": "@notice used to verify the signature",
            "id": 18101,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "checkSig",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18061,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12187:13:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12187:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18063,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12202:8:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 18062,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "12202:5:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18065,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12212:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12212:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18067,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 18101,
                  "src": "12224:10:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12224:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12186:49:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18069,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12250:0:48"
            },
            "scope": 18197,
            "src": "12169:480:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18131,
              "nodeType": "Block",
              "src": "12821:172:48",
              "statements": [
                {
                  "assignments": [
                    18110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18110,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 18132,
                      "src": "12831:31:48",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18108,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12831:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18109,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12831:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18116,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 18114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12879:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 18113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12865:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 18111,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12869:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18112,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12869:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 18115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12865:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12831:50:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18117,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18110,
                        "src": "12891:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18119,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12906:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12891:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18120,
                      "name": "WHITELIST",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17540,
                      "src": "12911:9:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "12891:29:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18122,
                  "nodeType": "ExpressionStatement",
                  "src": "12891:29:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18123,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18110,
                        "src": "12930:14:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 18125,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 18124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12945:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12930:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18126,
                      "name": "FLAGS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17543,
                      "src": "12950:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "12930:25:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18128,
                  "nodeType": "ExpressionStatement",
                  "src": "12930:25:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18129,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18110,
                    "src": "12972:14:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 18106,
                  "id": 18130,
                  "nodeType": "Return",
                  "src": "12965:21:48"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with general trnasfer manager",
            "id": 18132,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18102,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12787:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18105,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18132,
                  "src": "12810:9:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18103,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "12810:7:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18104,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12810:9:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12809:11:48"
            },
            "scope": 18197,
            "src": "12764:229:48",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18165,
              "nodeType": "Block",
              "src": "13299:158:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18139,
                                          "name": "whitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17556,
                                          "src": "13319:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                            "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                          }
                                        },
                                        "id": 18141,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18140,
                                          "name": "_investor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18134,
                                          "src": "13329:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13319:20:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                          "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                        }
                                      },
                                      "id": 18142,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "fromTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17545,
                                      "src": "13319:29:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13352:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "13319:34:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 18145,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13318:36:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18146,
                                          "name": "whitelist",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17556,
                                          "src": "13359:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                            "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                          }
                                        },
                                        "id": 18148,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18147,
                                          "name": "_investor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18134,
                                          "src": "13369:9:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13359:20:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                          "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                        }
                                      },
                                      "id": 18149,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17547,
                                      "src": "13359:27:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13390:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "13359:32:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 18152,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13358:34:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13318:74:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18154,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13317:76:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18155,
                                    "name": "whitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17556,
                                    "src": "13410:9:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_TimeRestriction_$17552_storage_$",
                                      "typeString": "mapping(address => struct GeneralTransferManager.TimeRestriction storage ref)"
                                    }
                                  },
                                  "id": 18157,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 18156,
                                    "name": "_investor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18134,
                                    "src": "13420:9:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13410:20:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TimeRestriction_$17552_storage",
                                    "typeString": "struct GeneralTransferManager.TimeRestriction storage ref"
                                  }
                                },
                                "id": 18158,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiryTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17549,
                                "src": "13410:31:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 18159,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23133,
                                "src": "13445:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13410:38:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18161,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13409:40:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13317:132:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 18163,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13316:134:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 18138,
                  "id": 18164,
                  "nodeType": "Return",
                  "src": "13309:141:48"
                }
              ]
            },
            "documentation": "@notice Internal function used to check whether the investor is in the whitelist or not\n& also checks whether the KYC of investor get expired or not\n@param _investor Address of the investor",
            "id": 18166,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "onWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18134,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 18166,
                  "src": "13252:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18133,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13252:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13251:19:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18137,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18166,
                  "src": "13293:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18136,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13293:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13292:6:48"
            },
            "scope": 18197,
            "src": "13231:226:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18195,
              "nodeType": "Block",
              "src": "13612:174:48",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18172,
                      "name": "_sto",
                      "nodeType": "VariableDeclaration",
                      "scope": 18196,
                      "src": "13622:12:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18171,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13622:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18173,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13622:12:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 18174,
                          "name": "_sto",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18172,
                          "src": "13647:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 18175,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "13644:8:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_address_$",
                        "typeString": "tuple(,address)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 18180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13695:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13698:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18177,
                              "name": "securityToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9561,
                              "src": "13670:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18176,
                            "name": "ISecurityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10159,
                            "src": "13655:14:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                              "typeString": "type(contract ISecurityToken)"
                            }
                          },
                          "id": 18178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13655:29:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                            "typeString": "contract ISecurityToken"
                          }
                        },
                        "id": 18179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getModule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10121,
                        "src": "13655:39:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint8_$_t_uint256_$returns$_t_bytes32_$_t_address_$",
                          "typeString": "function (uint8,uint256) view external returns (bytes32,address)"
                        }
                      },
                      "id": 18182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13655:45:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$",
                        "typeString": "tuple(bytes32,address)"
                      }
                    },
                    "src": "13644:56:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18184,
                  "nodeType": "ExpressionStatement",
                  "src": "13644:56:48"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 18189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18185,
                      "name": "_sto",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18172,
                      "src": "13714:4:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13730:1:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 18186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13722:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 18188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13722:10:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13714:18:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18192,
                  "nodeType": "IfStatement",
                  "src": "13710:48:48",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 18190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13753:5:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 18170,
                    "id": 18191,
                    "nodeType": "Return",
                    "src": "13746:12:48"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 18193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13775:4:48",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 18170,
                  "id": 18194,
                  "nodeType": "Return",
                  "src": "13768:11:48"
                }
              ]
            },
            "documentation": "@notice Internal function use to know whether the STO is attached or not",
            "id": 18196,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isSTOAttached",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13581:2:48"
            },
            "payable": false,
            "returnParameters": {
              "id": 18170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18169,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18196,
                  "src": "13606:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18168,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13606:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13605:6:48"
            },
            "scope": 18197,
            "src": "13559:227:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 18198,
        "src": "759:13030:48"
      }
    ],
    "src": "0:13790:48"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.592Z"
}