{
  "contractName": "DaoIdentityStorage",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "read_first_group",
      "outputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "read_total_groups",
      "outputs": [
        {
          "name": "_total_groups",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_role_id",
          "type": "uint256"
        }
      ],
      "name": "read_role",
      "outputs": [
        {
          "name": "_name",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "bytes32"
        }
      ],
      "name": "read_first_user_in_group",
      "outputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "key",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "read_user",
      "outputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        },
        {
          "name": "_role_id",
          "type": "uint256"
        },
        {
          "name": "_document",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "get_contract",
      "outputs": [
        {
          "name": "_contract",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "bytes32"
        }
      ],
      "name": "read_last_user_in_group",
      "outputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "name": "read_group",
      "outputs": [
        {
          "name": "_role_id",
          "type": "uint256"
        },
        {
          "name": "_name",
          "type": "bytes32"
        },
        {
          "name": "_document",
          "type": "bytes32"
        },
        {
          "name": "_members_count",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "read_last_group",
      "outputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "read_user_role_id",
      "outputs": [
        {
          "name": "_role_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "bytes32"
        },
        {
          "name": "_current_user",
          "type": "address"
        }
      ],
      "name": "read_previous_user_in_group",
      "outputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CONTRACT_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "bytes32"
        }
      ],
      "name": "read_total_users_in_group",
      "outputs": [
        {
          "name": "_total_users",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_group_id",
          "type": "uint256"
        }
      ],
      "name": "read_previous_group_from_group",
      "outputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_group_id",
          "type": "bytes32"
        },
        {
          "name": "_current_user",
          "type": "address"
        }
      ],
      "name": "read_next_user_in_group",
      "outputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_current_group_id",
          "type": "uint256"
        }
      ],
      "name": "read_next_group_from_group",
      "outputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_resolver",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_role_id",
          "type": "uint256"
        },
        {
          "name": "_name",
          "type": "bytes32"
        },
        {
          "name": "_document",
          "type": "bytes32"
        }
      ],
      "name": "create_group",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        },
        {
          "name": "_group_id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_role_id",
          "type": "uint256"
        },
        {
          "name": "_name",
          "type": "bytes32"
        }
      ],
      "name": "create_role",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_group_id",
          "type": "uint256"
        },
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_document",
          "type": "bytes32"
        }
      ],
      "name": "update_add_user_to_group",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "update_remove_group_user",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_doc",
          "type": "bytes32"
        },
        {
          "name": "_id_expiration",
          "type": "uint256"
        }
      ],
      "name": "update_kyc",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "read_kyc_info",
      "outputs": [
        {
          "name": "_doc",
          "type": "bytes32"
        },
        {
          "name": "_id_expiration",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "is_kyc_approved",
      "outputs": [
        {
          "name": "_approved",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260006001026003906000191690556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f70726f706f73616c5f73746174655f70726570726f706f73616c0000000000006005906000191690557f70726f706f73616c5f73746174655f64726166740000000000000000000000006006906000191690557f70726f706f73616c5f73746174655f6d6f6465726174656400000000000000006007906000191690557f70726f706f73616c5f73746174655f6f6e676f696e67000000000000000000006008906000191690557f70726f706f73616c5f73746174655f636c6f73656400000000000000000000006009906000191690557f70726f706f73616c5f73746174655f6172636869766564000000000000000000600a906000191690556001600b556002600c556003600d556001600e556002600f5560036010557f696e7465725f6467645f696400000000000000000000000000000000000000006011906000191690557f696e7465725f6d6f645f6467645f6964000000000000000000000000000000006012906000191690557f696e7465725f626f6e75735f63616c63756c6174696f6e5f69640000000000006013906000191690557f64616f00000000000000000000000000000000000000000000000000000000006014906000191690557f64616f3a7370656369616c3a70726f706f73616c0000000000000000000000006015906000191690557f64616f3a7374616b652d6c6f636b696e670000000000000000000000000000006016906000191690557f64616f3a766f74696e67000000000000000000000000000000000000000000006017906000191690557f64616f3a766f74696e673a636c61696d730000000000000000000000000000006018906000191690557f64616f3a73766f74696e673a636c61696d7300000000000000000000000000006019906000191690557f64616f3a6964656e746974790000000000000000000000000000000000000000601a906000191690557f64616f3a726577617264732d6d616e6167657200000000000000000000000000601b906000191690557f64616f3a726577617264732d6578747261730000000000000000000000000000601c906000191690557f64616f3a726f6c65730000000000000000000000000000000000000000000000601d906000191690557f64616f3a66756e64696e672d6d616e6167657200000000000000000000000000601e906000191690557f64616f3a77686974656c697374696e6700000000000000000000000000000000601f906000191690557f64616f3a696e666f726d6174696f6e00000000000000000000000000000000006020906000191690557f736572766963653a726f6c6500000000000000000000000000000000000000006021906000191690557f736572766963653a64616f3a696e666f000000000000000000000000000000006022906000191690557f736572766963653a64616f3a6c697374696e67000000000000000000000000006023906000191690557f736572766963653a64616f3a63616c63756c61746f72000000000000000000006024906000191690557f73746f726167653a64616f0000000000000000000000000000000000000000006025906000191690557f73746f726167653a64616f3a636f756e746572000000000000000000000000006026906000191690557f73746f726167653a64616f3a75706772616465000000000000000000000000006027906000191690557f73746f726167653a64616f3a6964656e746974790000000000000000000000006028906000191690557f73746f726167653a64616f3a706f696e747300000000000000000000000000006029906000191690557f73746f726167653a64616f3a7370656369616c00000000000000000000000000602a906000191690557f73746f726167653a64616f3a636f6e6669670000000000000000000000000000602b906000191690557f73746f726167653a64616f3a7374616b65000000000000000000000000000000602c906000191690557f73746f726167653a64616f3a7265776172647300000000000000000000000000602d906000191690557f73746f726167653a64616f3a77686974656c697374696e670000000000000000602e906000191690557f73746f726167653a696e7465726d6564696174653a726573756c747300000000602f906000191690557f743a6467640000000000000000000000000000000000000000000000000000006030906000191690557f743a6467780000000000000000000000000000000000000000000000000000006031906000191690557f743a6261646765000000000000000000000000000000000000000000000000006032906000191690556001603360006101000a81548160ff021916908360ff1602179055506002603360016101000a81548160ff021916908360ff1602179055506003603360026101000a81548160ff021916908360ff1602179055506004603360036101000a81548160ff021916908360ff1602179055506276a7006034557f6d696e5f6467645f7061727469636970616e74000000000000000000000000006035906000191690557f6d696e5f6467645f6d6f64657261746f720000000000000000000000000000006036906000191690557f6d696e5f72657075746174696f6e5f6d6f64657261746f7200000000000000006037906000191690557f6c6f636b696e675f70686173655f6475726174696f6e000000000000000000006038906000191690557f717561727465725f6475726174696f6e000000000000000000000000000000006039906000191690557f766f74696e675f636f6d6d69745f706861736500000000000000000000000000603a906000191690557f766f74696e675f70686173655f746f74616c0000000000000000000000000000603b906000191690557f696e746572696d5f766f74696e675f636f6d6d69745f70686173650000000000603c906000191690557f696e746572696d5f766f74696e675f70686173655f746f74616c000000000000603d906000191690557f64726166745f71756f72756d5f66697865645f6e756d657261746f7200000000603e906000191690557f64726166745f71756f72756d5f66697865645f64656e6f6d696e61746f720000603f906000191690557f64726166745f71756f72756d5f73666163746f725f6e756d657261746f7200006040906000191690557f64726166745f71756f72756d5f73666163746f725f64656e6f6d696e61746f726041906000191690557f766f74655f71756f72756d5f66697865645f6e756d657261746f7200000000006042906000191690557f766f74655f71756f72756d5f66697865645f64656e6f6d696e61746f720000006043906000191690557f766f74655f71756f72756d5f73666163746f725f6e756d657261746f720000006044906000191690557f766f74655f71756f72756d5f73666163746f725f64656e6f6d696e61746f72006045906000191690557f66696e616c5f7265776172645f73666163746f725f6e756d657261746f7200006046906000191690557f66696e616c5f7265776172645f73666163746f725f64656e6f6d696e61746f726047906000191690557f64726166745f71756f74615f6e756d657261746f7200000000000000000000006048906000191690557f64726166745f71756f74615f64656e6f6d696e61746f720000000000000000006049906000191690557f766f74696e675f71756f74615f6e756d657261746f7200000000000000000000604a906000191690557f766f74696e675f71756f74615f64656e6f6d696e61746f720000000000000000604b906000191690557f6d696e696d616c5f717000000000000000000000000000000000000000000000604c906000191690557f717561727465725f706f696e745f7363616c696e675f666163746f7200000000604d906000191690557f7265705f706f696e745f7363616c696e675f666163746f720000000000000000604e906000191690557f6d696e696d616c5f6d6f645f7170000000000000000000000000000000000000604f906000191690557f6d6f645f71705f7363616c696e675f666163746f7200000000000000000000006050906000191690557f6d6f645f7265705f706f696e745f7363616c696e675f666163746f72000000006051906000191690557f717561727465725f706f696e745f64726166745f766f746500000000000000006052906000191690557f717561727465725f706f696e745f766f746500000000000000000000000000006053906000191690557f717561727465725f706f696e745f696e746572696d5f766f74650000000000006054906000191690557f715f705f6d696c6573746f6e655f636f6d706c6574696f6e00000000000000006055906000191690557f626f6e75735f72657075746174696f6e5f6e756d657261746f720000000000006056906000191690557f626f6e75735f72657075746174696f6e5f64656e6f6d696e61746f72000000006057906000191690557f7370656369616c5f70726f706f73616c5f636f6d6d69745f70686173650000006058906000191690557f7370656369616c5f70726f706f73616c5f70686173655f746f74616c000000006059906000191690557f636f6e6669675f7370656369616c5f71756f74615f6e756d657261746f720000605a906000191690557f636f6e6669675f7370656369616c5f71756f74615f64656e6f6d696e61746f72605b906000191690557f7370656369616c5f71756f72756d5f6e756d657261746f720000000000000000605c906000191690557f7370656369616c5f71756f72756d5f64656e6f6d696e61746f72000000000000605d906000191690557f636f6e6669675f6d61785f72657075746174696f6e5f646564756374696f6e00605e906000191690557f636f6e6669675f70756e6973686d656e745f6e6f745f6c6f636b696e67000000605f906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f6e756d00000000006060906000191690557f636f6e6669675f7265705f7065725f65787472615f71705f64656e00000000006061906000191690557f636f6e6669675f6d61785f6d5f72705f646564756374696f6e000000000000006062906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f6e756d0000006063906000191690557f636f6e6669675f7265705f7065725f65787472615f6d5f71705f64656e0000006064906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f6e756d000000000000000000006065906000191690557f636f6e6669675f6d6f645f706f7274696f6e5f64656e000000000000000000006066906000191690557f636f6e6669675f64726166745f766f74696e675f7068617365000000000000006067906000191690557f636f6e6669675f72705f626f6f73745f7065725f6261646765000000000000006068906000191690557f636f6e6669675f636c61696d696e675f646561646c696e6500000000000000006069906000191690557f636f6e6669675f70726570726f706f73616c5f636f6c6c61746572616c000000606a906000191690557f636f6e6669675f6d61785f66756e64696e675f6e6f6e44696769780000000000606b906000191690557f636f6e6669675f6d61785f6d696c6573746f6e65735f6e6f6e44696769780000606c906000191690557f636f6e6669675f6e6f6e44696769785f70726f706f73616c5f63617000000000606d906000191690557f636f6e6669675f646561645f6475726174696f6e000000000000000000000000606e906000191690557f636f6e6669675f63765f72657075746174696f6e000000000000000000000000606f906000191690553480156200113457600080fd5b5060405160208062003c5a833981018060405281019080805190602001909291905050506200117560285482620011ad640100000000026401000000009004565b15156200118157600080fd5b6200119a6200143e640100000000026401000000009004565b1515620011a657600080fd5b5062001a39565b6000808273ffffffffffffffffffffffffffffffffffffffff16636d19a8826040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200121557600080fd5b505af11580156200122a573d6000803e3d6000fd5b505050506040513d60208110156200124157600080fd5b81019080805190602001909291905050509050600015158115151415620014325730600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181600019169055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0f6ef4a600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620013df57600080fd5b505af1158015620013f4573d6000803e3d6000fd5b505050506040513d60208110156200140b57600080fd5b810190808051906020019092919050505015156200142857600080fd5b6001915062001437565b600091505b5092915050565b60008015156070600a0160009054906101000a900460ff1615151415156200146557600080fd5b60006070600b018190555060016070600a0160006101000a81548160ff021916908315150217905550620014ca60017f726f6f74000000000000000000000000000000000000000000000000000000006200152e640100000000026401000000009004565b506200150960017f726f6f7400000000000000000000000000000000000000000000000000000000600062001584640100000000026401000000009004565b505062001529600132600062001706640100000000026401000000009004565b905090565b600080831115156200153f57600080fd5b6000600102600019168260001916141515156200155b57600080fd5b816070600901600085815260200190815260200160002081600019169055506001905092915050565b6000806000851115156200159757600080fd5b600060010260001916620015ba8662001a19640100000000026401000000009004565b6000191614151515620015cc57600080fd5b6070600b01600081546001019190508190559050607060000173__DoublyLinkedList______________________63d372d5f69091836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156200165a57600080fd5b505af41580156200166f573d6000803e3d6000fd5b505050506040513d60208110156200168657600080fd5b810190808051906020019092919050505050846070600701600083815260200190815260200160002060020181905550836070600701600083815260200190815260200160002060000181600019169055508260706007016000838152602001908152602001600020600101816000191690555060019150935093915050565b60008015156070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161515148015620017c457506000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015620017eb57506000607060070160008681526020019081526020016000206002015414155b1562001a0d5760016070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555083607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550607060060173__DoublyLinkedList______________________639682eb12909186600102866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156200196357600080fd5b505af415801562001978573d6000803e3d6000fd5b505050506040513d60208110156200198f57600080fd5b810190808051906020019092919050505050816070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181600019169055506001905062001a12565b600090505b9392505050565b600060706009016000838152602001908152602001600020549050919050565b6122118062001a496000396000f300608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec1461014e57806307ded7c0146101a55780631d8b86b41461020057806320a4c22d1461022b57806327d0055914610256578063339f38b6146102a957806338eeb187146102f25780633943380c1461036357806339d20a5f146103965780633f83acff146104035780634a9aedc41461047457806350c7e73b146104cf5780635dcea2cf14610540578063657dcf0b146105a85780638a05cbe61461060e578063a04e0dce14610669578063ba16cfc7146106dc578063c31d02b214610707578063c32bebb51461075e578063c97f5104146107c4578063db4ecbc114610855578063dbee9e5b146108ac578063e17078c3146108f1578063eae2083f14610932578063ee9589aa146109c3575b600080fd5b34801561015a57600080fd5b50610163610a04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190929190505050610a29565b005b34801561020c57600080fd5b50610215610ad6565b6040518082815260200191505060405180910390f35b34801561023757600080fd5b50610240610aea565b6040518082815260200191505060405180910390f35b34801561026257600080fd5b5061028f600480360381019080803590602001909291908035600019169060200190929190505050610afe565b604051808215151515815260200191505060405180910390f35b3480156102b557600080fd5b506102d460048036038101908080359060200190929190505050610b34565b60405180826000191660001916815260200191505060405180910390f35b3480156102fe57600080fd5b506103216004803603810190808035600019169060200190929190505050610b54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036f57600080fd5b50610378610b6b565b60405180826000191660001916815260200191505060405180910390f35b3480156103a257600080fd5b506103d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b71565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b34801561040f57600080fd5b506104326004803603810190808035600019169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048057600080fd5b506104b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d16565b604051808215151515815260200191505060405180910390f35b3480156104db57600080fd5b506104fe6004803603810190808035600019169060200190929190505050610d33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054c57600080fd5b506105876004803603810190808035906020019092919080356000191690602001909291908035600019169060200190929190505050610d4a565b60405180831515151581526020018281526020019250505060405180910390f35b3480156105b457600080fd5b506105d360048036038101908080359060200190929190505050610d8a565b604051808581526020018460001916600019168152602001836000191660001916815260200182815260200194505050505060405180910390f35b34801561061a57600080fd5b5061064f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eec565b604051808215151515815260200191505060405180910390f35b34801561067557600080fd5b506106c260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610f20565b604051808215151515815260200191505060405180910390f35b3480156106e857600080fd5b506106f1610f58565b6040518082815260200191505060405180910390f35b34801561071357600080fd5b50610748600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b6040518082815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fd6565b6040518083600019166000191681526020018281526020019250505060405180910390f35b3480156107d057600080fd5b506108136004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611068565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086157600080fd5b5061086a611081565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b857600080fd5b506108db60048036038101908080356000191690602001909291905050506110a7565b6040518082815260200191505060405180910390f35b3480156108fd57600080fd5b5061091c600480360381019080803590602001909291905050506110be565b6040518082815260200191505060405180910390f35b34801561093e57600080fd5b506109816004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109cf57600080fd5b506109ee600480360381019080803590602001909291905050506110ee565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a34601a54611105565b1515610a3f57600080fd5b81607c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001816000191690555080607c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b6000610ae5607060000161120f565b905090565b6000610af960706000016112c0565b905090565b6000610b0b601a54611105565b1515610b1657600080fd5b610b208383611371565b9050801515610b2e57600080fd5b92915050565b600060706009016000838152602001908152602001600020549050919050565b6000610b646070600601836113c5565b9050919050565b60015481565b6000806000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250607060070160008481526020019081526020016000206002015491506070600701600084815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490509193909250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b81019080805190602001909291905050509050919050565b600080610d2283610fd6565b905080915050428111915050919050565b6000610d43607060060183611487565b9050919050565b600080610d58601a54611105565b1515610d6357600080fd5b610d6e858585611549565b8092508193505050811515610d8257600080fd5b935093915050565b600080600080607060000173__DoublyLinkedList______________________639500c08e9091876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015610e0957600080fd5b505af4158015610e1d573d6000803e3d6000fd5b505050506040513d6020811015610e3357600080fd5b810190808051906020019092919050505015610eb557607060070160008681526020019081526020016000206002015493506070600701600086815260200190815260200160002060000154925060706007016000868152602001908152602001600020600101549150610eae6070600601866001026116b5565b9050610ee5565b600093507f696e76616c696400000000000000000000000000000000000000000000000000925060009150600090505b9193509193565b6000610ef9601a54611105565b1515610f0457600080fd5b610f0d82611777565b9050801515610f1b57600080fd5b919050565b6000610f2d601a54611105565b1515610f3857600080fd5b610f43848484611ac6565b9050801515610f5157600080fd5b9392505050565b6000610f676070600001611dd2565b905090565b600080607060080160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506070600701600082815260200190815260200160002060020154915050919050565b600080607c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549150607c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050915091565b600061107960706006018484611e83565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110b76070600601836116b5565b9050919050565b60006110ce607060000183611f7a565b9050919050565b60006110e660706006018484612034565b905092915050565b60006110fe60706000018361212b565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561119f57600080fd5b505af11580156111b3573d6000803e3d6000fd5b505050506040513d60208110156111c957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008173__DoublyLinkedList______________________631240ff5a90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561127e57600080fd5b505af4158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b81019080805190602001909291905050509050919050565b60008173__DoublyLinkedList______________________633ae6974290916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561132f57600080fd5b505af4158015611343573d6000803e3d6000fd5b505050506040513d602081101561135957600080fd5b81019080805190602001909291905050509050919050565b6000808311151561138157600080fd5b60006001026000191682600019161415151561139c57600080fd5b816070600901600085815260200190815260200160002081600019169055506001905092915050565b60008273__DoublyLinkedList______________________63b0c29efb9091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561144457600080fd5b505af4158015611458573d6000803e3d6000fd5b505050506040513d602081101561146e57600080fd5b8101908080519060200190929190505050905092915050565b60008273__DoublyLinkedList______________________63c501bf569091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561150657600080fd5b505af415801561151a573d6000803e3d6000fd5b505050506040513d602081101561153057600080fd5b8101908080519060200190929190505050905092915050565b60008060008511151561155b57600080fd5b60006001026000191661156d86610b34565b600019161415151561157e57600080fd5b6070600b01600081546001019190508190559050607060000173__DoublyLinkedList______________________63d372d5f69091836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561160b57600080fd5b505af415801561161f573d6000803e3d6000fd5b505050506040513d602081101561163557600080fd5b810190808051906020019092919050505050846070600701600083815260200190815260200160002060020181905550836070600701600083815260200190815260200160002060000181600019169055508260706007016000838152602001908152602001600020600101816000191690555060019150935093915050565b60008273__DoublyLinkedList______________________6355a0a1bf9091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561173457600080fd5b505af4158015611748573d6000803e3d6000fd5b505050506040513d602081101561175e57600080fd5b8101908080519060200190929190505050905092915050565b600080607060080160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060018114801561188d57506001607060060173__DoublyLinkedList______________________6355a0a1bf9091846001026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561185057600080fd5b505af4158015611864573d6000803e3d6000fd5b505050506040513d602081101561187a57600080fd5b8101908080519060200190929190505050145b1561189b5760009150611ac0565b60006070600701600083815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506070600701600082815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549060ff02191690555050607060060173__DoublyLinkedList______________________63b598c31a909183600102866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b505050506040513d6020811015611aac57600080fd5b810190808051906020019092919050505091505b50919050565b60008015156070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161515148015611b8357506000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015611ba957506000607060070160008681526020019081526020016000206002015414155b15611dc65760016070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555083607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550607060060173__DoublyLinkedList______________________639682eb12909186600102866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d1f57600080fd5b505af4158015611d33573d6000803e3d6000fd5b505050506040513d6020811015611d4957600080fd5b810190808051906020019092919050505050816070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001816000191690555060019050611dcb565b600090505b9392505050565b60008173__DoublyLinkedList______________________635e0d4aa990916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611e4157600080fd5b505af4158015611e55573d6000803e3d6000fd5b505050506040513d6020811015611e6b57600080fd5b81019080805190602001909291905050509050919050565b60008373__DoublyLinkedList______________________6320482030909185856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611f3657600080fd5b505af4158015611f4a573d6000803e3d6000fd5b505050506040513d6020811015611f6057600080fd5b810190808051906020019092919050505090509392505050565b60008273__DoublyLinkedList______________________6340c6bb189091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015611ff157600080fd5b505af4158015612005573d6000803e3d6000fd5b505050506040513d602081101561201b57600080fd5b8101908080519060200190929190505050905092915050565b60008373__DoublyLinkedList______________________63675a4ef0909185856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156120e757600080fd5b505af41580156120fb573d6000803e3d6000fd5b505050506040513d602081101561211157600080fd5b810190808051906020019092919050505090509392505050565b60008273__DoublyLinkedList______________________63ec40b8979091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156121a257600080fd5b505af41580156121b6573d6000803e3d6000fd5b505050506040513d60208110156121cc57600080fd5b81019080805190602001909291905050509050929150505600a165627a7a72305820cf1f2e5cb9a278659448d43f151cb412cb7537765d9ee426d270af6495f0b2840029",
  "deployedBytecode": "0x608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec1461014e57806307ded7c0146101a55780631d8b86b41461020057806320a4c22d1461022b57806327d0055914610256578063339f38b6146102a957806338eeb187146102f25780633943380c1461036357806339d20a5f146103965780633f83acff146104035780634a9aedc41461047457806350c7e73b146104cf5780635dcea2cf14610540578063657dcf0b146105a85780638a05cbe61461060e578063a04e0dce14610669578063ba16cfc7146106dc578063c31d02b214610707578063c32bebb51461075e578063c97f5104146107c4578063db4ecbc114610855578063dbee9e5b146108ac578063e17078c3146108f1578063eae2083f14610932578063ee9589aa146109c3575b600080fd5b34801561015a57600080fd5b50610163610a04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190929190505050610a29565b005b34801561020c57600080fd5b50610215610ad6565b6040518082815260200191505060405180910390f35b34801561023757600080fd5b50610240610aea565b6040518082815260200191505060405180910390f35b34801561026257600080fd5b5061028f600480360381019080803590602001909291908035600019169060200190929190505050610afe565b604051808215151515815260200191505060405180910390f35b3480156102b557600080fd5b506102d460048036038101908080359060200190929190505050610b34565b60405180826000191660001916815260200191505060405180910390f35b3480156102fe57600080fd5b506103216004803603810190808035600019169060200190929190505050610b54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036f57600080fd5b50610378610b6b565b60405180826000191660001916815260200191505060405180910390f35b3480156103a257600080fd5b506103d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b71565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b34801561040f57600080fd5b506104326004803603810190808035600019169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048057600080fd5b506104b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d16565b604051808215151515815260200191505060405180910390f35b3480156104db57600080fd5b506104fe6004803603810190808035600019169060200190929190505050610d33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054c57600080fd5b506105876004803603810190808035906020019092919080356000191690602001909291908035600019169060200190929190505050610d4a565b60405180831515151581526020018281526020019250505060405180910390f35b3480156105b457600080fd5b506105d360048036038101908080359060200190929190505050610d8a565b604051808581526020018460001916600019168152602001836000191660001916815260200182815260200194505050505060405180910390f35b34801561061a57600080fd5b5061064f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eec565b604051808215151515815260200191505060405180910390f35b34801561067557600080fd5b506106c260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610f20565b604051808215151515815260200191505060405180910390f35b3480156106e857600080fd5b506106f1610f58565b6040518082815260200191505060405180910390f35b34801561071357600080fd5b50610748600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b6040518082815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fd6565b6040518083600019166000191681526020018281526020019250505060405180910390f35b3480156107d057600080fd5b506108136004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611068565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086157600080fd5b5061086a611081565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b857600080fd5b506108db60048036038101908080356000191690602001909291905050506110a7565b6040518082815260200191505060405180910390f35b3480156108fd57600080fd5b5061091c600480360381019080803590602001909291905050506110be565b6040518082815260200191505060405180910390f35b34801561093e57600080fd5b506109816004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109cf57600080fd5b506109ee600480360381019080803590602001909291905050506110ee565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a34601a54611105565b1515610a3f57600080fd5b81607c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001816000191690555080607c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b6000610ae5607060000161120f565b905090565b6000610af960706000016112c0565b905090565b6000610b0b601a54611105565b1515610b1657600080fd5b610b208383611371565b9050801515610b2e57600080fd5b92915050565b600060706009016000838152602001908152602001600020549050919050565b6000610b646070600601836113c5565b9050919050565b60015481565b6000806000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250607060070160008481526020019081526020016000206002015491506070600701600084815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490509193909250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050506040513d6020811015610cfe57600080fd5b81019080805190602001909291905050509050919050565b600080610d2283610fd6565b905080915050428111915050919050565b6000610d43607060060183611487565b9050919050565b600080610d58601a54611105565b1515610d6357600080fd5b610d6e858585611549565b8092508193505050811515610d8257600080fd5b935093915050565b600080600080607060000173__DoublyLinkedList______________________639500c08e9091876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015610e0957600080fd5b505af4158015610e1d573d6000803e3d6000fd5b505050506040513d6020811015610e3357600080fd5b810190808051906020019092919050505015610eb557607060070160008681526020019081526020016000206002015493506070600701600086815260200190815260200160002060000154925060706007016000868152602001908152602001600020600101549150610eae6070600601866001026116b5565b9050610ee5565b600093507f696e76616c696400000000000000000000000000000000000000000000000000925060009150600090505b9193509193565b6000610ef9601a54611105565b1515610f0457600080fd5b610f0d82611777565b9050801515610f1b57600080fd5b919050565b6000610f2d601a54611105565b1515610f3857600080fd5b610f43848484611ac6565b9050801515610f5157600080fd5b9392505050565b6000610f676070600001611dd2565b905090565b600080607060080160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506070600701600082815260200190815260200160002060020154915050919050565b600080607c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549150607c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050915091565b600061107960706006018484611e83565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110b76070600601836116b5565b9050919050565b60006110ce607060000183611f7a565b9050919050565b60006110e660706006018484612034565b905092915050565b60006110fe60706000018361212b565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561119f57600080fd5b505af11580156111b3573d6000803e3d6000fd5b505050506040513d60208110156111c957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008173__DoublyLinkedList______________________631240ff5a90916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561127e57600080fd5b505af4158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b81019080805190602001909291905050509050919050565b60008173__DoublyLinkedList______________________633ae6974290916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561132f57600080fd5b505af4158015611343573d6000803e3d6000fd5b505050506040513d602081101561135957600080fd5b81019080805190602001909291905050509050919050565b6000808311151561138157600080fd5b60006001026000191682600019161415151561139c57600080fd5b816070600901600085815260200190815260200160002081600019169055506001905092915050565b60008273__DoublyLinkedList______________________63b0c29efb9091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561144457600080fd5b505af4158015611458573d6000803e3d6000fd5b505050506040513d602081101561146e57600080fd5b8101908080519060200190929190505050905092915050565b60008273__DoublyLinkedList______________________63c501bf569091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561150657600080fd5b505af415801561151a573d6000803e3d6000fd5b505050506040513d602081101561153057600080fd5b8101908080519060200190929190505050905092915050565b60008060008511151561155b57600080fd5b60006001026000191661156d86610b34565b600019161415151561157e57600080fd5b6070600b01600081546001019190508190559050607060000173__DoublyLinkedList______________________63d372d5f69091836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561160b57600080fd5b505af415801561161f573d6000803e3d6000fd5b505050506040513d602081101561163557600080fd5b810190808051906020019092919050505050846070600701600083815260200190815260200160002060020181905550836070600701600083815260200190815260200160002060000181600019169055508260706007016000838152602001908152602001600020600101816000191690555060019150935093915050565b60008273__DoublyLinkedList______________________6355a0a1bf9091846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561173457600080fd5b505af4158015611748573d6000803e3d6000fd5b505050506040513d602081101561175e57600080fd5b8101908080519060200190929190505050905092915050565b600080607060080160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060018114801561188d57506001607060060173__DoublyLinkedList______________________6355a0a1bf9091846001026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600019166000191681526020019250505060206040518083038186803b15801561185057600080fd5b505af4158015611864573d6000803e3d6000fd5b505050506040513d602081101561187a57600080fd5b8101908080519060200190929190505050145b1561189b5760009150611ac0565b60006070600701600083815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506070600701600082815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549060ff02191690555050607060060173__DoublyLinkedList______________________63b598c31a909183600102866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a8257600080fd5b505af4158015611a96573d6000803e3d6000fd5b505050506040513d6020811015611aac57600080fd5b810190808051906020019092919050505091505b50919050565b60008015156070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161515148015611b8357506000607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015611ba957506000607060070160008681526020019081526020016000206002015414155b15611dc65760016070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555083607060080160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550607060060173__DoublyLinkedList______________________639682eb12909186600102866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d1f57600080fd5b505af4158015611d33573d6000803e3d6000fd5b505050506040513d6020811015611d4957600080fd5b810190808051906020019092919050505050816070600701600086815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001816000191690555060019050611dcb565b600090505b9392505050565b60008173__DoublyLinkedList______________________635e0d4aa990916040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611e4157600080fd5b505af4158015611e55573d6000803e3d6000fd5b505050506040513d6020811015611e6b57600080fd5b81019080805190602001909291905050509050919050565b60008373__DoublyLinkedList______________________6320482030909185856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611f3657600080fd5b505af4158015611f4a573d6000803e3d6000fd5b505050506040513d6020811015611f6057600080fd5b810190808051906020019092919050505090509392505050565b60008273__DoublyLinkedList______________________6340c6bb189091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015611ff157600080fd5b505af4158015612005573d6000803e3d6000fd5b505050506040513d602081101561201b57600080fd5b8101908080519060200190929190505050905092915050565b60008373__DoublyLinkedList______________________63675a4ef0909185856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156120e757600080fd5b505af41580156120fb573d6000803e3d6000fd5b505050506040513d602081101561211157600080fd5b810190808051906020019092919050505090509392505050565b60008273__DoublyLinkedList______________________63ec40b8979091846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156121a257600080fd5b505af41580156121b6573d6000803e3d6000fd5b505050506040513d60208110156121cc57600080fd5b81019080805190602001909291905050509050929150505600a165627a7a72305820cf1f2e5cb9a278659448d43f151cb412cb7537765d9ee426d270af6495f0b2840029",
  "sourceMap": "190:2592:54:-;;;177:3:3;169:12;;147:34;;;;;;;219:3;187:36;;;;;;;;;;;;;;;;;;;;230:65;;;;;;;;301:53;;;;;;;;360:61;;;;;;;;427:57;;;;;;;;490:55;;;;;;;;551:59;;;;;;;;643:1;617:27;;677:1;650:28;;713:1;684:30;;758:1;721:38;;800:1;765:36;;843:1;807:37;;851:52;;;;;;;;909:66;;;;;;;;981:80;;;;;;;;1097:28;;;;;;;;1131:62;;;;;;;;1199:56;;;;;;;;1261:42;;;;;;;;1309:56;;;;;;;;1371:65;;;;;;;;1442:46;;;;;;;;1494:60;;;;;;;;1560:66;;;;;;;;1632:40;;;;;;;;1678:60;;;;;;;;1744:54;;;;;;;;1804:52;;;;;;;;1888:46;;;;;;;;1940:54;;;;;;;;2000:60;;;;;;;;2066:66;;;;;;;;2164:44;;;;;;;;2214:60;;;;;;;;2280;;;;;;;;2346:62;;;;;;;;2414:58;;;;;;;;2478:60;;;;;;;;2544:58;;;;;;;;2608:56;;;;;;;;2670:60;;;;;;;;2736:70;;;;;;;;2812:78;;;;;;;;2897:36;;;;;;;;2939;;;;;;;;2981:40;;;;;;;;3047:1;3028:20;;;;;;;;;;;;;;;;;;;;3077:1;3054:24;;;;;;;;;;;;;;;;;;;;3103:1;3084:20;;;;;;;;;;;;;;;;;;;;3135:1;3110:26;;;;;;;;;;;;;;;;;;;;3170:7;3143:34;;3184:57;;;;;;;;3247:62;;;;;;;;3315:76;;;;;;;;3398:64;;;;;;;;3468:52;;;;;;;;3526:58;;;;;;;;3590:56;;;;;;;;3652:67;;;;;;;;3725:65;;;;;;;;3797:84;;;;;;;;3887:88;;;;;;;;3981:87;;;;;;;;4074:91;;;;;;;;4171:84;;;;;;;;4261:88;;;;;;;;4355:87;;;;;;;;4448:91;;;;;;;;4545:87;;;;;;;;4638:91;;;;;;;;4736:62;;;;;;;;4804:66;;;;;;;;4876:64;;;;;;;;4946:68;;;;;;;;5021:51;;;;;;;;5078:76;;;;;;;;5160:75;;;;;;;;5242:65;;;;;;;;5313:79;;;;;;;;5398:89;;;;;;;;5494:68;;;;;;;;5568:56;;;;;;;;5630:72;;;;;;;;5740:91;;;;;;;;5838:72;;;;;;;;5916:76;;;;;;;;5999:78;;;;;;;;6083:76;;;;;;;;6166:73;;;;;;;;6245:77;;;;;;;;6329;;;;;;;;6412:81;;;;;;;;6500:79;;;;;;;;6585:75;;;;;;;;6667:74;;;;;;;;6747;;;;;;;;6828:83;;;;;;;;6917:86;;;;;;;;7009;;;;;;;;7102:67;;;;;;;;7175;;;;;;;;7249:63;;;;;;;;7319:77;;;;;;;;7403:66;;;;;;;;7476:71;;;;;;;;7554:72;;;;;;;;7632:78;;;;;;;;7716:82;;;;;;;;7805:62;;;;;;;;7873:68;;;;;;;;771:163:54;8:9:-1;5:2;;;30:1;27;20:12;5:2;771:163:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;839:46;844:29;;875:9;839:4;;;:46;;;:::i;:::-;831:55;;;;;;;;904:22;:20;;;:22;;;:::i;:::-;896:31;;;;;;;;771:163;190:2592;;1530:450:67;1617:13;1640:15;1675:9;1658:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:44:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:44:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1658:44:67;;;;;;;;;;;;;;;;1640:62;;1726:5;1712:19;;:10;:19;;;1708:268;;;1768:4;1741:16;;:32;;;;;;;;;;;;;;;;;;1792:9;1781:8;;:20;;;;;;;;;;;;;;;;;;1815:4;1809:3;:10;;;;;;;1852:8;;;;;;;;;;;1835:49;;;1885:3;;1890:16;;;;;;;;;;;1835:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1835:72:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1835:72:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1835:72:67;;;;;;;;;;;;;;;;1827:81;;;;;;;;1927:4;1916:15;;1708:268;;;1964:5;1953:16;;1708:268;1530:450;;;;;:::o;1116:343:68:-;1188:13;1241:5;1219:27;;:6;:18;;;;;;;;;;;;:27;;;1211:36;;;;;;;;1275:1;1253:6;:19;;:23;;;;1303:4;1282:6;:18;;;:25;;;;;;;;;;;;;;;;;;1313:31;1334:1;1313:31;:20;;;:31;;;:::i;:::-;;1350:36;1372:1;1350:36;;:21;;;:36;;;:::i;:::-;;;1403:51;1437:1;1440:9;1403:51;:33;;;:51;;;:::i;:::-;1392:62;;1116:343;:::o;1667:251::-;1770:13;1812:1;1801:8;:12;1793:21;;;;;;;;1845:3;1837:12;;1828:21;;;:5;:21;;;;;1820:30;;;;;;;;1887:5;1856:6;:18;;:28;1875:8;1856:28;;;;;;;;;;;:36;;;;;;;1909:4;1898:15;;1667:251;;;;:::o;2525:499::-;2648:13;2663:17;2709:1;2698:8;:12;2690:21;;;;;;;;2756:3;2748:12;;2725:35;;;:19;2735:8;2725:9;;;:19;;;:::i;:::-;:35;;;;;2717:44;;;;;;;;2781:6;:19;;;2779:21;;;;;;;;;;2767:33;;2806:6;:13;;:20;;;;2827:9;2806:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2806:31:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2806:31:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2806:31:68;;;;;;;;;;;;;;;;;2884:8;2843:6;:19;;:30;2863:9;2843:30;;;;;;;;;;;:38;;:49;;;;2936:5;2898:6;:19;;:30;2918:9;2898:30;;;;;;;;;;;:35;;:43;;;;;;;2989:9;2947:6;:19;;:30;2967:9;2947:30;;;;;;;;;;;:39;;:51;;;;;;;3015:4;3004:15;;2525:499;;;;;;:::o;4118:682::-;4254:13;4348:5;4281:72;;:6;:19;;:30;4301:9;4281:30;;;;;;;;;;;:49;;:56;4331:5;4281:56;;;;;;;;;;;;;;;:63;;;;;;;;;;;;:72;;;:115;;;;;4395:1;4357:6;:27;;:34;4385:5;4357:34;;;;;;;;;;;;;;;;:39;4281:115;:162;;;;;4442:1;4400:6;:19;;:30;4420:9;4400:30;;;;;;;;;;;:38;;;:43;;4281:162;4277:519;;;4520:4;4454:6;:19;;:30;4474:9;4454:30;;;;;;;;;;;:49;;:56;4504:5;4454:56;;;;;;;;;;;;;;;:63;;;:70;;;;;;;;;;;;;;;;;;4569:9;4532:6;:27;;:34;4560:5;4532:34;;;;;;;;;;;;;;;:46;;;;4586:6;:24;;:31;;;;4626:9;4618:18;;4638:5;4586:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:58:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4586:58:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4586:58:68;;;;;;;;;;;;;;;;;4720:9;4652:6;:19;;:30;4672:9;4652:30;;;;;;;;;;;:49;;:56;4702:5;4652:56;;;;;;;;;;;;;;;:65;;:77;;;;;;;4748:4;4737:15;;4277:519;;;4784:5;4773:16;;4277:519;4118:682;;;;;:::o;2053:159::-;2148:13;2179:6;:18;;:28;2198:8;2179:28;;;;;;;;;;;;2171:36;;2053:159;;;:::o;190:2592:54:-;;;;;;;",
  "deployedSourceMap": "190:2592:54:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:240:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2070:240:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6589:164:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6589:164:68;;;;;;;;;;;;;;;;;;;;;;;7973:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7973:168:68;;;;;;;;;;;;;;;;;;;;;;;1258:248:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1258:248:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2053:159:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2053:159:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8278:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8278:224:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:18:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6136:345:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6136:345:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2544:236:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2544:236:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8638:222:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8638:222:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;940:312:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;940:312:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3245:605:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3245:605:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1824:240:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1824:240:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1512:306;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1512:306:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6859:162:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6859:162:68;;;;;;;;;;;;;;;;;;;;;;;5666:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5666:240:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:222:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2316:222:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:268:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9580:268:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:31:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:31:67;;;;;;;;;;;;;;;;;;;;;;;;;;;10005:234:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10005:234:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7223:225:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9088:260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9088:260:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7642:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7642:217:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23:67;;;;;;;;;;;;;:::o;2070:240:54:-;2180:32;2190:21;;2180:9;:32::i;:::-;2172:41;;;;;;;;2244:4;2223:7;:14;2231:5;2223:14;;;;;;;;;;;;;;;:18;;:25;;;;;;;2289:14;2258:7;:14;2266:5;2258:14;;;;;;;;;;;;;;;:28;;:45;;;;2070:240;;;:::o;6589:164:68:-;6673:17;6712:36;6734:6;:13;;6712:21;:36::i;:::-;6700:48;;6589:164;:::o;7973:168::-;8058:21;8105:31;8122:6;:13;;8105:16;:31::i;:::-;8089:47;;7973:168;:::o;1258:248:54:-;1344:13;1381:32;1391:21;;1381:9;:32::i;:::-;1373:41;;;;;;;;1435:37;1456:8;1466:5;1435:20;:37::i;:::-;1424:48;;1490:8;1482:17;;;;;;;;1258:248;;;;:::o;2053:159:68:-;2148:13;2179:6;:18;;:28;2198:8;2179:28;;;;;;;;;;;;2171:36;;2053:159;;;:::o;8278:224::-;8387:13;8418:79;8452:6;:24;;8486:9;8418:33;:79::i;:::-;8410:87;;8278:224;;;:::o;264:18:67:-;;;;:::o;6136:345:68:-;6228:17;6247:16;6265:17;6304:6;:27;;:34;6332:5;6304:34;;;;;;;;;;;;;;;;6292:46;;6355:6;:19;;:30;6375:9;6355:30;;;;;;;;;;;:38;;;6344:49;;6411:6;:19;;:30;6431:9;6411:30;;;;;;;;;;;:49;;:56;6461:5;6411:56;;;;;;;;;;;;;;;:65;;;6399:77;;6136:345;;;;;:::o;2380:179:67:-;2470:17;2526:8;;;;;;;;;;;2509:39;;;2549:4;2509:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:45:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:45:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:45:67;;;;;;;;;;;;;;;;2497:57;;2380:179;;;:::o;2544:236:54:-;2629:14;2659:22;2711:20;2725:5;2711:13;:20::i;:::-;2691:40;;;;;;2770:3;2753:14;:20;2741:32;;2544:236;;;;:::o;8638:222:68:-;8746:13;8777:78;8810:6;:24;;8844:9;8777:32;:78::i;:::-;8769:86;;8638:222;;;:::o;940:312:54:-;1046:13;1061:17;1102:32;1112:21;;1102:9;:32::i;:::-;1094:41;;;;;;;;1169:49;1191:8;1201:5;1208:9;1169:21;:49::i;:::-;1145:73;;;;;;;;1236:8;1228:17;;;;;;;;940:312;;;;;;:::o;3245:605:68:-;3342:16;3360:13;3375:17;3394:22;3430:6;:13;;:24;;;;3455:9;3430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:35:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3430:35:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3430:35:68;;;;;;;;;;;;;;;;3426:420;;;3486:6;:19;;:30;3506:9;3486:30;;;;;;;;;;;:38;;;3475:49;;3540:6;:19;;:30;3560:9;3540:30;;;;;;;;;;;:35;;;3532:43;;3595:6;:19;;:30;3615:9;3595:30;;;;;;;;;;;:39;;;3583:51;;3659:74;3688:6;:24;;3722:9;3714:18;;3659:28;:74::i;:::-;3642:91;;3426:420;;;3765:1;3754:12;;3774:17;;;3799:14;;;3838:1;3821:18;;3426:420;3245:605;;;;;:::o;1824:240:54:-;1905:13;1942:32;1952:21;;1942:9;:32::i;:::-;1934:41;;;;;;;;1996:34;2024:5;1996:27;:34::i;:::-;1985:45;;2048:8;2040:17;;;;;;;;1824:240;;;:::o;1512:306::-;1631:13;1668:32;1678:21;;1668:9;:32::i;:::-;1660:41;;;;;;;;1722:62;1756:9;1767:5;1774:9;1722:33;:62::i;:::-;1711:73;;1802:8;1794:17;;;;;;;;1512:306;;;;;:::o;6859:162:68:-;6942:17;6981:35;7002:6;:13;;6981:20;:35::i;:::-;6969:47;;6859:162;:::o;5666:240::-;5766:16;5792:17;5812:6;:27;;:34;5840:5;5812:34;;;;;;;;;;;;;;;;5792:54;;5863:6;:19;;:30;5883:9;5863:30;;;;;;;;;;;:38;;;5852:49;;5666:240;;;;:::o;2316:222:54:-;2399:12;2413:22;2458:7;:14;2466:5;2458:14;;;;;;;;;;;;;;;:18;;;2451:25;;2503:7;:14;2511:5;2503:14;;;;;;;;;;;;;;;:28;;;2486:45;;2316:222;;;:::o;9580:268:68:-;9715:13;9746:97;9783:6;:24;;9817:9;9829:13;9746:36;:97::i;:::-;9738:105;;9580:268;;;;:::o;344:31:67:-;;;;;;;;;;;;;:::o;10005:234:68:-;10115:20;10160:74;10189:6;:24;;10223:9;10160:28;:74::i;:::-;10145:89;;10005:234;;;:::o;7223:225::-;7346:17;7385:58;7410:6;:13;;7425:17;7385:24;:58::i;:::-;7373:70;;7223:225;;;:::o;9088:260::-;9219:13;9250:93;9283:6;:24;;9317:9;9329:13;9250:32;:93::i;:::-;9242:101;;9088:260;;;;:::o;7642:217::-;7761:17;7800:54;7821:6;:13;;7836:17;7800:20;:54::i;:::-;7788:66;;7642:217;;;:::o;610:160:67:-;671:12;732:8;;;;;;;;;;;715:39;;;755:9;715:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;715:50:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;715:50:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;715:50:67;;;;;;;;;;;;;;;;701:64;;:10;:64;;;691:74;;610:160;;;:::o;390:182:80:-;518:13;549:5;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:18:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;549:18:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;549:18:80;;;;;;;;;;;;;;;;541:26;;390:182;;;:::o;2071:174::-;2194:14;2227:5;:11;;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2227:13:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2227:13:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2227:13:80;;;;;;;;;;;;;;;;2218:22;;2071:174;;;:::o;1667:251:68:-;1770:13;1812:1;1801:8;:12;1793:21;;;;;;;;1845:3;1837:12;;1828:21;;;:5;:21;;;;;1820:30;;;;;;;;1887:5;1856:6;:18;;:28;1875:8;1856:28;;;;;;;;;;;:36;;;;;;;1909:4;1898:15;;1667:251;;;;:::o;557:248:78:-;734:13;765:5;:16;;;;782:17;765:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;765:35:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;765:35:78;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;765:35:78;;;;;;;;;;;;;;;;757:43;;557:248;;;;:::o;1042:245::-;1218:13;1249:5;:14;;;;1264:17;1249:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1249:33:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1249:33:78;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1249:33:78;;;;;;;;;;;;;;;;1241:41;;1042:245;;;;:::o;2525:499:68:-;2648:13;2663:17;2709:1;2698:8;:12;2690:21;;;;;;;;2756:3;2748:12;;2725:35;;;:19;2735:8;2725:9;:19::i;:::-;:35;;;;;2717:44;;;;;;;;2781:6;:19;;;2779:21;;;;;;;;;;2767:33;;2806:6;:13;;:20;;;;2827:9;2806:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2806:31:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2806:31:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2806:31:68;;;;;;;;;;;;;;;;;2884:8;2843:6;:19;;:30;2863:9;2843:30;;;;;;;;;;;:38;;:49;;;;2936:5;2898:6;:19;;:30;2918:9;2898:30;;;;;;;;;;;:35;;:43;;;;;;;2989:9;2947:6;:19;;:30;2967:9;2947:30;;;;;;;;;;;:39;;:51;;;;;;;3015:4;3004:15;;2525:499;;;;;;:::o;2809:240:78:-;2981:14;3014:5;:11;;;;3026:17;3014:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3014:30:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3014:30:78;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3014:30:78;;;;;;;;;;;;;;;;3005:39;;2809:240;;;;:::o;4948:584:68:-;5040:13;5063:17;5083:6;:27;;:34;5111:5;5083:34;;;;;;;;;;;;;;;;5063:54;;5141:1;5128:9;:14;5127:77;;;;;5202:1;5148:6;:24;;:30;;;;5187:9;5179:18;;5148:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5148:50:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5148:50:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5148:50:68;;;;;;;;;;;;;;;;:55;5127:77;5123:405;;;5225:5;5214:16;;5123:405;;;5317:5;5251:6;:19;;:30;5271:9;5251:30;;;;;;;;;;;:49;;:56;5301:5;5251:56;;;;;;;;;;;;;;;:63;;;:71;;;;;;;;;;;;;;;;;;5367:1;5330:6;:27;;:34;5358:5;5330:34;;;;;;;;;;;;;;;:38;;;;5383:6;:19;;:30;5403:9;5383:30;;;;;;;;;;;:49;;:56;5433:5;5383:56;;;;;;;;;;;;;;;;5376:63;;;;;;;;;;;;;;;;;;;;;;;5458:6;:24;;:36;;;;5503:9;5495:18;;5515:5;5458:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5458:63:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5458:63:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5458:63:68;;;;;;;;;;;;;;;;5447:74;;5123:405;4948:584;;;;:::o;4118:682::-;4254:13;4348:5;4281:72;;:6;:19;;:30;4301:9;4281:30;;;;;;;;;;;:49;;:56;4331:5;4281:56;;;;;;;;;;;;;;;:63;;;;;;;;;;;;:72;;;:115;;;;;4395:1;4357:6;:27;;:34;4385:5;4357:34;;;;;;;;;;;;;;;;:39;4281:115;:162;;;;;4442:1;4400:6;:19;;:30;4420:9;4400:30;;;;;;;;;;;:38;;;:43;;4281:162;4277:519;;;4520:4;4454:6;:19;;:30;4474:9;4454:30;;;;;;;;;;;:49;;:56;4504:5;4454:56;;;;;;;;;;;;;;;:63;;;:70;;;;;;;;;;;;;;;;;;4569:9;4532:6;:27;;:34;4560:5;4532:34;;;;;;;;;;;;;;;:46;;;;4586:6;:24;;:31;;;;4626:9;4618:18;;4638:5;4586:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:58:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4586:58:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4586:58:68;;;;;;;;;;;;;;;;;4720:9;4652:6;:19;;:30;4672:9;4652:30;;;;;;;;;;;:49;;:56;4702:5;4652:56;;;;;;;;;;;;;;;:65;;:77;;;;;;;4748:4;4737:15;;4277:519;;;4784:5;4773:16;;4277:519;4118:682;;;;;:::o;744:179:80:-;871:13;902:5;:14;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;902:16:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;902:16:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;902:16:80;;;;;;;;;;;;;;;;894:24;;744:179;;;:::o;2258:292:78:-;2461:13;2492:5;:19;;;;2512:17;2531:13;2492:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2492:53:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2492:53:78;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2492:53:78;;;;;;;;;;;;;;;;2484:61;;2258:292;;;;;:::o;1653:224:80:-;1807:13;1838:5;:19;;;;1858:13;1838:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1838:34:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1838:34:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1838:34:80;;;;;;;;;;;;;;;;1830:42;;1653:224;;;;:::o;1627:284:78:-;1826:13;1857:5;:15;;;;1873:17;1892:13;1857:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1857:49:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1857:49:78;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1857:49:78;;;;;;;;;;;;;;;;1849:57;;1627:284;;;;;:::o;1176:216:80:-;1326:13;1357:5;:15;;;;1373:13;1357:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1357:30:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1357:30:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1357:30:80;;;;;;;;;;;;;;;;1349:38;;1176:216;;;;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"@digix/cacp-contracts-dao/contracts/ResolverClient.sol\";\nimport \"@digix/cdap/contracts/storage/DirectoryStorage.sol\";\nimport \"../common/DaoConstants.sol\";\n\ncontract DaoIdentityStorage is ResolverClient, DaoConstants, DirectoryStorage {\n\n    // struct for KYC details\n    // doc is the IPFS doc hash for any information regarding this KYC\n    // id_expiration is the UTC timestamp at which this KYC will expire\n    // at any time after this, the user's KYC is invalid, and that user\n    // MUST re-KYC before doing any proposer related operation in DigixDAO\n    struct KycDetails {\n        bytes32 doc;\n        uint256 id_expiration;\n    }\n\n    // a mapping of address to the KYC details\n    mapping (address => KycDetails) kycInfo;\n\n    constructor(address _resolver)\n        public\n    {\n        require(init(CONTRACT_STORAGE_DAO_IDENTITY, _resolver));\n        require(initialize_directory());\n    }\n\n    function create_group(uint256 _role_id, bytes32 _name, bytes32 _document)\n        public\n        returns (bool _success, uint256 _group_id)\n    {\n        require(sender_is(CONTRACT_DAO_IDENTITY));\n        (_success, _group_id) = internal_create_group(_role_id, _name, _document);\n        require(_success);\n    }\n\n    function create_role(uint256 _role_id, bytes32 _name)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_IDENTITY));\n        _success = internal_create_role(_role_id, _name);\n        require(_success);\n    }\n\n    function update_add_user_to_group(uint256 _group_id, address _user, bytes32 _document)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_IDENTITY));\n        _success = internal_update_add_user_to_group(_group_id, _user, _document);\n        require(_success);\n    }\n\n    function update_remove_group_user(address _user)\n        public\n        returns (bool _success)\n    {\n        require(sender_is(CONTRACT_DAO_IDENTITY));\n        _success = internal_destroy_group_user(_user);\n        require(_success);\n    }\n\n    function update_kyc(address _user, bytes32 _doc, uint256 _id_expiration)\n        public\n    {\n        require(sender_is(CONTRACT_DAO_IDENTITY));\n        kycInfo[_user].doc = _doc;\n        kycInfo[_user].id_expiration = _id_expiration;\n    }\n\n    function read_kyc_info(address _user)\n        public\n        view\n        returns (bytes32 _doc, uint256 _id_expiration)\n    {\n        _doc = kycInfo[_user].doc;\n        _id_expiration = kycInfo[_user].id_expiration;\n    }\n\n    function is_kyc_approved(address _user)\n        public\n        view\n        returns (bool _approved)\n    {\n        uint256 _id_expiration;\n        (,_id_expiration) = read_kyc_info(_user);\n        _approved = _id_expiration > now;\n    }\n}\n",
  "sourcePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoIdentityStorage.sol",
  "ast": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoIdentityStorage.sol",
    "exportedSymbols": {
      "DaoIdentityStorage": [
        14083
      ]
    },
    "id": 14084,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13853,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:54"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 13854,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 18629,
        "src": "26:64:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cdap/contracts/storage/DirectoryStorage.sol",
        "file": "@digix/cdap/contracts/storage/DirectoryStorage.sol",
        "id": 13855,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 19322,
        "src": "91:60:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoConstants.sol",
        "file": "../common/DaoConstants.sol",
        "id": 13856,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 1630,
        "src": "152:36:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13857,
              "name": "ResolverClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18628,
              "src": "221:14:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverClient_$18628",
                "typeString": "contract ResolverClient"
              }
            },
            "id": 13858,
            "nodeType": "InheritanceSpecifier",
            "src": "221:14:54"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13859,
              "name": "DaoConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1629,
              "src": "237:12:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoConstants_$1629",
                "typeString": "contract DaoConstants"
              }
            },
            "id": 13860,
            "nodeType": "InheritanceSpecifier",
            "src": "237:12:54"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13861,
              "name": "DirectoryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19321,
              "src": "251:16:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DirectoryStorage_$19321",
                "typeString": "contract DirectoryStorage"
              }
            },
            "id": 13862,
            "nodeType": "InheritanceSpecifier",
            "src": "251:16:54"
          }
        ],
        "contractDependencies": [
          1629,
          18628,
          19321,
          22147,
          22557
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 14083,
        "linearizedBaseContracts": [
          14083,
          19321,
          22557,
          22147,
          1629,
          18628
        ],
        "name": "DaoIdentityStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "DaoIdentityStorage.KycDetails",
            "id": 13867,
            "members": [
              {
                "constant": false,
                "id": 13864,
                "name": "doc",
                "nodeType": "VariableDeclaration",
                "scope": 13867,
                "src": "623:11:54",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 13863,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "623:7:54",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13866,
                "name": "id_expiration",
                "nodeType": "VariableDeclaration",
                "scope": 13867,
                "src": "644:21:54",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 13865,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "644:7:54",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "KycDetails",
            "nodeType": "StructDefinition",
            "scope": 14083,
            "src": "595:77:54",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13871,
            "name": "kycInfo",
            "nodeType": "VariableDeclaration",
            "scope": 14083,
            "src": "725:39:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
              "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails)"
            },
            "typeName": {
              "id": 13870,
              "keyType": {
                "id": 13868,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "734:7:54",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "725:31:54",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails)"
              },
              "valueType": {
                "contractScope": null,
                "id": 13869,
                "name": "KycDetails",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13867,
                "src": "745:10:54",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_KycDetails_$13867_storage_ptr",
                  "typeString": "struct DaoIdentityStorage.KycDetails"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13888,
              "nodeType": "Block",
              "src": "821:113:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13878,
                            "name": "CONTRACT_STORAGE_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "844:29:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13879,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13873,
                            "src": "875:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13877,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "839:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 13880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "839:46:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13876,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "831:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "831:55:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13882,
                  "nodeType": "ExpressionStatement",
                  "src": "831:55:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 13884,
                          "name": "initialize_directory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18726,
                          "src": "904:20:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$",
                            "typeString": "function () returns (bool)"
                          }
                        },
                        "id": 13885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "904:22:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13883,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "896:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "896:31:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13887,
                  "nodeType": "ExpressionStatement",
                  "src": "896:31:54"
                }
              ]
            },
            "documentation": null,
            "id": 13889,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13873,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 13889,
                  "src": "783:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13872,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "783:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "782:19:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "821:0:54"
            },
            "scope": 14083,
            "src": "771:163:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13922,
              "nodeType": "Block",
              "src": "1084:168:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13904,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1112:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13903,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1102:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1102:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13902,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1094:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1094:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13907,
                  "nodeType": "ExpressionStatement",
                  "src": "1094:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 13908,
                          "name": "_success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13898,
                          "src": "1146:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13909,
                          "name": "_group_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13900,
                          "src": "1156:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 13910,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1145:21:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13912,
                          "name": "_role_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13891,
                          "src": "1191:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13913,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13893,
                          "src": "1201:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13914,
                          "name": "_document",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13895,
                          "src": "1208:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13911,
                        "name": "internal_create_group",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18852,
                        "src": "1169:21:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                          "typeString": "function (uint256,bytes32,bytes32) returns (bool,uint256)"
                        }
                      },
                      "id": 13915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1169:49:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "src": "1145:73:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13917,
                  "nodeType": "ExpressionStatement",
                  "src": "1145:73:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13919,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13898,
                        "src": "1236:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13918,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1228:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1228:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13921,
                  "nodeType": "ExpressionStatement",
                  "src": "1228:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13923,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "create_group",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13896,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13891,
                  "name": "_role_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "962:16:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "962:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13893,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "980:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13892,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13895,
                  "name": "_document",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "995:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13894,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "961:52:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13898,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "1046:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13897,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13900,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "1061:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:34:54"
            },
            "scope": 14083,
            "src": "940:312:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13949,
              "nodeType": "Block",
              "src": "1363:143:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13934,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1391:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13933,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1381:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1381:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13932,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1373:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1373:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13937,
                  "nodeType": "ExpressionStatement",
                  "src": "1373:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13938,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13930,
                      "src": "1424:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13940,
                          "name": "_role_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13925,
                          "src": "1456:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13941,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13927,
                          "src": "1466:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13939,
                        "name": "internal_create_role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18762,
                        "src": "1435:20:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (uint256,bytes32) returns (bool)"
                        }
                      },
                      "id": 13942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1435:37:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1424:48:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13944,
                  "nodeType": "ExpressionStatement",
                  "src": "1424:48:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13946,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13930,
                        "src": "1490:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13945,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1482:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1482:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13948,
                  "nodeType": "ExpressionStatement",
                  "src": "1482:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13950,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "create_role",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13925,
                  "name": "_role_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1279:16:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1279:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13927,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1297:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13926,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1297:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1278:33:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13930,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1344:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13929,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1344:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1343:15:54"
            },
            "scope": 14083,
            "src": "1258:248:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13979,
              "nodeType": "Block",
              "src": "1650:168:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13963,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1678:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13962,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1668:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1668:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13961,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1660:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1660:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13966,
                  "nodeType": "ExpressionStatement",
                  "src": "1660:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13967,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13959,
                      "src": "1711:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13969,
                          "name": "_group_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13952,
                          "src": "1756:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13970,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13954,
                          "src": "1767:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13971,
                          "name": "_document",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13956,
                          "src": "1774:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13968,
                        "name": "internal_update_add_user_to_group",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19015,
                        "src": "1722:33:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (uint256,address,bytes32) returns (bool)"
                        }
                      },
                      "id": 13972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1722:62:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1711:73:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13974,
                  "nodeType": "ExpressionStatement",
                  "src": "1711:73:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13976,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13959,
                        "src": "1802:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13975,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1794:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1794:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13978,
                  "nodeType": "ExpressionStatement",
                  "src": "1794:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13980,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_add_user_to_group",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13952,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1546:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1546:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13954,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1565:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1565:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13956,
                  "name": "_document",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1580:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13955,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1545:53:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13959,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1631:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13958,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1631:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1630:15:54"
            },
            "scope": 14083,
            "src": "1512:306:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14003,
              "nodeType": "Block",
              "src": "1924:140:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13989,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1952:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13988,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1942:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1942:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13987,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1934:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1934:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13992,
                  "nodeType": "ExpressionStatement",
                  "src": "1934:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13993,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13985,
                      "src": "1985:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13995,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13982,
                          "src": "2024:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 13994,
                        "name": "internal_destroy_group_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19092,
                        "src": "1996:27:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) returns (bool)"
                        }
                      },
                      "id": 13996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1996:34:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1985:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13998,
                  "nodeType": "ExpressionStatement",
                  "src": "1985:45:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14000,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13985,
                        "src": "2048:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13999,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2040:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 14001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14002,
                  "nodeType": "ExpressionStatement",
                  "src": "2040:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 14004,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_remove_group_user",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13982,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14004,
                  "src": "1858:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13981,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1858:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1857:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13985,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 14004,
                  "src": "1905:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13984,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1905:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1904:15:54"
            },
            "scope": 14083,
            "src": "1824:240:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14033,
              "nodeType": "Block",
              "src": "2162:148:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14015,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "2190:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14014,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "2180:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 14016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2180:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 14013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2172:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 14017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2172:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14018,
                  "nodeType": "ExpressionStatement",
                  "src": "2172:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14019,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2223:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14021,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14020,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14006,
                          "src": "2231:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2223:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14022,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "doc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13864,
                      "src": "2223:18:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14023,
                      "name": "_doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14008,
                      "src": "2244:4:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2223:25:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14025,
                  "nodeType": "ExpressionStatement",
                  "src": "2223:25:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14026,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2258:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14028,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14027,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14006,
                          "src": "2266:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2258:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14029,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id_expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13866,
                      "src": "2258:28:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14030,
                      "name": "_id_expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14010,
                      "src": "2289:14:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2258:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14032,
                  "nodeType": "ExpressionStatement",
                  "src": "2258:45:54"
                }
              ]
            },
            "documentation": null,
            "id": 14034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_kyc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14006,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2090:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14008,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2105:12:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2105:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14010,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2119:22:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2119:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2089:53:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14012,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2162:0:54"
            },
            "scope": 14083,
            "src": "2070:240:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14057,
              "nodeType": "Block",
              "src": "2441:97:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14043,
                      "name": "_doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14039,
                      "src": "2451:4:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14044,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2458:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14046,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14045,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14036,
                          "src": "2466:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2458:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13864,
                      "src": "2458:18:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2451:25:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14049,
                  "nodeType": "ExpressionStatement",
                  "src": "2451:25:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14050,
                      "name": "_id_expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14041,
                      "src": "2486:14:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14051,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2503:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14053,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14052,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14036,
                          "src": "2511:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2503:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14054,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "id_expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13866,
                      "src": "2503:28:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2486:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14056,
                  "nodeType": "ExpressionStatement",
                  "src": "2486:45:54"
                }
              ]
            },
            "documentation": null,
            "id": 14058,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_kyc_info",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14036,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2339:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2339:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2338:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14039,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2399:12:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14038,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2399:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14041,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2413:22:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2413:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2398:38:54"
            },
            "scope": 14083,
            "src": "2316:222:54",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14081,
              "nodeType": "Block",
              "src": "2649:131:54",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14066,
                      "name": "_id_expiration",
                      "nodeType": "VariableDeclaration",
                      "scope": 14082,
                      "src": "2659:22:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2659:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14067,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2659:22:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 14068,
                          "name": "_id_expiration",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14066,
                          "src": "2693:14:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 14069,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "2691:17:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_uint256_$",
                        "typeString": "tuple(,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14071,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14060,
                          "src": "2725:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 14070,
                        "name": "read_kyc_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14058,
                        "src": "2711:13:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bytes32_$_t_uint256_$",
                          "typeString": "function (address) view returns (bytes32,uint256)"
                        }
                      },
                      "id": 14072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2711:20:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                        "typeString": "tuple(bytes32,uint256)"
                      }
                    },
                    "src": "2691:40:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14074,
                  "nodeType": "ExpressionStatement",
                  "src": "2691:40:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14075,
                      "name": "_approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14063,
                      "src": "2741:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 14078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 14076,
                        "name": "_id_expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14066,
                        "src": "2753:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 14077,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "2770:3:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2753:20:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2741:32:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14080,
                  "nodeType": "ExpressionStatement",
                  "src": "2741:32:54"
                }
              ]
            },
            "documentation": null,
            "id": 14082,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "is_kyc_approved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14060,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14082,
                  "src": "2569:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2569:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2568:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14063,
                  "name": "_approved",
                  "nodeType": "VariableDeclaration",
                  "scope": 14082,
                  "src": "2629:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14062,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:16:54"
            },
            "scope": 14083,
            "src": "2544:236:54",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 14084,
        "src": "190:2592:54"
      }
    ],
    "src": "0:2783:54"
  },
  "legacyAST": {
    "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/storage/DaoIdentityStorage.sol",
    "exportedSymbols": {
      "DaoIdentityStorage": [
        14083
      ]
    },
    "id": 14084,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13853,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:54"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "file": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
        "id": 13854,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 18629,
        "src": "26:64:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cdap/contracts/storage/DirectoryStorage.sol",
        "file": "@digix/cdap/contracts/storage/DirectoryStorage.sol",
        "id": 13855,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 19322,
        "src": "91:60:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/aeufemio/projects/dgx/contracts/dao-contracts/contracts/common/DaoConstants.sol",
        "file": "../common/DaoConstants.sol",
        "id": 13856,
        "nodeType": "ImportDirective",
        "scope": 14084,
        "sourceUnit": 1630,
        "src": "152:36:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13857,
              "name": "ResolverClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18628,
              "src": "221:14:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverClient_$18628",
                "typeString": "contract ResolverClient"
              }
            },
            "id": 13858,
            "nodeType": "InheritanceSpecifier",
            "src": "221:14:54"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13859,
              "name": "DaoConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1629,
              "src": "237:12:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DaoConstants_$1629",
                "typeString": "contract DaoConstants"
              }
            },
            "id": 13860,
            "nodeType": "InheritanceSpecifier",
            "src": "237:12:54"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13861,
              "name": "DirectoryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19321,
              "src": "251:16:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DirectoryStorage_$19321",
                "typeString": "contract DirectoryStorage"
              }
            },
            "id": 13862,
            "nodeType": "InheritanceSpecifier",
            "src": "251:16:54"
          }
        ],
        "contractDependencies": [
          1629,
          18628,
          19321,
          22147,
          22557
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 14083,
        "linearizedBaseContracts": [
          14083,
          19321,
          22557,
          22147,
          1629,
          18628
        ],
        "name": "DaoIdentityStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "DaoIdentityStorage.KycDetails",
            "id": 13867,
            "members": [
              {
                "constant": false,
                "id": 13864,
                "name": "doc",
                "nodeType": "VariableDeclaration",
                "scope": 13867,
                "src": "623:11:54",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 13863,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "623:7:54",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13866,
                "name": "id_expiration",
                "nodeType": "VariableDeclaration",
                "scope": 13867,
                "src": "644:21:54",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 13865,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "644:7:54",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "KycDetails",
            "nodeType": "StructDefinition",
            "scope": 14083,
            "src": "595:77:54",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13871,
            "name": "kycInfo",
            "nodeType": "VariableDeclaration",
            "scope": 14083,
            "src": "725:39:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
              "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails)"
            },
            "typeName": {
              "id": 13870,
              "keyType": {
                "id": 13868,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "734:7:54",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "725:31:54",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails)"
              },
              "valueType": {
                "contractScope": null,
                "id": 13869,
                "name": "KycDetails",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13867,
                "src": "745:10:54",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_KycDetails_$13867_storage_ptr",
                  "typeString": "struct DaoIdentityStorage.KycDetails"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13888,
              "nodeType": "Block",
              "src": "821:113:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13878,
                            "name": "CONTRACT_STORAGE_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "844:29:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13879,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13873,
                            "src": "875:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13877,
                          "name": "init",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18596,
                          "src": "839:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) returns (bool)"
                          }
                        },
                        "id": 13880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "839:46:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13876,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "831:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "831:55:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13882,
                  "nodeType": "ExpressionStatement",
                  "src": "831:55:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 13884,
                          "name": "initialize_directory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18726,
                          "src": "904:20:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$",
                            "typeString": "function () returns (bool)"
                          }
                        },
                        "id": 13885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "904:22:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13883,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "896:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "896:31:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13887,
                  "nodeType": "ExpressionStatement",
                  "src": "896:31:54"
                }
              ]
            },
            "documentation": null,
            "id": 13889,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13873,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 13889,
                  "src": "783:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13872,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "783:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "782:19:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "821:0:54"
            },
            "scope": 14083,
            "src": "771:163:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13922,
              "nodeType": "Block",
              "src": "1084:168:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13904,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1112:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13903,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1102:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1102:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13902,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1094:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1094:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13907,
                  "nodeType": "ExpressionStatement",
                  "src": "1094:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 13908,
                          "name": "_success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13898,
                          "src": "1146:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13909,
                          "name": "_group_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13900,
                          "src": "1156:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 13910,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1145:21:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13912,
                          "name": "_role_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13891,
                          "src": "1191:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13913,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13893,
                          "src": "1201:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13914,
                          "name": "_document",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13895,
                          "src": "1208:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13911,
                        "name": "internal_create_group",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18852,
                        "src": "1169:21:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_uint256_$",
                          "typeString": "function (uint256,bytes32,bytes32) returns (bool,uint256)"
                        }
                      },
                      "id": 13915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1169:49:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(bool,uint256)"
                      }
                    },
                    "src": "1145:73:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13917,
                  "nodeType": "ExpressionStatement",
                  "src": "1145:73:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13919,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13898,
                        "src": "1236:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13918,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1228:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1228:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13921,
                  "nodeType": "ExpressionStatement",
                  "src": "1228:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13923,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "create_group",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13896,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13891,
                  "name": "_role_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "962:16:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "962:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13893,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "980:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13892,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13895,
                  "name": "_document",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "995:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13894,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "961:52:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13898,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "1046:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13897,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13900,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13923,
                  "src": "1061:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:34:54"
            },
            "scope": 14083,
            "src": "940:312:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13949,
              "nodeType": "Block",
              "src": "1363:143:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13934,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1391:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13933,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1381:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1381:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13932,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1373:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1373:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13937,
                  "nodeType": "ExpressionStatement",
                  "src": "1373:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13938,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13930,
                      "src": "1424:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13940,
                          "name": "_role_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13925,
                          "src": "1456:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13941,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13927,
                          "src": "1466:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13939,
                        "name": "internal_create_role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18762,
                        "src": "1435:20:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (uint256,bytes32) returns (bool)"
                        }
                      },
                      "id": 13942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1435:37:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1424:48:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13944,
                  "nodeType": "ExpressionStatement",
                  "src": "1424:48:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13946,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13930,
                        "src": "1490:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13945,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1482:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1482:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13948,
                  "nodeType": "ExpressionStatement",
                  "src": "1482:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13950,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "create_role",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13925,
                  "name": "_role_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1279:16:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1279:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13927,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1297:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13926,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1297:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1278:33:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13930,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13950,
                  "src": "1344:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13929,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1344:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1343:15:54"
            },
            "scope": 14083,
            "src": "1258:248:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13979,
              "nodeType": "Block",
              "src": "1650:168:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13963,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1678:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13962,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1668:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1668:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13961,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1660:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1660:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13966,
                  "nodeType": "ExpressionStatement",
                  "src": "1660:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13967,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13959,
                      "src": "1711:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13969,
                          "name": "_group_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13952,
                          "src": "1756:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13970,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13954,
                          "src": "1767:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13971,
                          "name": "_document",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13956,
                          "src": "1774:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 13968,
                        "name": "internal_update_add_user_to_group",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19015,
                        "src": "1722:33:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (uint256,address,bytes32) returns (bool)"
                        }
                      },
                      "id": 13972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1722:62:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1711:73:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13974,
                  "nodeType": "ExpressionStatement",
                  "src": "1711:73:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13976,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13959,
                        "src": "1802:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13975,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1794:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1794:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13978,
                  "nodeType": "ExpressionStatement",
                  "src": "1794:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 13980,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_add_user_to_group",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13952,
                  "name": "_group_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1546:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1546:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13954,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1565:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1565:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13956,
                  "name": "_document",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1580:17:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13955,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1545:53:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13959,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 13980,
                  "src": "1631:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13958,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1631:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1630:15:54"
            },
            "scope": 14083,
            "src": "1512:306:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14003,
              "nodeType": "Block",
              "src": "1924:140:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13989,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "1952:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13988,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "1942:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 13990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1942:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13987,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1934:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1934:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13992,
                  "nodeType": "ExpressionStatement",
                  "src": "1934:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13993,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13985,
                      "src": "1985:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13995,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13982,
                          "src": "2024:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 13994,
                        "name": "internal_destroy_group_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19092,
                        "src": "1996:27:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) returns (bool)"
                        }
                      },
                      "id": 13996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1996:34:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1985:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13998,
                  "nodeType": "ExpressionStatement",
                  "src": "1985:45:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14000,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13985,
                        "src": "2048:8:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13999,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2040:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 14001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:17:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14002,
                  "nodeType": "ExpressionStatement",
                  "src": "2040:17:54"
                }
              ]
            },
            "documentation": null,
            "id": 14004,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_remove_group_user",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13982,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14004,
                  "src": "1858:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13981,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1858:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1857:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 13986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13985,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 14004,
                  "src": "1905:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13984,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1905:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1904:15:54"
            },
            "scope": 14083,
            "src": "1824:240:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14033,
              "nodeType": "Block",
              "src": "2162:148:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14015,
                            "name": "CONTRACT_DAO_IDENTITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1364,
                            "src": "2190:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14014,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "2180:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 14016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2180:32:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 14013,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "2172:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 14017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2172:41:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14018,
                  "nodeType": "ExpressionStatement",
                  "src": "2172:41:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14019,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2223:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14021,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14020,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14006,
                          "src": "2231:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2223:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14022,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "doc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13864,
                      "src": "2223:18:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14023,
                      "name": "_doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14008,
                      "src": "2244:4:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2223:25:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14025,
                  "nodeType": "ExpressionStatement",
                  "src": "2223:25:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14026,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2258:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14028,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14027,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14006,
                          "src": "2266:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2258:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14029,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id_expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13866,
                      "src": "2258:28:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14030,
                      "name": "_id_expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14010,
                      "src": "2289:14:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2258:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14032,
                  "nodeType": "ExpressionStatement",
                  "src": "2258:45:54"
                }
              ]
            },
            "documentation": null,
            "id": 14034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "update_kyc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14006,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2090:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14008,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2105:12:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2105:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14010,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 14034,
                  "src": "2119:22:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2119:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2089:53:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14012,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2162:0:54"
            },
            "scope": 14083,
            "src": "2070:240:54",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14057,
              "nodeType": "Block",
              "src": "2441:97:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14043,
                      "name": "_doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14039,
                      "src": "2451:4:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14044,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2458:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14046,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14045,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14036,
                          "src": "2466:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2458:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "doc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13864,
                      "src": "2458:18:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2451:25:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14049,
                  "nodeType": "ExpressionStatement",
                  "src": "2451:25:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14050,
                      "name": "_id_expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14041,
                      "src": "2486:14:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14051,
                          "name": "kycInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13871,
                          "src": "2503:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KycDetails_$13867_storage_$",
                            "typeString": "mapping(address => struct DaoIdentityStorage.KycDetails storage ref)"
                          }
                        },
                        "id": 14053,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14052,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14036,
                          "src": "2511:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2503:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KycDetails_$13867_storage",
                          "typeString": "struct DaoIdentityStorage.KycDetails storage ref"
                        }
                      },
                      "id": 14054,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "id_expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13866,
                      "src": "2503:28:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2486:45:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14056,
                  "nodeType": "ExpressionStatement",
                  "src": "2486:45:54"
                }
              ]
            },
            "documentation": null,
            "id": 14058,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_kyc_info",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14036,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2339:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2339:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2338:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14039,
                  "name": "_doc",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2399:12:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14038,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2399:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14041,
                  "name": "_id_expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 14058,
                  "src": "2413:22:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2413:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2398:38:54"
            },
            "scope": 14083,
            "src": "2316:222:54",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14081,
              "nodeType": "Block",
              "src": "2649:131:54",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14066,
                      "name": "_id_expiration",
                      "nodeType": "VariableDeclaration",
                      "scope": 14082,
                      "src": "2659:22:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2659:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14067,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2659:22:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        null,
                        {
                          "argumentTypes": null,
                          "id": 14068,
                          "name": "_id_expiration",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14066,
                          "src": "2693:14:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 14069,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "2691:17:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$_t_uint256_$",
                        "typeString": "tuple(,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14071,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14060,
                          "src": "2725:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 14070,
                        "name": "read_kyc_info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14058,
                        "src": "2711:13:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bytes32_$_t_uint256_$",
                          "typeString": "function (address) view returns (bytes32,uint256)"
                        }
                      },
                      "id": 14072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2711:20:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$",
                        "typeString": "tuple(bytes32,uint256)"
                      }
                    },
                    "src": "2691:40:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14074,
                  "nodeType": "ExpressionStatement",
                  "src": "2691:40:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14075,
                      "name": "_approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14063,
                      "src": "2741:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 14078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 14076,
                        "name": "_id_expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14066,
                        "src": "2753:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 14077,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26184,
                        "src": "2770:3:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2753:20:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2741:32:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14080,
                  "nodeType": "ExpressionStatement",
                  "src": "2741:32:54"
                }
              ]
            },
            "documentation": null,
            "id": 14082,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "is_kyc_approved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14060,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 14082,
                  "src": "2569:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2569:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2568:15:54"
            },
            "payable": false,
            "returnParameters": {
              "id": 14064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14063,
                  "name": "_approved",
                  "nodeType": "VariableDeclaration",
                  "scope": 14082,
                  "src": "2629:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14062,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:16:54"
            },
            "scope": 14083,
            "src": "2544:236:54",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 14084,
        "src": "190:2592:54"
      }
    ],
    "src": "0:2783:54"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {
        "DoublyLinkedList": "0x8045c179449f1501786a1bc68224fc49f8463d08"
      },
      "address": "0xbf4759697129a7ba31eba5282dcd5fe94df934a7",
      "transactionHash": "0x91ff7e6053d0248477f995175156d87e573f6db94d98af8393dfcc6a0452cf29"
    }
  },
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-16T08:53:12.876Z"
}