{
  "contractName": "Document",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "signedAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "cancelReason",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "declined",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signatureOwner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "canceled",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signature",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "declineReason",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "eventsId",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "file",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "id",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signedFileHash",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "createdAt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signatureType",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "documentId",
          "type": "string"
        },
        {
          "name": "signatureDeployer",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "initType",
          "type": "string"
        },
        {
          "name": "documentCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "signatureOwnerAdr",
          "type": "address"
        }
      ],
      "name": "setSignatureOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "signerAddress",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentSignedAt",
          "type": "uint256"
        }
      ],
      "name": "sign",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentDeclineReason",
          "type": "string"
        }
      ],
      "name": "decline",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "documentCancelReason",
          "type": "string"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "fileId",
          "type": "string"
        },
        {
          "name": "fileName",
          "type": "string"
        },
        {
          "name": "fileHash",
          "type": "string"
        },
        {
          "name": "fileCreatedAt",
          "type": "uint256"
        },
        {
          "name": "fileSize",
          "type": "uint256"
        }
      ],
      "name": "createFile",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "fileHash",
          "type": "string"
        }
      ],
      "name": "setFileHash",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "eventId",
          "type": "string"
        },
        {
          "name": "eventType",
          "type": "string"
        },
        {
          "name": "eventUserAgent",
          "type": "string"
        },
        {
          "name": "eventCreatedAt",
          "type": "uint256"
        }
      ],
      "name": "createEvent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "eventId",
          "type": "string"
        }
      ],
      "name": "getEvent",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEventsSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620024ff380380620024ff833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b5050602091820151600d805433600160a060020a031991821617909155600f8054909116600160a060020a03831617905581519194509250620000c99160109190850190620000d2565b50505062000177565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011557805160ff191683800117855562000145565b8280016001018555821562000145579182015b828111156200014557825182559160200191906001019062000128565b506200015392915062000157565b5090565b6200017491905b808211156200015357600081556001016200015e565b90565b61237880620001876000396000f3fe6080604052600436106101445763ffffffff60e060020a60003504166238a5b5811461014957806306adb7d3146101fe57806308f7a6cc146102255780630b4f3f3d146102af5780630cfcdf80146103605780631087452c1461038957806313af4035146103ba578063232a6b9d146103ed578063238ac933146104025780632fb1b25f146104175780633f9942ff146104415780634a8beaf41461045657806351ff4847146105075780635296ad561461051c57806357ac264e146105315780636bee1e1b1461054657806372c97e7f146107065780638525855d14610730578063aaf6c74014610745578063acf635b9146107f6578063af640d0f14610829578063cb07a4ac1461083e578063cf09e0d014610853578063d5f3948814610868578063db6f02811461087d578063de4cd84214610892578063e190206314610a4f575b600080fd5b34801561015557600080fd5b506101fc6004803603604081101561016c57600080fd5b810190602081018135602060020a81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111602060020a831117156101b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b00915050565b005b34801561020a57600080fd5b50610213610b95565b60408051918252519081900360200190f35b34801561023157600080fd5b5061023a610b9b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506101fc600480360360208110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c29945050505050565b34801561036c57600080fd5b50610375610dbb565b604080519115158252519081900360200190f35b34801561039557600080fd5b5061039e610dca565b60408051600160a060020a039092168252519081900360200190f35b3480156103c657600080fd5b506101fc600480360360208110156103dd57600080fd5b5035600160a060020a0316610dd9565b3480156103f957600080fd5b50610375610e76565b34801561040e57600080fd5b5061039e610e7f565b34801561042357600080fd5b506101fc6004803603602081101561043a57600080fd5b5035610e8e565b34801561044d57600080fd5b5061037561102f565b34801561046257600080fd5b506101fc6004803603602081101561047957600080fd5b810190602081018135602060020a81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111602060020a831117156104c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061103d945050505050565b34801561051357600080fd5b5061039e6111be565b34801561052857600080fd5b5061023a6111cd565b34801561053d57600080fd5b50610213611228565b34801561055257600080fd5b506101fc600480360360a081101561056957600080fd5b810190602081018135602060020a81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111602060020a831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561060857600080fd5b82018360208201111561061a57600080fd5b803590602001918460018302840111602060020a8311171561063b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460018302840111602060020a831117156106c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561122f565b34801561071257600080fd5b5061023a6004803603602081101561072957600080fd5b503561165d565b34801561073c57600080fd5b5061039e6116d1565b34801561075157600080fd5b506101fc6004803603602081101561076857600080fd5b810190602081018135602060020a81111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111602060020a831117156107b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116e7945050505050565b34801561080257600080fd5b506101fc6004803603602081101561081957600080fd5b5035600160a060020a0316611808565b34801561083557600080fd5b5061023a6118a5565b34801561084a57600080fd5b5061023a611900565b34801561085f57600080fd5b5061021361195b565b34801561087457600080fd5b5061039e611961565b34801561088957600080fd5b5061023a611970565b34801561089e57600080fd5b506101fc600480360360808110156108b557600080fd5b810190602081018135602060020a8111156108cf57600080fd5b8201836020820111156108e157600080fd5b803590602001918460018302840111602060020a8311171561090257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561095457600080fd5b82018360208201111561096657600080fd5b803590602001918460018302840111602060020a8311171561098757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156109d957600080fd5b8201836020820111156109eb57600080fd5b803590602001918460018302840111602060020a83111715610a0c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506119cb915050565b348015610a5b57600080fd5b5061039e60048036036020811015610a7257600080fd5b810190602081018135602060020a811115610a8c57600080fd5b820183602082011115610a9e57600080fd5b803590602001918460018302840111602060020a83111715610abf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e92945050505050565b600d54600160a060020a0316331480610b235750600e54600160a060020a031633145b1515610b7b576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8151610b8e906012906020850190612234565b5060175550565b60165481565b6011805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b600d54600160a060020a0316331480610c4c5750600e54600160a060020a031633145b1515610ca4576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60185460ff1615610d08576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061230d8339815191526044820152608a60020a6e18d85b89dd0818d85b98d95b081a5d02606482015290519081900360840190fd5b8051610d1b906011906020840190612234565b506018805461ff00191661010017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d8d85b98d95b19590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e63616e63656c65640000000000008183015283518085019094526008845260c060020a67736f6c69646974790291840191909152610db892426119cb565b50565b60185462010000900460ff1681565b601954600160a060020a031681565b600d54600160a060020a0316331480610dfc5750600e54600160a060020a031633145b1515610e54576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b60185460ff1681565b600e54600160a060020a031681565b600e54600160a060020a03163314610ef8576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185462010000900460ff161580610f185750601854610100900460ff16155b1515610f94576040805160e560020a62461bcd02815260206004820152603b60248201527f446f63756d656e7420697320616c7265616479206465636c696e6564206f722060448201527f63616e63656c65642c20796f752063616e2774207369676e2069740000000000606482015290519081900360840190fd5b60168190556018805460ff1916600117815560408051808201825260128152607260020a711a5917d91bd8dd5b595b9d17dcda59db995902602080830191909152825180840184529384527f646f63756d656e742e636f6e74726163742e7369676e656400000000000000008482015282518084019093526008835260c060020a67736f6c69646974790290830152610db8929091426119cb565b601854610100900460ff1681565b600e54600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185460ff161561110c576040805160e560020a62461bcd028152602060048201526030602482015260008051602061230d8339815191526044820152608260020a6f18d85b89dd08191958db1a5b99481a5d02606482015290519081900360840190fd5b805161111f906013906020840190612234565b506018805462ff000019166201000017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d91958db1a5b99590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e6465636c696e65640000000000008183015283518085019094526008845260c060020a67536f6c69646974790291840191909152610db892426119cb565b600d54600160a060020a031681565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6015545b90565b600d54600160a060020a03163314806112525750600e54600160a060020a031633145b15156112aa576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600f54604051602060248201818152885160448401528851600094606094600160a060020a03909116938b93928392606401918501908083838b5b838110156112fd5781810151838201526020016112e5565b50505050905090810190601f16801561132a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106113885780518252601f199092019160209182019101611369565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113e8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ed565b606091505b509150915081151561145d576040805160e560020a62461bcd02815260206004820152602860248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260c260020a67191bd8dd5b595b9d02606482015290519081900360840190fd5b61146681611fd1565b601860036101000a815481600160a060020a030219169083600160a060020a03160217905550601860039054906101000a9004600160a060020a0316600160a060020a03166387c80464878787876040518563ffffffff1660e060020a028152600401808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b1580156115c357600080fd5b505af11580156115d7573d6000803e3d6000fd5b505050506116546040805190810160405280600e8152602001609060020a6d66696c652d6e6f7469666965727302815250604080519081016040528060158152602001605a60020a74199a5b194b98dbdb9d1c9858dd0b98dc99585d195902815250601860039054906101000a9004600160a060020a0316611fd8565b50505050505050565b601580548290811061166b57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60185463010000009004600160a060020a031681565b600d54600160a060020a031633148061170a5750600e54600160a060020a031633145b1515611762576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8051611775906014906020840190612234565b50610db8604080519081016040528060138152602001606b60020a720d2c8beccd2d8cabee6d2cedccac8bed0c2e6d028152506040805190810160405280601881526020017f66696c652e7369676e65645f686173682e63726561746564000000000000000081525060408051908101604052806008815260200160c060020a67736f6c696469747902815250426119cb565b600d54600160a060020a031633148061182b5750600e54600160a060020a031633145b1515611883576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60198054600160a060020a031916600160a060020a0392909216919091179055565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6014805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60175481565b600f54600160a060020a031681565b6012805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b600d54600160a060020a03163314806119ee5750600e54600160a060020a031633145b1515611a46576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60006060600f60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611b1b578181015183820152602001611b03565b50505050905090810190601f168015611b485780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611b7b578181015183820152602001611b63565b50505050905090810190601f168015611ba85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310611c0f5780518252601f199092019160209182019101611bf0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5091509150811515611ce5576040805160e560020a62461bcd02815260206004820152602960248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260ba60020a6808191bd8dd5b595b9d02606482015290519081900360840190fd5b611cee81611fd1565b601a876040518082805190602001908083835b60208310611d205780518252601f199092019160209182019101611d01565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a0395909516949094179093555060158054600181018083556000929092528951919350611db4927f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47590910191908a0190612234565b5050611e8a6040805190810160405280600f8152602001608860020a6e6576656e742d6e6f74696669657273028152506040805190810160405280601681526020017f6576656e742e636f6e74726163742e6372656174656400000000000000000000815250601a896040518082805190602001908083835b60208310611e4c5780518252601f199092019160209182019101611e2d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169150611fd89050565b505050505050565b600080600160a060020a0316601a836040518082805190602001908083835b60208310611ed05780518252601f199092019160209182019101611eb1565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a031692909214159150611f629050576040805160e560020a62461bcd02815260206004820152601760248201527f546865206576656e7420646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b601a826040518082805190602001908083835b60208310611f945780518252601f199092019160209182019101611f75565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b6020015190565b6000805b6019546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d60208110156120bb57600080fd5b50519150600101600160a060020a0382161561221d5760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106121b25780518252601f199092019160209182019101612193565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612214576040519150601f19603f3d011682016040523d82523d6000602084013e612219565b606091505b5050505b600160a060020a0382161515611fdc575050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b506122ae9291506122b2565b5090565b61122c91905b808211156122ae57600081556001016122b856fe6572666f726d207468697320616374696f6e00000000000000000000000000004f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f446f63756d656e7420697320616c7265616479207369676e65642c20796f75204f6e6c7920746865205369676e6174757265206163636f756e742063616e2070a165627a7a72305820415b620e59f0c5b58844b46503b0e1c18077f03bcaaa308b452229b8a75510040029",
  "deployedBytecode": "0x6080604052600436106101445763ffffffff60e060020a60003504166238a5b5811461014957806306adb7d3146101fe57806308f7a6cc146102255780630b4f3f3d146102af5780630cfcdf80146103605780631087452c1461038957806313af4035146103ba578063232a6b9d146103ed578063238ac933146104025780632fb1b25f146104175780633f9942ff146104415780634a8beaf41461045657806351ff4847146105075780635296ad561461051c57806357ac264e146105315780636bee1e1b1461054657806372c97e7f146107065780638525855d14610730578063aaf6c74014610745578063acf635b9146107f6578063af640d0f14610829578063cb07a4ac1461083e578063cf09e0d014610853578063d5f3948814610868578063db6f02811461087d578063de4cd84214610892578063e190206314610a4f575b600080fd5b34801561015557600080fd5b506101fc6004803603604081101561016c57600080fd5b810190602081018135602060020a81111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111602060020a831117156101b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b00915050565b005b34801561020a57600080fd5b50610213610b95565b60408051918252519081900360200190f35b34801561023157600080fd5b5061023a610b9b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506101fc600480360360208110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c29945050505050565b34801561036c57600080fd5b50610375610dbb565b604080519115158252519081900360200190f35b34801561039557600080fd5b5061039e610dca565b60408051600160a060020a039092168252519081900360200190f35b3480156103c657600080fd5b506101fc600480360360208110156103dd57600080fd5b5035600160a060020a0316610dd9565b3480156103f957600080fd5b50610375610e76565b34801561040e57600080fd5b5061039e610e7f565b34801561042357600080fd5b506101fc6004803603602081101561043a57600080fd5b5035610e8e565b34801561044d57600080fd5b5061037561102f565b34801561046257600080fd5b506101fc6004803603602081101561047957600080fd5b810190602081018135602060020a81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111602060020a831117156104c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061103d945050505050565b34801561051357600080fd5b5061039e6111be565b34801561052857600080fd5b5061023a6111cd565b34801561053d57600080fd5b50610213611228565b34801561055257600080fd5b506101fc600480360360a081101561056957600080fd5b810190602081018135602060020a81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111602060020a831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561060857600080fd5b82018360208201111561061a57600080fd5b803590602001918460018302840111602060020a8311171561063b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561068d57600080fd5b82018360208201111561069f57600080fd5b803590602001918460018302840111602060020a831117156106c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020013561122f565b34801561071257600080fd5b5061023a6004803603602081101561072957600080fd5b503561165d565b34801561073c57600080fd5b5061039e6116d1565b34801561075157600080fd5b506101fc6004803603602081101561076857600080fd5b810190602081018135602060020a81111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111602060020a831117156107b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116e7945050505050565b34801561080257600080fd5b506101fc6004803603602081101561081957600080fd5b5035600160a060020a0316611808565b34801561083557600080fd5b5061023a6118a5565b34801561084a57600080fd5b5061023a611900565b34801561085f57600080fd5b5061021361195b565b34801561087457600080fd5b5061039e611961565b34801561088957600080fd5b5061023a611970565b34801561089e57600080fd5b506101fc600480360360808110156108b557600080fd5b810190602081018135602060020a8111156108cf57600080fd5b8201836020820111156108e157600080fd5b803590602001918460018302840111602060020a8311171561090257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a81111561095457600080fd5b82018360208201111561096657600080fd5b803590602001918460018302840111602060020a8311171561098757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a8111156109d957600080fd5b8201836020820111156109eb57600080fd5b803590602001918460018302840111602060020a83111715610a0c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506119cb915050565b348015610a5b57600080fd5b5061039e60048036036020811015610a7257600080fd5b810190602081018135602060020a811115610a8c57600080fd5b820183602082011115610a9e57600080fd5b803590602001918460018302840111602060020a83111715610abf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e92945050505050565b600d54600160a060020a0316331480610b235750600e54600160a060020a031633145b1515610b7b576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8151610b8e906012906020850190612234565b5060175550565b60165481565b6011805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b820191906000526020600020905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b600d54600160a060020a0316331480610c4c5750600e54600160a060020a031633145b1515610ca4576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60185460ff1615610d08576040805160e560020a62461bcd02815260206004820152602f602482015260008051602061230d8339815191526044820152608a60020a6e18d85b89dd0818d85b98d95b081a5d02606482015290519081900360840190fd5b8051610d1b906011906020840190612234565b506018805461ff00191661010017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d8d85b98d95b19590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e63616e63656c65640000000000008183015283518085019094526008845260c060020a67736f6c69646974790291840191909152610db892426119cb565b50565b60185462010000900460ff1681565b601954600160a060020a031681565b600d54600160a060020a0316331480610dfc5750600e54600160a060020a031633145b1515610e54576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b60185460ff1681565b600e54600160a060020a031681565b600e54600160a060020a03163314610ef8576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185462010000900460ff161580610f185750601854610100900460ff16155b1515610f94576040805160e560020a62461bcd02815260206004820152603b60248201527f446f63756d656e7420697320616c7265616479206465636c696e6564206f722060448201527f63616e63656c65642c20796f752063616e2774207369676e2069740000000000606482015290519081900360840190fd5b60168190556018805460ff1916600117815560408051808201825260128152607260020a711a5917d91bd8dd5b595b9d17dcda59db995902602080830191909152825180840184529384527f646f63756d656e742e636f6e74726163742e7369676e656400000000000000008482015282518084019093526008835260c060020a67736f6c69646974790290830152610db8929091426119cb565b601854610100900460ff1681565b600e54600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206122ed8339815191526044820152609160020a6d3936903a3434b99030b1ba34b7b702606482015290519081900360840190fd5b60185460ff161561110c576040805160e560020a62461bcd028152602060048201526030602482015260008051602061230d8339815191526044820152608260020a6f18d85b89dd08191958db1a5b99481a5d02606482015290519081900360840190fd5b805161111f906013906020840190612234565b506018805462ff000019166201000017905560408051808201825260148152606260020a731a5917d91bd8dd5b595b9d17d91958db1a5b99590260208083019190915282518084018452601a81527f646f63756d656e742e636f6e74726163742e6465636c696e65640000000000008183015283518085019094526008845260c060020a67536f6c69646974790291840191909152610db892426119cb565b600d54600160a060020a031681565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6015545b90565b600d54600160a060020a03163314806112525750600e54600160a060020a031633145b15156112aa576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b600f54604051602060248201818152885160448401528851600094606094600160a060020a03909116938b93928392606401918501908083838b5b838110156112fd5781810151838201526020016112e5565b50505050905090810190601f16801561132a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63548b880902178152905182519295509350839250908083835b602083106113885780518252601f199092019160209182019101611369565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113e8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ed565b606091505b509150915081151561145d576040805160e560020a62461bcd02815260206004820152602860248201527f4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20604482015260c260020a67191bd8dd5b595b9d02606482015290519081900360840190fd5b61146681611fd1565b601860036101000a815481600160a060020a030219169083600160a060020a03160217905550601860039054906101000a9004600160a060020a0316600160a060020a03166387c80464878787876040518563ffffffff1660e060020a028152600401808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156115135781810151838201526020016114fb565b50505050905090810190601f1680156115405780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561157357818101518382015260200161155b565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b1580156115c357600080fd5b505af11580156115d7573d6000803e3d6000fd5b505050506116546040805190810160405280600e8152602001609060020a6d66696c652d6e6f7469666965727302815250604080519081016040528060158152602001605a60020a74199a5b194b98dbdb9d1c9858dd0b98dc99585d195902815250601860039054906101000a9004600160a060020a0316611fd8565b50505050505050565b601580548290811061166b57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60185463010000009004600160a060020a031681565b600d54600160a060020a031633148061170a5750600e54600160a060020a031633145b1515611762576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b8051611775906014906020840190612234565b50610db8604080519081016040528060138152602001606b60020a720d2c8beccd2d8cabee6d2cedccac8bed0c2e6d028152506040805190810160405280601881526020017f66696c652e7369676e65645f686173682e63726561746564000000000000000081525060408051908101604052806008815260200160c060020a67736f6c696469747902815250426119cb565b600d54600160a060020a031633148061182b5750600e54600160a060020a031633145b1515611883576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60198054600160a060020a031916600160a060020a0392909216919091179055565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b6014805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b60175481565b600f54600160a060020a031681565b6012805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c215780601f10610bf657610100808354040283529160200191610c21565b600d54600160a060020a03163314806119ee5750600e54600160a060020a031633145b1515611a46576040805160e560020a62461bcd028152602060048201526032602482015260008051602061232d83398151915260448201526000805160206122cd833981519152606482015290519081900360840190fd5b60006060600f60009054906101000a9004600160a060020a0316600160a060020a03168686868660405160240180806020018060200180602001858152602001848103845288818151815260200191508051906020019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611b1b578181015183820152602001611b03565b50505050905090810190601f168015611b485780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611b7b578181015183820152602001611b63565b50505050905090810190601f168015611ba85780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e060020a63f776d03b0217815290518251929a509850889750955093508392508591508490505b60208310611c0f5780518252601f199092019160209182019101611bf0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5091509150811515611ce5576040805160e560020a62461bcd02815260206004820152602960248201527f4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d604482015260ba60020a6808191bd8dd5b595b9d02606482015290519081900360840190fd5b611cee81611fd1565b601a876040518082805190602001908083835b60208310611d205780518252601f199092019160209182019101611d01565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208054600160a060020a031916600160a060020a0395909516949094179093555060158054600181018083556000929092528951919350611db4927f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47590910191908a0190612234565b5050611e8a6040805190810160405280600f8152602001608860020a6e6576656e742d6e6f74696669657273028152506040805190810160405280601681526020017f6576656e742e636f6e74726163742e6372656174656400000000000000000000815250601a896040518082805190602001908083835b60208310611e4c5780518252601f199092019160209182019101611e2d565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03169150611fd89050565b505050505050565b600080600160a060020a0316601a836040518082805190602001908083835b60208310611ed05780518252601f199092019160209182019101611eb1565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a031692909214159150611f629050576040805160e560020a62461bcd02815260206004820152601760248201527f546865206576656e7420646f65736e2774206578697374000000000000000000604482015290519081900360640190fd5b601a826040518082805190602001908083835b60208310611f945780518252601f199092019160209182019101611f75565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b6020015190565b6000805b6019546040805160e260020a633ce8989d0281526024810184905260048101918252875160448201528751600160a060020a039093169263f3a262749289928692829160640190602086019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d60208110156120bb57600080fd5b50519150600101600160a060020a0382161561221d5760408051600160a060020a038581166044830152602482019283528651606483015286519085169287928792829160840190602086019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152602082018051600160e060020a031660e160020a63738f32bb0217815290518251929650945084935091508083835b602083106121b25780518252601f199092019160209182019101612193565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612214576040519150601f19603f3d011682016040523d82523d6000602084013e612219565b606091505b5050505b600160a060020a0382161515611fdc575050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061227557805160ff19168380011785556122a2565b828001600101855582156122a2579182015b828111156122a2578251825591602001919060010190612287565b506122ae9291506122b2565b5090565b61122c91905b808211156122ae57600081556001016122b856fe6572666f726d207468697320616374696f6e00000000000000000000000000004f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f446f63756d656e7420697320616c7265616479207369676e65642c20796f75204f6e6c7920746865205369676e6174757265206163636f756e742063616e2070a165627a7a72305820415b620e59f0c5b58844b46503b0e1c18077f03bcaaa308b452229b8a75510040029",
  "sourceMap": "270:7163:9:-;;;1846:196;8:9:-1;5:2;;;30:1;27;20:12;5:2;1846:196:9;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1846:196:9;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;1846:196:9;;;;;1950:9;:22;;1962:10;-1:-1:-1;;;;;;1950:22:9;;;;;;;1982:8;:28;;;;;-1:-1:-1;;;;;1982:28:9;;;;;2020:15;;;;-1:-1:-1;1846:196:9;-1:-1:-1;2020:15:9;;:2;;:15;;;;;:::i;:::-;;1846:196;;270:7163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:7163:9;;;-1:-1:-1;270:7163:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "270:7163:9:-;;;;;;;;-1:-1:-1;;;270:7163:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2418:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2418:201:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2418:201:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2418:201:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2418:201:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2418:201:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2418:201:9;;-1:-1:-1;;2418:201:9;;;-1:-1:-1;2418:201:9;;-1:-1:-1;;2418:201:9;;;1576:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1576:20:9;;;;;;;;;;;;;;;;;;;;1412:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1412:26:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1412:26:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3876:449;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3876:449:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3876:449:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3876:449:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3876:449:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3876:449:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3876:449:9;;-1:-1:-1;3876:449:9;;-1:-1:-1;;;;;3876:449:9;1680:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1680:20:9;;;;;;;;;;;;;;;;;;;;;;1739:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1739:45:9;;;;;;;;-1:-1:-1;;;;;1739:45:9;;;;;;;;;;;;;;2812:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2812:131:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2812:131:9;-1:-1:-1;;;;;2812:131:9;;;1630:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1630:18:9;;;;1333:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1333:21:9;;;;2949:460;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2949:460:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2949:460:9;;;1654:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1654:20:9;;;;3415:455;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3415:455:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3415:455:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3415:455:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3415:455:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3415:455:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3415:455:9;;-1:-1:-1;3415:455:9;;-1:-1:-1;;;;;3415:455:9;1303:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1303:24:9;;;;1477:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1477:27:9;;;;7312:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7312:119:9;;;;4331:804;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4331:804:9;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4331:804:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4331:804:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4331:804:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4331:804:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4331:804:9;;;;;;;;-1:-1:-1;4331:804:9;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4331:804:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4331:804:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4331:804:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4331:804:9;;;;;;;;-1:-1:-1;4331:804:9;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4331:804:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4331:804:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4331:804:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4331:804:9;;-1:-1:-1;;4331:804:9;;;-1:-1:-1;;;4331:804:9;;;;;1545:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1545:24:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1545:24:9;;;1707:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1707:25:9;;;;5141:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5141:292:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5141:292:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5141:292:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5141:292:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5141:292:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5141:292:9;;-1:-1:-1;5141:292:9;;-1:-1:-1;;;;;5141:292:9;2625:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2625:181:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2625:181:9;-1:-1:-1;;;;;2625:181:9;;;1390:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1390:16:9;;;;1510:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1510:28:9;;;;1602:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1602:21:9;;;;1360:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1360:23:9;;;;1444:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1444:27:9;;;;5439:826;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5439:826:9;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5439:826:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5439:826:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5439:826:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5439:826:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5439:826:9;;;;;;;;-1:-1:-1;5439:826:9;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5439:826:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5439:826:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5439:826:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5439:826:9;;;;;;;;-1:-1:-1;5439:826:9;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5439:826:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5439:826:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5439:826:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5439:826:9;;-1:-1:-1;;5439:826:9;;;-1:-1:-1;5439:826:9;;-1:-1:-1;;5439:826:9;7026:280;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7026:280:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7026:280:9;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7026:280:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7026:280:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7026:280:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7026:280:9;;-1:-1:-1;7026:280:9;;-1:-1:-1;;;;;7026:280:9;2418:201;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;2549:24;;;;:13;;:24;;;;;:::i;:::-;-1:-1:-1;2583:9:9;:29;-1:-1:-1;2418:201:9:o;1576:20::-;;;;:::o;1412:26::-;;;;;;;;;;;;;;;-1:-1:-1;;1412:26:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3876:449::-;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;4011:6;;;;4010:7;3989:101;;;;;-1:-1:-1;;;;;3989:101:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3989:101:9;;;;-1:-1:-1;;;;;3989:101:9;;;;;;;;;;;;;;;4101:35;;;;:12;;:35;;;;;:::i;:::-;-1:-1:-1;4147:8:9;:15;;-1:-1:-1;;4147:15:9;;;;;4198:20;;;;;;;;;;;-1:-1:-1;;;;;4198:20:9;;;;;;;;4232:23;;;;;;;;;;;;;;;4173:145;;;;;;;;;;;-1:-1:-1;;;;;4173:145:9;;;;;;;;;4293:15;4173:11;:145::i;:::-;3876:449;:::o;1680:20::-;;;;;;;;;:::o;1739:45::-;;;-1:-1:-1;;;;;1739:45:9;;:::o;2812:131::-;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;2914:6;:22;;-1:-1:-1;;;;;;2914:22:9;-1:-1:-1;;;;;2914:22:9;;;;;;;;;;2812:131::o;1630:18::-;;;;;;:::o;1333:21::-;;;-1:-1:-1;;;;;1333:21:9;;:::o;2949:460::-;2315:6;;-1:-1:-1;;;;;2315:6:9;2301:10;:20;2280:113;;;;;-1:-1:-1;;;;;2280:113:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2280:113:9;;;;-1:-1:-1;;;;;2280:113:9;;;;;;;;;;;;;;;3070:8;;;;;;;3069:9;;:22;;-1:-1:-1;3083:8:9;;;;;;;3082:9;3069:22;3048:128;;;;;;;-1:-1:-1;;;;;3048:128:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3187:8;:27;;;3225:6;:13;;-1:-1:-1;;3225:13:9;3234:4;3225:13;;;3286:18;;;;;;;;;;;-1:-1:-1;;;;;3286:18:9;;;;;;;;3318:21;;;;;;;;;;;;;;;3261:141;;;;;;;;;;;-1:-1:-1;;;;;3261:141:9;;;;;;3286:18;;3377:15;3261:11;:141::i;1654:20::-;;;;;;;;;:::o;3415:455::-;2315:6;;-1:-1:-1;;;;;2315:6:9;2301:10;:20;2280:113;;;;;-1:-1:-1;;;;;2280:113:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2280:113:9;;;;-1:-1:-1;;;;;2280:113:9;;;;;;;;;;;;;;;3553:6;;;;3552:7;3531:102;;;;;-1:-1:-1;;;;;3531:102:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3531:102:9;;;;-1:-1:-1;;;;;3531:102:9;;;;;;;;;;;;;;;3644:37;;;;:13;;:37;;;;;:::i;:::-;-1:-1:-1;3692:8:9;:15;;-1:-1:-1;;3692:15:9;;;;;3743:20;;;;;;;;;;;-1:-1:-1;;;;;3743:20:9;;;;;;;;3777:23;;;;;;;;;;;;;;;3718:145;;;;;;;;;;;-1:-1:-1;;;;;3718:145:9;;;;;;;;;3838:15;3718:11;:145::i;1303:24::-;;;-1:-1:-1;;;;;1303:24:9;;:::o;1477:27::-;;;;;;;;;;;;;;;-1:-1:-1;;1477:27:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7312:119;7409:8;:15;7312:119;;:::o;4331:804::-;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;4591:8;;4626:99;;;;;;;;;;;;;;;;;-1:-1:-1;;4564:23:9;;-1:-1:-1;;;;;4591:8:9;;;;4626:99;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4626:99:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4626:99:9;;;-1:-1:-1;;26:21;;;22:32;6:49;;4626:99:9;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;4591:144:9;;;;4626:99;;-1:-1:-1;4591:144:9;-1:-1:-1;4591:144:9;;-1:-1:-1;25:18;4591:144:9;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4591:144:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4549:186:9;;;;4767:7;4746:94;;;;;;;-1:-1:-1;;;;;4746:94:9;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4746:94:9;;;;;;;;;;;;;;;4872:33;4894:10;4872:21;:33::i;:::-;4851:4;:55;;-1:-1:-1;;;;;;4851:55:9;;-1:-1:-1;;;;;4851:55:9;;;;;;;;;;;;;4917:128;;-1:-1:-1;;;;;4917:128:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:4;;;;;;;;:9;;:128;;4970:8;;4917:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4917:128:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4917:128:9;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4917:128:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4917:128:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5074:18:9;;;;;;;;;;;-1:-1:-1;;;;;5074:18:9;;;;;;;;5094;;;;;;;;;;;-1:-1:-1;;;;;5094:18:9;;;;5122:4;;5056:72;;-1:-1:-1;5074:18:9;;-1:-1:-1;5122:4:9;;;-1:-1:-1;;;;;5122:4:9;5056:17;:72::i;:::-;2234:1;;4331:804;;;;;:::o;1545:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1545:24:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:24:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:25;;;;;;-1:-1:-1;;;;;1707:25:9;;:::o;5141:292::-;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;5247:25;;;;:14;;:25;;;;;:::i;:::-;-1:-1:-1;5308:19:9;;;;;;;;;;;-1:-1:-1;;;;;5308:19:9;;;;;;;;5341:22;;;;;;;;;;;;;;;5283:143;;;;;;;;;;;-1:-1:-1;;;;;5283:143:9;;;;;;;;;5401:15;5283:11;:143::i;2625:181::-;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;2740:14;:59;;-1:-1:-1;;;;;;2740:59:9;-1:-1:-1;;;;;2740:59:9;;;;;;;;;;2625:181::o;1390:16::-;;;;;;;;;;;;;;;-1:-1:-1;;1390:16:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1510:28;;;;;;;;;;;;;;;-1:-1:-1;;1510:28:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1602:21;;;;:::o;1360:23::-;;;-1:-1:-1;;;;;1360:23:9;;:::o;1444:27::-;;;;;;;;;;;;;;;-1:-1:-1;;1444:27:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5439:826;2114:9;;-1:-1:-1;;;;;2114:9:9;2100:10;:23;;:47;;-1:-1:-1;2141:6:9;;-1:-1:-1;;;;;2141:6:9;2127:10;:20;2100:47;2079:144;;;;;;;-1:-1:-1;;;;;2079:144:9;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2079:144:9;;;;-1:-1:-1;;;;;;;;;;;2079:144:9;;;;;;;;;;;;;;;5645:12;5659:23;5686:8;;;;;;;;;-1:-1:-1;;;;;5686:8:9;-1:-1:-1;;;;;5686:21:9;5823:7;5848:9;5875:14;5907;5721:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5721:214:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5721:214:9;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5721:214:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5721:214:9;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5721:214:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5721:214:9;;;-1:-1:-1;;26:21;;;22:32;6:49;;5721:214:9;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;5686:259:9;;;;5721:214;;-1:-1:-1;5686:259:9;-1:-1:-1;5686:259:9;;-1:-1:-1;25:18;-1:-1;5686:259:9;-1:-1:-1;5686:259:9;;-1:-1:-1;5686:259:9;;-1:-1:-1;25:18;;-1:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5686:259:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5644:301:9;;;;5977:7;5956:95;;;;;;;-1:-1:-1;;;;;5956:95:9;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5956:95:9;;;;;;;;;;;;;;;6095:33;6117:10;6095:21;:33::i;:::-;6062:6;6069:7;6062:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;6062:15:9;;;;;-1:-1:-1;6062:15:9;;;;;;;;;;;:67;;-1:-1:-1;;;;;;6062:67:9;-1:-1:-1;;;;;6062:67:9;;;;;;;;;;;-1:-1:-1;6140:8:9;27:10:-1;;-1:-1;23:18;;45:23;;;-1:-1;6140:22:9;;;;;;23:18:-1;;-1:-1;6140:22:9;;;;;;;;;;;;:::i;:::-;;;6173:85;6191:19;;;;;;;;;;;;;;-1:-1:-1;;;;;6191:19:9;;;6212;;;;;;;;;;;;;;;;;;6241:6;6248:7;6241:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;6241:15:9;;;;;-1:-1:-1;6241:15:9;;;;;;;;;;;-1:-1:-1;;;;;6241:15:9;;-1:-1:-1;6173:17:9;;-1:-1:-1;6173:85:9:i;:::-;2234:1;;5439:826;;;;:::o;7026:280::-;7178:15;;;;7126:7;;;;7178:6;;7185:7;;7178:15;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7178:15:9;;;;;-1:-1:-1;7178:15:9;;;;;;;;;;;-1:-1:-1;;;;;7178:15:9;7170:38;;;;;;-1:-1:-1;7149:108:9;;-1:-1:-1;7149:108:9;;;;-1:-1:-1;;;;;7149:108:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7283:6;7290:7;7283:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7283:15:9;;;;;-1:-1:-1;7283:15:9;;;;;;;;;;;-1:-1:-1;;;;;7283:15:9;;;-1:-1:-1;;;;7026:280:9:o;46:290:31:-;259:4;247:17;241:24;;46:290::o;6271:749:9:-;6437:24;;6508:506;6544:14;;:72;;;-1:-1:-1;;;;;6544:72:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6544:14:9;;;;:39;;:72;;;;;;;;;-1:-1:-1;6544:72:9;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6544:72:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6544:72:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6544:72:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6544:72:9;;-1:-1:-1;6630:19:9;;-1:-1:-1;;;;;6668:30:9;;;6664:300;;6761:170;;;-1:-1:-1;;;;;6761:170:9;;;;;;;;;;;;;;;;;;;;;6718:21;;;;6761:170;;;;;;;;;-1:-1:-1;6761:170:9;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6761:170:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6761:170:9;;;-1:-1:-1;;26:21;;;22:32;6:49;;6761:170:9;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;6718:231:9;;;;6761:170;;-1:-1:-1;6718:231:9;-1:-1:-1;6718:231:9;;-1:-1:-1;25:18;-1:-1;6718:231:9;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6718:231:9;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6718:231:9;;6664:300;-1:-1:-1;;;;;6982:30:9;;;;6508:506;;6271:749;;;;;:::o;270:7163::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;270:7163:9;;;-1:-1:-1;270:7163:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity <0.6.0;\n\n/*\nGas to deploy: 2.094.931\n*/\n\nimport \"./interfaces/DocumentInterface.sol\";\nimport \"./interfaces/FileInterface.sol\";\nimport \"./interfaces/EventInterface.sol\";\nimport \"./interfaces/SignaturitUserInterface.sol\";\nimport \"./libraries/Utils.sol\";\n\n\ncontract Document is DocumentInterface {\n    string constant private FILE_CREATED_EVENT = \"file.contract.created\";\n    string constant private EVENT_CREATED_EVENT = \"event.contract.created\";\n\n    string constant private ID_DOCUMENT_SIGNED = \"id_document_signed\";\n    string constant private ID_FILE_SIGNED_HASH = \"id_file_signed_hash\";\n    string constant private ID_DOCUMENT_DECLINED = \"id_document_declined\";\n    string constant private ID_DOCUMENT_CANCELED = \"id_document_canceled\";\n\n    string constant private DOCUMENT_SIGNED_EVENT = \"document.contract.signed\";\n    string constant private FILE_SIGNED_HASH_EVENT = \"file.signed_hash.created\";\n    string constant private DOCUMENT_DECLINED_EVENT = \"document.contract.declined\";\n    string constant private DOCUMENT_CANCELED_EVENT = \"document.contract.canceled\";\n\n    string constant private DOCUMENT_NOTIFIERS_KEY = \"document-notifiers\";\n    string constant private FILE_NOTIFIERS_KEY = \"file-notifiers\";\n    string constant private EVENT_NOTIFIERS_KEY = \"event-notifiers\";\n\n    address public signature;\n    address public signer;\n    address public deployer;\n\n    string public id;\n    string public cancelReason;\n    string public signatureType;\n    string public declineReason;\n    string public signedFileHash;\n\n    string[] public eventsId;\n\n    uint public signedAt;\n    uint public createdAt;\n\n    bool public signed;\n    bool public canceled;\n    bool public declined;\n\n    FileInterface public file;\n\n    SignaturitUserInterface public signatureOwner;\n\n    mapping(string => EventInterface) private events;\n\n    constructor(\n        string memory documentId,\n        address signatureDeployer\n    ) public {\n        signature = msg.sender;\n        deployer = signatureDeployer;\n        id = documentId;\n    }\n\n    modifier protected() {\n        require(\n            msg.sender == signature || msg.sender == signer,\n            \"Only the Signature account can perform this action\"\n        );\n\n        _;\n    }\n\n    modifier signerOnly() {\n        require(\n            msg.sender == signer,\n            \"Only the owner account can perform this action\"\n        );\n\n        _;\n    }\n\n    function init(\n        string memory initType,\n        uint documentCreatedAt\n    )\n        public\n        protected\n    {\n        signatureType = initType;\n        createdAt = documentCreatedAt;\n    }\n\n    function setSignatureOwner(\n        address signatureOwnerAdr\n    )\n        public\n        protected\n    {\n        signatureOwner = SignaturitUserInterface(signatureOwnerAdr);\n    }\n\n    function setOwner(\n        address signerAddress\n    )\n        public\n        protected\n    {\n        signer = signerAddress;\n    }\n\n    function sign(\n        uint documentSignedAt\n    )\n        public\n        signerOnly\n    {\n        require(\n            !declined || !canceled,\n            \"Document is already declined or canceled, you can't sign it\"\n        );\n\n        signedAt = documentSignedAt;\n\n        signed = true;\n            \n        createEvent(\n            ID_DOCUMENT_SIGNED,\n            DOCUMENT_SIGNED_EVENT,\n            \"solidity\",\n            block.timestamp\n        );\n    }\n\n    function decline(\n        string memory documentDeclineReason\n    )\n        public\n        signerOnly\n    {\n        require(\n            !signed,\n            \"Document is already signed, you can't decline it\"\n        );\n\n        declineReason = documentDeclineReason;\n\n        declined = true;\n\n        createEvent(\n            ID_DOCUMENT_DECLINED,\n            DOCUMENT_DECLINED_EVENT,\n            \"Solidity\",\n            block.timestamp\n        );\n    }\n\n    function cancel(\n        string memory documentCancelReason\n    )\n        public\n        protected\n    {\n        require(\n            !signed,\n            \"Document is already signed, you can't cancel it\"\n        );\n\n        cancelReason = documentCancelReason;\n\n        canceled = true;\n\n        createEvent(\n            ID_DOCUMENT_CANCELED,\n            DOCUMENT_CANCELED_EVENT,\n            \"solidity\",\n            block.timestamp\n        );\n    }\n\n    function createFile(\n        string memory fileId,\n        string memory fileName,\n        string memory fileHash,\n        uint fileCreatedAt,\n        uint fileSize\n    )\n        public\n        protected\n    {\n        (bool success, bytes memory returnData) = deployer.delegatecall(\n            abi.encodeWithSignature(\n                \"deployFile(string)\",\n                fileId\n            )\n        );\n\n        require(\n            success,\n            \"Error while deploying file from document\"\n        );\n\n        file = FileInterface(Utils._bytesToAddress(returnData));\n\n        file.init(\n                fileName,\n                fileHash,\n                fileCreatedAt,\n                fileSize\n        );\n\n        notifyEntityEvent(FILE_NOTIFIERS_KEY, FILE_CREATED_EVENT, address(file));\n    }\n\n    function setFileHash(\n        string memory fileHash\n    )\n        public\n        protected\n    {\n        signedFileHash = fileHash;\n\n        createEvent(\n            ID_FILE_SIGNED_HASH,\n            FILE_SIGNED_HASH_EVENT,\n            \"solidity\",\n            block.timestamp\n        );\n    }\n\n    function createEvent(\n        string memory eventId,\n        string memory eventType,\n        string memory eventUserAgent,\n        uint eventCreatedAt\n    )\n        public\n        protected\n    {\n        (bool success, bytes memory returnData) = deployer.delegatecall(\n            abi.encodeWithSignature(\n                \"deployEvent(string,string,string,uint256)\",\n                eventId,\n                eventType,\n                eventUserAgent,\n                eventCreatedAt\n            )\n        );\n\n        require(\n            success,\n            \"Error while deploying event from document\"\n        );\n\n        events[eventId] = EventInterface(Utils._bytesToAddress(returnData));\n\n        eventsId.push(eventId);\n\n        notifyEntityEvent(EVENT_NOTIFIERS_KEY, EVENT_CREATED_EVENT, address(events[eventId]));\n    }\n\n    function notifyEntityEvent (\n        string memory notifiersKey,\n        string memory createdEvent,\n        address adrToNotify\n    )\n        internal\n    {\n        address contractToNofify;\n        uint notificationIndex = 0;\n\n        do {\n            contractToNofify = signatureOwner.getAddressArrayAttribute(notifiersKey, notificationIndex);\n            ++notificationIndex;\n\n            if (contractToNofify != address(0)) {\n                contractToNofify.call(\n                    abi.encodeWithSignature(\n                        \"notify(string,address)\",\n                        createdEvent,\n                        adrToNotify\n                    )\n                );\n            }\n        } while (contractToNofify != address(0));\n    }\n\n    function getEvent(\n        string memory eventId\n    )\n        public\n        view\n        returns (address)\n    {\n        require(\n            address(events[eventId]) != address(0),\n            \"The event doesn't exist\"\n        );\n\n        return address(events[eventId]);\n    }\n\n    function getEventsSize()\n        public\n        view\n        returns (uint)\n    {\n        return eventsId.length;\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Document.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Document.sol",
    "exportedSymbols": {
      "Document": [
        2211
      ]
    },
    "id": 2212,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1709,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/DocumentInterface.sol",
        "file": "./interfaces/DocumentInterface.sol",
        "id": 1710,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6881,
        "src": "57:44:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 1711,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6918,
        "src": "102:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 1712,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6892,
        "src": "143:41:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 1713,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 7252,
        "src": "185:50:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 1714,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 7290,
        "src": "236:31:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1715,
              "name": "DocumentInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6880,
              "src": "291:17:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                "typeString": "contract DocumentInterface"
              }
            },
            "id": 1716,
            "nodeType": "InheritanceSpecifier",
            "src": "291:17:9"
          }
        ],
        "contractDependencies": [
          6880
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2211,
        "linearizedBaseContracts": [
          2211,
          6880
        ],
        "name": "Document",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1719,
            "name": "FILE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "315:68:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1717,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652e636f6e74726163742e63726561746564",
              "id": 1718,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "360:23:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2233a27e702ee6162cc2e308200369bccc6b94a4aee0e31589d2f43a31c28a19",
                "typeString": "literal_string \"file.contract.created\""
              },
              "value": "file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1722,
            "name": "EVENT_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "389:70:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1720,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "389:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6576656e742e636f6e74726163742e63726561746564",
              "id": 1721,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "435:24:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_940d087e88f9b637f99eb8adf4909f7a72371a7de914372d49d6ef145f5d420a",
                "typeString": "literal_string \"event.contract.created\""
              },
              "value": "event.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1725,
            "name": "ID_DOCUMENT_SIGNED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "466:65:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1723,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "466:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f7369676e6564",
              "id": 1724,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "511:20:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_228b1ba82a5542287caa0ad0415136f4357cdf65bed7815261f12f2c8d1ac752",
                "typeString": "literal_string \"id_document_signed\""
              },
              "value": "id_document_signed"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1728,
            "name": "ID_FILE_SIGNED_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "537:67:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1726,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "537:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f66696c655f7369676e65645f68617368",
              "id": 1727,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "583:21:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_73964b1c857659209ebddff274827f9d76572d35d8e0b2ad2f060562e90d4c37",
                "typeString": "literal_string \"id_file_signed_hash\""
              },
              "value": "id_file_signed_hash"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1731,
            "name": "ID_DOCUMENT_DECLINED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "610:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1729,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "610:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f6465636c696e6564",
              "id": 1730,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "657:22:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_41db4e0b92cc328bedf32c5534afc9bf76fb5b71dcc031e9fa003ac7fae7c3ea",
                "typeString": "literal_string \"id_document_declined\""
              },
              "value": "id_document_declined"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1734,
            "name": "ID_DOCUMENT_CANCELED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "685:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1732,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "685:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f63616e63656c6564",
              "id": 1733,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "732:22:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8b0ec257356fd8cbb0ac23d2a79b52c5054cf5e9cec64867d8c3a002984c473a",
                "typeString": "literal_string \"id_document_canceled\""
              },
              "value": "id_document_canceled"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1737,
            "name": "DOCUMENT_SIGNED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "761:74:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1735,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "761:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e7369676e6564",
              "id": 1736,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "809:26:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_aae6bdc103ab1bfb5288b5bd226323bcc9bf64a0c6c9c2397194d240d4f79555",
                "typeString": "literal_string \"document.contract.signed\""
              },
              "value": "document.contract.signed"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1740,
            "name": "FILE_SIGNED_HASH_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "841:75:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1738,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "841:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652e7369676e65645f686173682e63726561746564",
              "id": 1739,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "890:26:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_94ed366ee662e1d655954e1467da1ed736a31d54d461ace069e14eeca7b8bc2a",
                "typeString": "literal_string \"file.signed_hash.created\""
              },
              "value": "file.signed_hash.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1743,
            "name": "DOCUMENT_DECLINED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "922:78:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1741,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "922:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e6465636c696e6564",
              "id": 1742,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "972:28:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ae2f65d0a57fa7594533fefbce7f891bb6c78e62bb1f42f07543f6bb11794b15",
                "typeString": "literal_string \"document.contract.declined\""
              },
              "value": "document.contract.declined"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1746,
            "name": "DOCUMENT_CANCELED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1006:78:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1744,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1006:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e63616e63656c6564",
              "id": 1745,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1056:28:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5a47b548790a93579393322213ed266471cd06ad9e9fe62f3f4d38aefc04c7d1",
                "typeString": "literal_string \"document.contract.canceled\""
              },
              "value": "document.contract.canceled"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1749,
            "name": "DOCUMENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1091:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1747,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1091:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742d6e6f74696669657273",
              "id": 1748,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1140:20:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7d28b4fa182b49d585cf0be720ed320f87b6af7199ef0f994429e1aa22d0664d",
                "typeString": "literal_string \"document-notifiers\""
              },
              "value": "document-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1752,
            "name": "FILE_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1166:61:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1750,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1166:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652d6e6f74696669657273",
              "id": 1751,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1211:16:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_564d80aba11e51a3eff777d482df81c48f4da2423384618e7be1ee86ad1bfee6",
                "typeString": "literal_string \"file-notifiers\""
              },
              "value": "file-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1755,
            "name": "EVENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1233:63:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1753,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1233:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6576656e742d6e6f74696669657273",
              "id": 1754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1279:17:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b25bd55d22992cd8575c70596ff0d0e7a67a2b59c4214f4f8859fdd431ce46f0",
                "typeString": "literal_string \"event-notifiers\""
              },
              "value": "event-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1757,
            "name": "signature",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1303:24:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1756,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1303:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1759,
            "name": "signer",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1333:21:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1758,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1333:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1761,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1360:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1760,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1360:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1763,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1390:16:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1762,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1390:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1765,
            "name": "cancelReason",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1412:26:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1764,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1412:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1767,
            "name": "signatureType",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1444:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1766,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1444:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1769,
            "name": "declineReason",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1477:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1768,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1477:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1771,
            "name": "signedFileHash",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1510:28:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1770,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1510:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1774,
            "name": "eventsId",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1545:24:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 1772,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1545:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 1773,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1545:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1776,
            "name": "signedAt",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1576:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1775,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1576:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1778,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1602:21:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1777,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1602:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1780,
            "name": "signed",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1630:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1779,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1630:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1782,
            "name": "canceled",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1654:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1781,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1654:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1784,
            "name": "declined",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1680:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1783,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1680:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1786,
            "name": "file",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1707:25:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FileInterface_$6917",
              "typeString": "contract FileInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1785,
              "name": "FileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6917,
              "src": "1707:13:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FileInterface_$6917",
                "typeString": "contract FileInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1788,
            "name": "signatureOwner",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1739:45:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1787,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "1739:23:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1792,
            "name": "events",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1791:48:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
              "typeString": "mapping(string => contract EventInterface)"
            },
            "typeName": {
              "id": 1791,
              "keyType": {
                "id": 1789,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1799:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1791:33:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                "typeString": "mapping(string => contract EventInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1790,
                "name": "EventInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6891,
                "src": "1809:14:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_EventInterface_$6891",
                  "typeString": "contract EventInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1812,
              "nodeType": "Block",
              "src": "1940:102:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1799,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1757,
                      "src": "1950:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1800,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1962:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1962:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1950:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1803,
                  "nodeType": "ExpressionStatement",
                  "src": "1950:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1761,
                      "src": "1982:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1805,
                      "name": "signatureDeployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1796,
                      "src": "1993:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1982:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1807,
                  "nodeType": "ExpressionStatement",
                  "src": "1982:28:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1808,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1763,
                      "src": "2020:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1809,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1794,
                      "src": "2025:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2020:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1811,
                  "nodeType": "ExpressionStatement",
                  "src": "2020:15:9"
                }
              ]
            },
            "documentation": null,
            "id": 1813,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1794,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1813,
                  "src": "1867:24:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1867:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1796,
                  "name": "signatureDeployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1813,
                  "src": "1901:25:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1795,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1901:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1857:75:9"
            },
            "returnParameters": {
              "id": 1798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1940:0:9"
            },
            "scope": 2211,
            "src": "1846:196:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1829,
              "nodeType": "Block",
              "src": "2069:173:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1816,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "2100:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2100:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1818,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1757,
                            "src": "2114:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2100:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1820,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "2127:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2127:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1822,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1759,
                            "src": "2141:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2127:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2100:47:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865205369676e6174757265206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2161:52:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b6dc031509772ed08a8937d2066ab27bad3476ee7d81d5cd5112cc7006503044",
                          "typeString": "literal_string \"Only the Signature account can perform this action\""
                        },
                        "value": "Only the Signature account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b6dc031509772ed08a8937d2066ab27bad3476ee7d81d5cd5112cc7006503044",
                          "typeString": "literal_string \"Only the Signature account can perform this action\""
                        }
                      ],
                      "id": 1815,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2079:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2079:144:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1827,
                  "nodeType": "ExpressionStatement",
                  "src": "2079:144:9"
                },
                {
                  "id": 1828,
                  "nodeType": "PlaceholderStatement",
                  "src": "2234:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 1830,
            "name": "protected",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1814,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2066:2:9"
            },
            "src": "2048:194:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1841,
              "nodeType": "Block",
              "src": "2270:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1833,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "2301:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2301:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1835,
                          "name": "signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1759,
                          "src": "2315:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2301:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2335:48:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        },
                        "value": "Only the owner account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        }
                      ],
                      "id": 1832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2280:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2280:113:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1839,
                  "nodeType": "ExpressionStatement",
                  "src": "2280:113:9"
                },
                {
                  "id": 1840,
                  "nodeType": "PlaceholderStatement",
                  "src": "2404:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 1842,
            "name": "signerOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2267:2:9"
            },
            "src": "2248:164:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1859,
              "nodeType": "Block",
              "src": "2539:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1851,
                      "name": "signatureType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1767,
                      "src": "2549:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1852,
                      "name": "initType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1844,
                      "src": "2565:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2549:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1854,
                  "nodeType": "ExpressionStatement",
                  "src": "2549:24:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1855,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "2583:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1856,
                      "name": "documentCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1846,
                      "src": "2595:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2583:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1858,
                  "nodeType": "ExpressionStatement",
                  "src": "2583:29:9"
                }
              ]
            },
            "documentation": null,
            "id": 1860,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1849,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1848,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2525:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2525:9:9"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1844,
                  "name": "initType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1860,
                  "src": "2441:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1843,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2441:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1846,
                  "name": "documentCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1860,
                  "src": "2473:22:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1845,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2431:70:9"
            },
            "returnParameters": {
              "id": 1850,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2539:0:9"
            },
            "scope": 2211,
            "src": "2418:201:9",
            "stateMutability": "nonpayable",
            "superFunction": 6804,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1873,
              "nodeType": "Block",
              "src": "2730:76:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1867,
                      "name": "signatureOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "2740:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1869,
                          "name": "signatureOwnerAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1862,
                          "src": "2781:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1868,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "2757:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 1870,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2757:42:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "2740:59:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 1872,
                  "nodeType": "ExpressionStatement",
                  "src": "2740:59:9"
                }
              ]
            },
            "documentation": null,
            "id": 1874,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1864,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2716:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2716:9:9"
              }
            ],
            "name": "setSignatureOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1862,
                  "name": "signatureOwnerAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1874,
                  "src": "2661:25:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2661:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2651:41:9"
            },
            "returnParameters": {
              "id": 1866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2730:0:9"
            },
            "scope": 2211,
            "src": "2625:181:9",
            "stateMutability": "nonpayable",
            "superFunction": 6809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1885,
              "nodeType": "Block",
              "src": "2904:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1881,
                      "name": "signer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1759,
                      "src": "2914:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1882,
                      "name": "signerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1876,
                      "src": "2923:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2914:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1884,
                  "nodeType": "ExpressionStatement",
                  "src": "2914:22:9"
                }
              ]
            },
            "documentation": null,
            "id": 1886,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1879,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1878,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2890:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2890:9:9"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1876,
                  "name": "signerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1886,
                  "src": "2839:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2829:37:9"
            },
            "returnParameters": {
              "id": 1880,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2904:0:9"
            },
            "scope": 2211,
            "src": "2812:131:9",
            "stateMutability": "nonpayable",
            "superFunction": 6814,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1918,
              "nodeType": "Block",
              "src": "3038:371:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3069:9:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1894,
                            "name": "declined",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "3070:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3082:9:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1896,
                            "name": "canceled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1782,
                            "src": "3083:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3069:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479206465636c696e6564206f722063616e63656c65642c20796f752063616e2774207369676e206974",
                        "id": 1899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3105:61:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e98bff8e6b17182218e8be1d052b31e4a53c7a6db1f8da97ccb949d4c58a5fbf",
                          "typeString": "literal_string \"Document is already declined or canceled, you can't sign it\""
                        },
                        "value": "Document is already declined or canceled, you can't sign it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e98bff8e6b17182218e8be1d052b31e4a53c7a6db1f8da97ccb949d4c58a5fbf",
                          "typeString": "literal_string \"Document is already declined or canceled, you can't sign it\""
                        }
                      ],
                      "id": 1893,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3048:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3048:128:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1901,
                  "nodeType": "ExpressionStatement",
                  "src": "3048:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1902,
                      "name": "signedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1776,
                      "src": "3187:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1903,
                      "name": "documentSignedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1888,
                      "src": "3198:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3187:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1905,
                  "nodeType": "ExpressionStatement",
                  "src": "3187:27:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1906,
                      "name": "signed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1780,
                      "src": "3225:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1907,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3234:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3225:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1909,
                  "nodeType": "ExpressionStatement",
                  "src": "3225:13:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1911,
                        "name": "ID_DOCUMENT_SIGNED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1725,
                        "src": "3286:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1912,
                        "name": "DOCUMENT_SIGNED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "3318:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 1913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3353:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1914,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "3377:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3377:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1910,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "3261:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3261:141:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1917,
                  "nodeType": "ExpressionStatement",
                  "src": "3261:141:9"
                }
              ]
            },
            "documentation": null,
            "id": 1919,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1891,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1890,
                  "name": "signerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1842,
                  "src": "3023:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3023:10:9"
              }
            ],
            "name": "sign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1888,
                  "name": "documentSignedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1919,
                  "src": "2972:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1887,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2972:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:37:9"
            },
            "returnParameters": {
              "id": 1892,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3038:0:9"
            },
            "scope": 2211,
            "src": "2949:460:9",
            "stateMutability": "nonpayable",
            "superFunction": 6819,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1948,
              "nodeType": "Block",
              "src": "3521:349:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3552:7:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 1927,
                          "name": "signed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1780,
                          "src": "3553:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479207369676e65642c20796f752063616e2774206465636c696e65206974",
                        "id": 1929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3573:50:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bb8b5933b29d4691d7c37408daf9bb8526ac0e3ff962cf18cc131101d3c2bf39",
                          "typeString": "literal_string \"Document is already signed, you can't decline it\""
                        },
                        "value": "Document is already signed, you can't decline it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bb8b5933b29d4691d7c37408daf9bb8526ac0e3ff962cf18cc131101d3c2bf39",
                          "typeString": "literal_string \"Document is already signed, you can't decline it\""
                        }
                      ],
                      "id": 1926,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3531:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3531:102:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1931,
                  "nodeType": "ExpressionStatement",
                  "src": "3531:102:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1932,
                      "name": "declineReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1769,
                      "src": "3644:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1933,
                      "name": "documentDeclineReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "3660:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "3644:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1935,
                  "nodeType": "ExpressionStatement",
                  "src": "3644:37:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1936,
                      "name": "declined",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1784,
                      "src": "3692:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3703:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3692:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1939,
                  "nodeType": "ExpressionStatement",
                  "src": "3692:15:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1941,
                        "name": "ID_DOCUMENT_DECLINED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1731,
                        "src": "3743:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1942,
                        "name": "DOCUMENT_DECLINED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1743,
                        "src": "3777:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536f6c6964697479",
                        "id": 1943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3814:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60298f78cc0b47170ba79c10aa3851d7648bd96f2f8e46a19dbc777c36fb0c00",
                          "typeString": "literal_string \"Solidity\""
                        },
                        "value": "Solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1944,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "3838:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3838:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60298f78cc0b47170ba79c10aa3851d7648bd96f2f8e46a19dbc777c36fb0c00",
                          "typeString": "literal_string \"Solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1940,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "3718:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3718:145:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1947,
                  "nodeType": "ExpressionStatement",
                  "src": "3718:145:9"
                }
              ]
            },
            "documentation": null,
            "id": 1949,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1924,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1923,
                  "name": "signerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1842,
                  "src": "3506:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3506:10:9"
              }
            ],
            "name": "decline",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "documentDeclineReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 1949,
                  "src": "3441:35:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3441:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3431:51:9"
            },
            "returnParameters": {
              "id": 1925,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3521:0:9"
            },
            "scope": 2211,
            "src": "3415:455:9",
            "stateMutability": "nonpayable",
            "superFunction": 6833,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1978,
              "nodeType": "Block",
              "src": "3979:346:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4010:7:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 1957,
                          "name": "signed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1780,
                          "src": "4011:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479207369676e65642c20796f752063616e27742063616e63656c206974",
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4031:49:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6cd8a8e7243923f92d6e06c35bd7f6b022f9aebd1dd5180297eb5659d9c72679",
                          "typeString": "literal_string \"Document is already signed, you can't cancel it\""
                        },
                        "value": "Document is already signed, you can't cancel it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6cd8a8e7243923f92d6e06c35bd7f6b022f9aebd1dd5180297eb5659d9c72679",
                          "typeString": "literal_string \"Document is already signed, you can't cancel it\""
                        }
                      ],
                      "id": 1956,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3989:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3989:101:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1961,
                  "nodeType": "ExpressionStatement",
                  "src": "3989:101:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1962,
                      "name": "cancelReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1765,
                      "src": "4101:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1963,
                      "name": "documentCancelReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1951,
                      "src": "4116:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4101:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1965,
                  "nodeType": "ExpressionStatement",
                  "src": "4101:35:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1966,
                      "name": "canceled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "4147:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4158:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4147:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1969,
                  "nodeType": "ExpressionStatement",
                  "src": "4147:15:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1971,
                        "name": "ID_DOCUMENT_CANCELED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "4198:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1972,
                        "name": "DOCUMENT_CANCELED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1746,
                        "src": "4232:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 1973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4269:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1974,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "4293:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4293:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1970,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "4173:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4173:145:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1977,
                  "nodeType": "ExpressionStatement",
                  "src": "4173:145:9"
                }
              ]
            },
            "documentation": null,
            "id": 1979,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1954,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1953,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "3965:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3965:9:9"
              }
            ],
            "name": "cancel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1951,
                  "name": "documentCancelReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 1979,
                  "src": "3901:34:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1950,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3901:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3891:50:9"
            },
            "returnParameters": {
              "id": 1955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3979:0:9"
            },
            "scope": 2211,
            "src": "3876:449:9",
            "stateMutability": "nonpayable",
            "superFunction": 6838,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2038,
              "nodeType": "Block",
              "src": "4539:596:9",
              "statements": [
                {
                  "assignments": [
                    1995,
                    1997
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1995,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 2038,
                      "src": "4550:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1994,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4550:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1997,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 2038,
                      "src": "4564:23:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1996,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4564:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2006,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f7946696c6528737472696e6729",
                            "id": 2002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4667:20:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            "value": "deployFile(string)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2003,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1981,
                            "src": "4705:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2000,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "4626:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4626:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4626:99:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1998,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1761,
                        "src": "4591:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4591:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4591:144:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4549:186:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2008,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1995,
                        "src": "4767:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20646f63756d656e74",
                        "id": 2009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4788:42:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d81436e0cf3ce723c5821b6c46fa8171159eed017e505b4ad5c2f9753a506b11",
                          "typeString": "literal_string \"Error while deploying file from document\""
                        },
                        "value": "Error while deploying file from document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d81436e0cf3ce723c5821b6c46fa8171159eed017e505b4ad5c2f9753a506b11",
                          "typeString": "literal_string \"Error while deploying file from document\""
                        }
                      ],
                      "id": 2007,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "4746:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4746:94:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "4746:94:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2012,
                      "name": "file",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1786,
                      "src": "4851:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2016,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1997,
                              "src": "4894:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2014,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "4872:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "4872:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 2017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4872:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2013,
                        "name": "FileInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6917,
                        "src": "4858:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FileInterface_$6917_$",
                          "typeString": "type(contract FileInterface)"
                        }
                      },
                      "id": 2018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4858:48:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "src": "4851:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "id": 2020,
                  "nodeType": "ExpressionStatement",
                  "src": "4851:55:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2024,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1983,
                        "src": "4944:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2025,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1985,
                        "src": "4970:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1987,
                        "src": "4996:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2027,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1989,
                        "src": "5027:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2021,
                        "name": "file",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1786,
                        "src": "4917:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "id": 2023,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6916,
                      "src": "4917:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 2028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4917:128:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2029,
                  "nodeType": "ExpressionStatement",
                  "src": "4917:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2031,
                        "name": "FILE_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1752,
                        "src": "5074:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "FILE_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1719,
                        "src": "5094:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2034,
                            "name": "file",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1786,
                            "src": "5122:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FileInterface_$6917",
                              "typeString": "contract FileInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_FileInterface_$6917",
                              "typeString": "contract FileInterface"
                            }
                          ],
                          "id": 2033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5114:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5114:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2030,
                      "name": "notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2174
                      ],
                      "referencedDeclaration": 2174,
                      "src": "5056:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5056:72:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "5056:72:9"
                }
              ]
            },
            "documentation": null,
            "id": 2039,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1991,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "4525:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4525:9:9"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1981,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4360:20:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4360:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1983,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4390:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1982,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4390:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1985,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4422:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1984,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4422:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1987,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4454:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4454:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1989,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4482:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1988,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4482:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4350:151:9"
            },
            "returnParameters": {
              "id": 1993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4539:0:9"
            },
            "scope": 2211,
            "src": "4331:804:9",
            "stateMutability": "nonpayable",
            "superFunction": 6851,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2058,
              "nodeType": "Block",
              "src": "5237:196:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2046,
                      "name": "signedFileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1771,
                      "src": "5247:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2047,
                      "name": "fileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "5264:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "5247:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "5247:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2051,
                        "name": "ID_FILE_SIGNED_HASH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1728,
                        "src": "5308:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2052,
                        "name": "FILE_SIGNED_HASH_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "5341:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 2053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5377:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "5401:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5401:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2050,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "5283:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 2056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5283:143:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2057,
                  "nodeType": "ExpressionStatement",
                  "src": "5283:143:9"
                }
              ]
            },
            "documentation": null,
            "id": 2059,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2044,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2043,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "5223:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5223:9:9"
              }
            ],
            "name": "setFileHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2059,
                  "src": "5171:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5171:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5161:38:9"
            },
            "returnParameters": {
              "id": 2045,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5237:0:9"
            },
            "scope": 2211,
            "src": "5141:292:9",
            "stateMutability": "nonpayable",
            "superFunction": 6856,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2120,
              "nodeType": "Block",
              "src": "5634:631:9",
              "statements": [
                {
                  "assignments": [
                    2073,
                    2075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2073,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 2120,
                      "src": "5645:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2072,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5645:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2075,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 2120,
                      "src": "5659:23:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2074,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5659:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2087,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f794576656e7428737472696e672c737472696e672c737472696e672c75696e7432353629",
                            "id": 2080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5762:43:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            "value": "deployEvent(string,string,string,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2081,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2061,
                            "src": "5823:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2082,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2063,
                            "src": "5848:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2083,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2065,
                            "src": "5875:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2084,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "5907:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2078,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "5721:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5721:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5721:214:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2076,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1761,
                        "src": "5686:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5686:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 2086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5686:259:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5644:301:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2089,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2073,
                        "src": "5977:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d20646f63756d656e74",
                        "id": 2090,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5998:43:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ff8fa4206de4cac8f9ee2d47c80301d53b79229d92bd08c65d656c5e22c05dd4",
                          "typeString": "literal_string \"Error while deploying event from document\""
                        },
                        "value": "Error while deploying event from document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ff8fa4206de4cac8f9ee2d47c80301d53b79229d92bd08c65d656c5e22c05dd4",
                          "typeString": "literal_string \"Error while deploying event from document\""
                        }
                      ],
                      "id": 2088,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "5956:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5956:95:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2092,
                  "nodeType": "ExpressionStatement",
                  "src": "5956:95:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2093,
                        "name": "events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1792,
                        "src": "6062:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                          "typeString": "mapping(string memory => contract EventInterface)"
                        }
                      },
                      "id": 2095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "6069:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6062:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2099,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6117:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2097,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "6095:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 2098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "6095:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 2100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6095:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2096,
                        "name": "EventInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6891,
                        "src": "6080:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                          "typeString": "type(contract EventInterface)"
                        }
                      },
                      "id": 2101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6080:49:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "src": "6062:67:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "id": 2103,
                  "nodeType": "ExpressionStatement",
                  "src": "6062:67:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2107,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "6154:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2104,
                        "name": "eventsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "6140:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6140:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 2108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6140:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2109,
                  "nodeType": "ExpressionStatement",
                  "src": "6140:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2111,
                        "name": "EVENT_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1755,
                        "src": "6191:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2112,
                        "name": "EVENT_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1722,
                        "src": "6212:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2114,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1792,
                              "src": "6241:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                "typeString": "mapping(string memory => contract EventInterface)"
                              }
                            },
                            "id": 2116,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2115,
                              "name": "eventId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "6248:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6241:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EventInterface_$6891",
                              "typeString": "contract EventInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EventInterface_$6891",
                              "typeString": "contract EventInterface"
                            }
                          ],
                          "id": 2113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6233:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6233:24:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2110,
                      "name": "notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2174
                      ],
                      "referencedDeclaration": 2174,
                      "src": "6173:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 2118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6173:85:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2119,
                  "nodeType": "ExpressionStatement",
                  "src": "6173:85:9"
                }
              ]
            },
            "documentation": null,
            "id": 2121,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2070,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2069,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "5620:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5620:9:9"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2061,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5469:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2060,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5469:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2063,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5500:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2062,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5500:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2065,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5533:28:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2064,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5533:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2067,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5571:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2066,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5571:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5459:137:9"
            },
            "returnParameters": {
              "id": 2071,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5634:0:9"
            },
            "scope": 2211,
            "src": "5439:826:9",
            "stateMutability": "nonpayable",
            "superFunction": 6867,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2173,
              "nodeType": "Block",
              "src": "6427:593:9",
              "statements": [
                {
                  "assignments": [
                    2131
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2131,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 2173,
                      "src": "6437:24:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2130,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6437:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2132,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6437:24:9"
                },
                {
                  "assignments": [
                    2134
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2134,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2173,
                      "src": "6471:22:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2133,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6471:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2136,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6496:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6471:26:9"
                },
                {
                  "body": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "6511:463:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2137,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "6525:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2140,
                                "name": "notifiersKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2123,
                                "src": "6584:12:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2141,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2134,
                                "src": "6598:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2138,
                                "name": "signatureOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1788,
                                "src": "6544:14:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 2139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "6544:39:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (string memory,uint256) view external returns (address)"
                              }
                            },
                            "id": 2142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6544:72:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6525:91:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2144,
                        "nodeType": "ExpressionStatement",
                        "src": "6525:91:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6630:19:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2145,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2134,
                            "src": "6632:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2147,
                        "nodeType": "ExpressionStatement",
                        "src": "6630:19:9"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "6668:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6696:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6688:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6688:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6668:30:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2165,
                        "nodeType": "IfStatement",
                        "src": "6664:300:9",
                        "trueBody": {
                          "id": 2164,
                          "nodeType": "Block",
                          "src": "6700:264:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 2158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6810:24:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2159,
                                        "name": "createdEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2125,
                                        "src": "6860:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2160,
                                        "name": "adrToNotify",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2127,
                                        "src": "6898:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2156,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "6761:3:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6761:23:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 2161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6761:170:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2153,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2131,
                                    "src": "6718:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 2155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6718:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6718:231:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 2163,
                              "nodeType": "ExpressionStatement",
                              "src": "6718:231:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2167,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2131,
                      "src": "6982:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7010:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7002:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7002:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6982:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2172,
                  "nodeType": "DoWhileStatement",
                  "src": "6508:506:9"
                }
              ]
            },
            "documentation": null,
            "id": 2174,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyEntityEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2123,
                  "name": "notifiersKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6308:26:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2122,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6308:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2125,
                  "name": "createdEvent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6344:26:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2124,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6344:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2127,
                  "name": "adrToNotify",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6380:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2126,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6380:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6298:107:9"
            },
            "returnParameters": {
              "id": 2129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6427:0:9"
            },
            "scope": 2211,
            "src": "6271:749:9",
            "stateMutability": "nonpayable",
            "superFunction": 6828,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2200,
              "nodeType": "Block",
              "src": "7139:167:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2183,
                                "name": "events",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1792,
                                "src": "7178:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                  "typeString": "mapping(string memory => contract EventInterface)"
                                }
                              },
                              "id": 2185,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2184,
                                "name": "eventId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2176,
                                "src": "7185:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7178:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            ],
                            "id": 2182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7170:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7170:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7206:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7198:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7198:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "7170:38:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206576656e7420646f65736e2774206578697374",
                        "id": 2191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7222:25:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_121220d9b9f750b93d8abcbd1899f1dc548a835b45bc2fef201402b19ff81e47",
                          "typeString": "literal_string \"The event doesn't exist\""
                        },
                        "value": "The event doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_121220d9b9f750b93d8abcbd1899f1dc548a835b45bc2fef201402b19ff81e47",
                          "typeString": "literal_string \"The event doesn't exist\""
                        }
                      ],
                      "id": 2181,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7149:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7149:108:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2193,
                  "nodeType": "ExpressionStatement",
                  "src": "7149:108:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2195,
                          "name": "events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "7283:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                            "typeString": "mapping(string memory => contract EventInterface)"
                          }
                        },
                        "id": 2197,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2196,
                          "name": "eventId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2176,
                          "src": "7290:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7283:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 2194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7275:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 2198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7275:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2180,
                  "id": 2199,
                  "nodeType": "Return",
                  "src": "7268:31:9"
                }
              ]
            },
            "documentation": null,
            "id": 2201,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2176,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "7053:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2175,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7053:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7043:37:9"
            },
            "returnParameters": {
              "id": 2180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2179,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "7126:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2178,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7126:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7125:9:9"
            },
            "scope": 2211,
            "src": "7026:280:9",
            "stateMutability": "view",
            "superFunction": 6874,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2209,
              "nodeType": "Block",
              "src": "7392:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2206,
                      "name": "eventsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1774,
                      "src": "7409:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2207,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7409:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2205,
                  "id": 2208,
                  "nodeType": "Return",
                  "src": "7402:22:9"
                }
              ]
            },
            "documentation": null,
            "id": 2210,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7334:2:9"
            },
            "returnParameters": {
              "id": 2205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2204,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2210,
                  "src": "7382:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2203,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7382:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7381:6:9"
            },
            "scope": 2211,
            "src": "7312:119:9",
            "stateMutability": "view",
            "superFunction": 6879,
            "visibility": "public"
          }
        ],
        "scope": 2212,
        "src": "270:7163:9"
      }
    ],
    "src": "0:7434:9"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/Document.sol",
    "exportedSymbols": {
      "Document": [
        2211
      ]
    },
    "id": 2212,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1709,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/DocumentInterface.sol",
        "file": "./interfaces/DocumentInterface.sol",
        "id": 1710,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6881,
        "src": "57:44:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/FileInterface.sol",
        "file": "./interfaces/FileInterface.sol",
        "id": 1711,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6918,
        "src": "102:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/EventInterface.sol",
        "file": "./interfaces/EventInterface.sol",
        "id": 1712,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 6892,
        "src": "143:41:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/interfaces/SignaturitUserInterface.sol",
        "file": "./interfaces/SignaturitUserInterface.sol",
        "id": 1713,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 7252,
        "src": "185:50:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 1714,
        "nodeType": "ImportDirective",
        "scope": 2212,
        "sourceUnit": 7290,
        "src": "236:31:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1715,
              "name": "DocumentInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6880,
              "src": "291:17:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentInterface_$6880",
                "typeString": "contract DocumentInterface"
              }
            },
            "id": 1716,
            "nodeType": "InheritanceSpecifier",
            "src": "291:17:9"
          }
        ],
        "contractDependencies": [
          6880
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2211,
        "linearizedBaseContracts": [
          2211,
          6880
        ],
        "name": "Document",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1719,
            "name": "FILE_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "315:68:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1717,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652e636f6e74726163742e63726561746564",
              "id": 1718,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "360:23:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_2233a27e702ee6162cc2e308200369bccc6b94a4aee0e31589d2f43a31c28a19",
                "typeString": "literal_string \"file.contract.created\""
              },
              "value": "file.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1722,
            "name": "EVENT_CREATED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "389:70:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1720,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "389:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6576656e742e636f6e74726163742e63726561746564",
              "id": 1721,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "435:24:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_940d087e88f9b637f99eb8adf4909f7a72371a7de914372d49d6ef145f5d420a",
                "typeString": "literal_string \"event.contract.created\""
              },
              "value": "event.contract.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1725,
            "name": "ID_DOCUMENT_SIGNED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "466:65:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1723,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "466:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f7369676e6564",
              "id": 1724,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "511:20:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_228b1ba82a5542287caa0ad0415136f4357cdf65bed7815261f12f2c8d1ac752",
                "typeString": "literal_string \"id_document_signed\""
              },
              "value": "id_document_signed"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1728,
            "name": "ID_FILE_SIGNED_HASH",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "537:67:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1726,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "537:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f66696c655f7369676e65645f68617368",
              "id": 1727,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "583:21:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_73964b1c857659209ebddff274827f9d76572d35d8e0b2ad2f060562e90d4c37",
                "typeString": "literal_string \"id_file_signed_hash\""
              },
              "value": "id_file_signed_hash"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1731,
            "name": "ID_DOCUMENT_DECLINED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "610:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1729,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "610:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f6465636c696e6564",
              "id": 1730,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "657:22:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_41db4e0b92cc328bedf32c5534afc9bf76fb5b71dcc031e9fa003ac7fae7c3ea",
                "typeString": "literal_string \"id_document_declined\""
              },
              "value": "id_document_declined"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1734,
            "name": "ID_DOCUMENT_CANCELED",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "685:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1732,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "685:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "69645f646f63756d656e745f63616e63656c6564",
              "id": 1733,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "732:22:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8b0ec257356fd8cbb0ac23d2a79b52c5054cf5e9cec64867d8c3a002984c473a",
                "typeString": "literal_string \"id_document_canceled\""
              },
              "value": "id_document_canceled"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1737,
            "name": "DOCUMENT_SIGNED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "761:74:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1735,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "761:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e7369676e6564",
              "id": 1736,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "809:26:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_aae6bdc103ab1bfb5288b5bd226323bcc9bf64a0c6c9c2397194d240d4f79555",
                "typeString": "literal_string \"document.contract.signed\""
              },
              "value": "document.contract.signed"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1740,
            "name": "FILE_SIGNED_HASH_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "841:75:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1738,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "841:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652e7369676e65645f686173682e63726561746564",
              "id": 1739,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "890:26:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_94ed366ee662e1d655954e1467da1ed736a31d54d461ace069e14eeca7b8bc2a",
                "typeString": "literal_string \"file.signed_hash.created\""
              },
              "value": "file.signed_hash.created"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1743,
            "name": "DOCUMENT_DECLINED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "922:78:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1741,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "922:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e6465636c696e6564",
              "id": 1742,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "972:28:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ae2f65d0a57fa7594533fefbce7f891bb6c78e62bb1f42f07543f6bb11794b15",
                "typeString": "literal_string \"document.contract.declined\""
              },
              "value": "document.contract.declined"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1746,
            "name": "DOCUMENT_CANCELED_EVENT",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1006:78:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1744,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1006:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742e636f6e74726163742e63616e63656c6564",
              "id": 1745,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1056:28:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5a47b548790a93579393322213ed266471cd06ad9e9fe62f3f4d38aefc04c7d1",
                "typeString": "literal_string \"document.contract.canceled\""
              },
              "value": "document.contract.canceled"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1749,
            "name": "DOCUMENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1091:69:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1747,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1091:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "646f63756d656e742d6e6f74696669657273",
              "id": 1748,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1140:20:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7d28b4fa182b49d585cf0be720ed320f87b6af7199ef0f994429e1aa22d0664d",
                "typeString": "literal_string \"document-notifiers\""
              },
              "value": "document-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1752,
            "name": "FILE_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1166:61:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1750,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1166:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66696c652d6e6f74696669657273",
              "id": 1751,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1211:16:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_564d80aba11e51a3eff777d482df81c48f4da2423384618e7be1ee86ad1bfee6",
                "typeString": "literal_string \"file-notifiers\""
              },
              "value": "file-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 1755,
            "name": "EVENT_NOTIFIERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1233:63:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1753,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1233:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6576656e742d6e6f74696669657273",
              "id": 1754,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1279:17:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b25bd55d22992cd8575c70596ff0d0e7a67a2b59c4214f4f8859fdd431ce46f0",
                "typeString": "literal_string \"event-notifiers\""
              },
              "value": "event-notifiers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1757,
            "name": "signature",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1303:24:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1756,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1303:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1759,
            "name": "signer",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1333:21:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1758,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1333:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1761,
            "name": "deployer",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1360:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1760,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1360:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1763,
            "name": "id",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1390:16:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1762,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1390:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1765,
            "name": "cancelReason",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1412:26:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1764,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1412:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1767,
            "name": "signatureType",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1444:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1766,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1444:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1769,
            "name": "declineReason",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1477:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1768,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1477:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1771,
            "name": "signedFileHash",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1510:28:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1770,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1510:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1774,
            "name": "eventsId",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1545:24:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 1772,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1545:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 1773,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "1545:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1776,
            "name": "signedAt",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1576:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1775,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1576:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1778,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1602:21:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1777,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1602:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1780,
            "name": "signed",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1630:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1779,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1630:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1782,
            "name": "canceled",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1654:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1781,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1654:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1784,
            "name": "declined",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1680:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1783,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1680:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1786,
            "name": "file",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1707:25:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FileInterface_$6917",
              "typeString": "contract FileInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1785,
              "name": "FileInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6917,
              "src": "1707:13:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FileInterface_$6917",
                "typeString": "contract FileInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1788,
            "name": "signatureOwner",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1739:45:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
              "typeString": "contract SignaturitUserInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1787,
              "name": "SignaturitUserInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7251,
              "src": "1739:23:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                "typeString": "contract SignaturitUserInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1792,
            "name": "events",
            "nodeType": "VariableDeclaration",
            "scope": 2211,
            "src": "1791:48:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
              "typeString": "mapping(string => contract EventInterface)"
            },
            "typeName": {
              "id": 1791,
              "keyType": {
                "id": 1789,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "1799:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "1791:33:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                "typeString": "mapping(string => contract EventInterface)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1790,
                "name": "EventInterface",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 6891,
                "src": "1809:14:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_EventInterface_$6891",
                  "typeString": "contract EventInterface"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1812,
              "nodeType": "Block",
              "src": "1940:102:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1799,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1757,
                      "src": "1950:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1800,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "1962:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1962:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1950:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1803,
                  "nodeType": "ExpressionStatement",
                  "src": "1950:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "deployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1761,
                      "src": "1982:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1805,
                      "name": "signatureDeployer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1796,
                      "src": "1993:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1982:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1807,
                  "nodeType": "ExpressionStatement",
                  "src": "1982:28:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1808,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1763,
                      "src": "2020:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1809,
                      "name": "documentId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1794,
                      "src": "2025:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2020:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1811,
                  "nodeType": "ExpressionStatement",
                  "src": "2020:15:9"
                }
              ]
            },
            "documentation": null,
            "id": 1813,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1794,
                  "name": "documentId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1813,
                  "src": "1867:24:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1867:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1796,
                  "name": "signatureDeployer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1813,
                  "src": "1901:25:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1795,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1901:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1857:75:9"
            },
            "returnParameters": {
              "id": 1798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1940:0:9"
            },
            "scope": 2211,
            "src": "1846:196:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1829,
              "nodeType": "Block",
              "src": "2069:173:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1816,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "2100:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2100:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1818,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1757,
                            "src": "2114:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2100:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1820,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "2127:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2127:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1822,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1759,
                            "src": "2141:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2127:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2100:47:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865205369676e6174757265206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2161:52:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b6dc031509772ed08a8937d2066ab27bad3476ee7d81d5cd5112cc7006503044",
                          "typeString": "literal_string \"Only the Signature account can perform this action\""
                        },
                        "value": "Only the Signature account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b6dc031509772ed08a8937d2066ab27bad3476ee7d81d5cd5112cc7006503044",
                          "typeString": "literal_string \"Only the Signature account can perform this action\""
                        }
                      ],
                      "id": 1815,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2079:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2079:144:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1827,
                  "nodeType": "ExpressionStatement",
                  "src": "2079:144:9"
                },
                {
                  "id": 1828,
                  "nodeType": "PlaceholderStatement",
                  "src": "2234:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 1830,
            "name": "protected",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1814,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2066:2:9"
            },
            "src": "2048:194:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1841,
              "nodeType": "Block",
              "src": "2270:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1833,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7304,
                            "src": "2301:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2301:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1835,
                          "name": "signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1759,
                          "src": "2315:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2301:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920746865206f776e6572206163636f756e742063616e20706572666f726d207468697320616374696f6e",
                        "id": 1837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2335:48:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        },
                        "value": "Only the owner account can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dda88dcc370e8766c18dad64e72cd0856ea516c4f5ad36f04f56bfa5e28ea0d",
                          "typeString": "literal_string \"Only the owner account can perform this action\""
                        }
                      ],
                      "id": 1832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2280:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2280:113:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1839,
                  "nodeType": "ExpressionStatement",
                  "src": "2280:113:9"
                },
                {
                  "id": 1840,
                  "nodeType": "PlaceholderStatement",
                  "src": "2404:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 1842,
            "name": "signerOnly",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2267:2:9"
            },
            "src": "2248:164:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1859,
              "nodeType": "Block",
              "src": "2539:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1851,
                      "name": "signatureType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1767,
                      "src": "2549:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1852,
                      "name": "initType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1844,
                      "src": "2565:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2549:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1854,
                  "nodeType": "ExpressionStatement",
                  "src": "2549:24:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1855,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "2583:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1856,
                      "name": "documentCreatedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1846,
                      "src": "2595:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2583:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1858,
                  "nodeType": "ExpressionStatement",
                  "src": "2583:29:9"
                }
              ]
            },
            "documentation": null,
            "id": 1860,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1849,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1848,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2525:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2525:9:9"
              }
            ],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1844,
                  "name": "initType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1860,
                  "src": "2441:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1843,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2441:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1846,
                  "name": "documentCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1860,
                  "src": "2473:22:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1845,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2431:70:9"
            },
            "returnParameters": {
              "id": 1850,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2539:0:9"
            },
            "scope": 2211,
            "src": "2418:201:9",
            "stateMutability": "nonpayable",
            "superFunction": 6804,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1873,
              "nodeType": "Block",
              "src": "2730:76:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1867,
                      "name": "signatureOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "2740:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1869,
                          "name": "signatureOwnerAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1862,
                          "src": "2781:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1868,
                        "name": "SignaturitUserInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7251,
                        "src": "2757:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignaturitUserInterface_$7251_$",
                          "typeString": "type(contract SignaturitUserInterface)"
                        }
                      },
                      "id": 1870,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2757:42:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                        "typeString": "contract SignaturitUserInterface"
                      }
                    },
                    "src": "2740:59:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                      "typeString": "contract SignaturitUserInterface"
                    }
                  },
                  "id": 1872,
                  "nodeType": "ExpressionStatement",
                  "src": "2740:59:9"
                }
              ]
            },
            "documentation": null,
            "id": 1874,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1864,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2716:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2716:9:9"
              }
            ],
            "name": "setSignatureOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1862,
                  "name": "signatureOwnerAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1874,
                  "src": "2661:25:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2661:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2651:41:9"
            },
            "returnParameters": {
              "id": 1866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2730:0:9"
            },
            "scope": 2211,
            "src": "2625:181:9",
            "stateMutability": "nonpayable",
            "superFunction": 6809,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1885,
              "nodeType": "Block",
              "src": "2904:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1881,
                      "name": "signer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1759,
                      "src": "2914:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1882,
                      "name": "signerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1876,
                      "src": "2923:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2914:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1884,
                  "nodeType": "ExpressionStatement",
                  "src": "2914:22:9"
                }
              ]
            },
            "documentation": null,
            "id": 1886,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1879,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1878,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "2890:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2890:9:9"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1876,
                  "name": "signerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1886,
                  "src": "2839:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2829:37:9"
            },
            "returnParameters": {
              "id": 1880,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2904:0:9"
            },
            "scope": 2211,
            "src": "2812:131:9",
            "stateMutability": "nonpayable",
            "superFunction": 6814,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1918,
              "nodeType": "Block",
              "src": "3038:371:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3069:9:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1894,
                            "name": "declined",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "3070:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3082:9:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1896,
                            "name": "canceled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1782,
                            "src": "3083:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3069:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479206465636c696e6564206f722063616e63656c65642c20796f752063616e2774207369676e206974",
                        "id": 1899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3105:61:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e98bff8e6b17182218e8be1d052b31e4a53c7a6db1f8da97ccb949d4c58a5fbf",
                          "typeString": "literal_string \"Document is already declined or canceled, you can't sign it\""
                        },
                        "value": "Document is already declined or canceled, you can't sign it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e98bff8e6b17182218e8be1d052b31e4a53c7a6db1f8da97ccb949d4c58a5fbf",
                          "typeString": "literal_string \"Document is already declined or canceled, you can't sign it\""
                        }
                      ],
                      "id": 1893,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3048:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3048:128:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1901,
                  "nodeType": "ExpressionStatement",
                  "src": "3048:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1902,
                      "name": "signedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1776,
                      "src": "3187:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1903,
                      "name": "documentSignedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1888,
                      "src": "3198:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3187:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1905,
                  "nodeType": "ExpressionStatement",
                  "src": "3187:27:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1906,
                      "name": "signed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1780,
                      "src": "3225:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1907,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3234:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3225:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1909,
                  "nodeType": "ExpressionStatement",
                  "src": "3225:13:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1911,
                        "name": "ID_DOCUMENT_SIGNED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1725,
                        "src": "3286:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1912,
                        "name": "DOCUMENT_SIGNED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "3318:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 1913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3353:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1914,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "3377:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3377:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1910,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "3261:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3261:141:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1917,
                  "nodeType": "ExpressionStatement",
                  "src": "3261:141:9"
                }
              ]
            },
            "documentation": null,
            "id": 1919,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1891,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1890,
                  "name": "signerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1842,
                  "src": "3023:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3023:10:9"
              }
            ],
            "name": "sign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1888,
                  "name": "documentSignedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 1919,
                  "src": "2972:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1887,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2972:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:37:9"
            },
            "returnParameters": {
              "id": 1892,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3038:0:9"
            },
            "scope": 2211,
            "src": "2949:460:9",
            "stateMutability": "nonpayable",
            "superFunction": 6819,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1948,
              "nodeType": "Block",
              "src": "3521:349:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3552:7:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 1927,
                          "name": "signed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1780,
                          "src": "3553:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479207369676e65642c20796f752063616e2774206465636c696e65206974",
                        "id": 1929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3573:50:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bb8b5933b29d4691d7c37408daf9bb8526ac0e3ff962cf18cc131101d3c2bf39",
                          "typeString": "literal_string \"Document is already signed, you can't decline it\""
                        },
                        "value": "Document is already signed, you can't decline it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bb8b5933b29d4691d7c37408daf9bb8526ac0e3ff962cf18cc131101d3c2bf39",
                          "typeString": "literal_string \"Document is already signed, you can't decline it\""
                        }
                      ],
                      "id": 1926,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3531:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3531:102:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1931,
                  "nodeType": "ExpressionStatement",
                  "src": "3531:102:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1932,
                      "name": "declineReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1769,
                      "src": "3644:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1933,
                      "name": "documentDeclineReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1921,
                      "src": "3660:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "3644:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1935,
                  "nodeType": "ExpressionStatement",
                  "src": "3644:37:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1936,
                      "name": "declined",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1784,
                      "src": "3692:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3703:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3692:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1939,
                  "nodeType": "ExpressionStatement",
                  "src": "3692:15:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1941,
                        "name": "ID_DOCUMENT_DECLINED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1731,
                        "src": "3743:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1942,
                        "name": "DOCUMENT_DECLINED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1743,
                        "src": "3777:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536f6c6964697479",
                        "id": 1943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3814:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60298f78cc0b47170ba79c10aa3851d7648bd96f2f8e46a19dbc777c36fb0c00",
                          "typeString": "literal_string \"Solidity\""
                        },
                        "value": "Solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1944,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "3838:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3838:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60298f78cc0b47170ba79c10aa3851d7648bd96f2f8e46a19dbc777c36fb0c00",
                          "typeString": "literal_string \"Solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1940,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "3718:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3718:145:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1947,
                  "nodeType": "ExpressionStatement",
                  "src": "3718:145:9"
                }
              ]
            },
            "documentation": null,
            "id": 1949,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1924,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1923,
                  "name": "signerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1842,
                  "src": "3506:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3506:10:9"
              }
            ],
            "name": "decline",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "documentDeclineReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 1949,
                  "src": "3441:35:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3441:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3431:51:9"
            },
            "returnParameters": {
              "id": 1925,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3521:0:9"
            },
            "scope": 2211,
            "src": "3415:455:9",
            "stateMutability": "nonpayable",
            "superFunction": 6833,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1978,
              "nodeType": "Block",
              "src": "3979:346:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4010:7:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 1957,
                          "name": "signed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1780,
                          "src": "4011:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f63756d656e7420697320616c7265616479207369676e65642c20796f752063616e27742063616e63656c206974",
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4031:49:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6cd8a8e7243923f92d6e06c35bd7f6b022f9aebd1dd5180297eb5659d9c72679",
                          "typeString": "literal_string \"Document is already signed, you can't cancel it\""
                        },
                        "value": "Document is already signed, you can't cancel it"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6cd8a8e7243923f92d6e06c35bd7f6b022f9aebd1dd5180297eb5659d9c72679",
                          "typeString": "literal_string \"Document is already signed, you can't cancel it\""
                        }
                      ],
                      "id": 1956,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "3989:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3989:101:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1961,
                  "nodeType": "ExpressionStatement",
                  "src": "3989:101:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1962,
                      "name": "cancelReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1765,
                      "src": "4101:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1963,
                      "name": "documentCancelReason",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1951,
                      "src": "4116:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4101:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1965,
                  "nodeType": "ExpressionStatement",
                  "src": "4101:35:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1966,
                      "name": "canceled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "4147:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4158:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4147:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1969,
                  "nodeType": "ExpressionStatement",
                  "src": "4147:15:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1971,
                        "name": "ID_DOCUMENT_CANCELED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "4198:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1972,
                        "name": "DOCUMENT_CANCELED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1746,
                        "src": "4232:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 1973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4269:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1974,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "4293:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4293:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1970,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "4173:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 1976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4173:145:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1977,
                  "nodeType": "ExpressionStatement",
                  "src": "4173:145:9"
                }
              ]
            },
            "documentation": null,
            "id": 1979,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1954,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1953,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "3965:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3965:9:9"
              }
            ],
            "name": "cancel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1951,
                  "name": "documentCancelReason",
                  "nodeType": "VariableDeclaration",
                  "scope": 1979,
                  "src": "3901:34:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1950,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3901:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3891:50:9"
            },
            "returnParameters": {
              "id": 1955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3979:0:9"
            },
            "scope": 2211,
            "src": "3876:449:9",
            "stateMutability": "nonpayable",
            "superFunction": 6838,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2038,
              "nodeType": "Block",
              "src": "4539:596:9",
              "statements": [
                {
                  "assignments": [
                    1995,
                    1997
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1995,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 2038,
                      "src": "4550:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1994,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4550:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1997,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 2038,
                      "src": "4564:23:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1996,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4564:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2006,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f7946696c6528737472696e6729",
                            "id": 2002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4667:20:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            "value": "deployFile(string)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2003,
                            "name": "fileId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1981,
                            "src": "4705:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a917101201e7b37e2182b00cd3d4f57fad02daf7b58b19371b9ac481c9b2b5f3",
                              "typeString": "literal_string \"deployFile(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2000,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "4626:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4626:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4626:99:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1998,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1761,
                        "src": "4591:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4591:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4591:144:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4549:186:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2008,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1995,
                        "src": "4767:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e672066696c652066726f6d20646f63756d656e74",
                        "id": 2009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4788:42:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d81436e0cf3ce723c5821b6c46fa8171159eed017e505b4ad5c2f9753a506b11",
                          "typeString": "literal_string \"Error while deploying file from document\""
                        },
                        "value": "Error while deploying file from document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d81436e0cf3ce723c5821b6c46fa8171159eed017e505b4ad5c2f9753a506b11",
                          "typeString": "literal_string \"Error while deploying file from document\""
                        }
                      ],
                      "id": 2007,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "4746:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4746:94:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "4746:94:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2012,
                      "name": "file",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1786,
                      "src": "4851:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2016,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1997,
                              "src": "4894:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2014,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "4872:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "4872:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 2017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4872:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2013,
                        "name": "FileInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6917,
                        "src": "4858:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FileInterface_$6917_$",
                          "typeString": "type(contract FileInterface)"
                        }
                      },
                      "id": 2018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4858:48:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FileInterface_$6917",
                        "typeString": "contract FileInterface"
                      }
                    },
                    "src": "4851:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FileInterface_$6917",
                      "typeString": "contract FileInterface"
                    }
                  },
                  "id": 2020,
                  "nodeType": "ExpressionStatement",
                  "src": "4851:55:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2024,
                        "name": "fileName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1983,
                        "src": "4944:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2025,
                        "name": "fileHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1985,
                        "src": "4970:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "fileCreatedAt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1987,
                        "src": "4996:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2027,
                        "name": "fileSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1989,
                        "src": "5027:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2021,
                        "name": "file",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1786,
                        "src": "4917:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FileInterface_$6917",
                          "typeString": "contract FileInterface"
                        }
                      },
                      "id": 2023,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6916,
                      "src": "4917:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,uint256,uint256) external"
                      }
                    },
                    "id": 2028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4917:128:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2029,
                  "nodeType": "ExpressionStatement",
                  "src": "4917:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2031,
                        "name": "FILE_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1752,
                        "src": "5074:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "FILE_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1719,
                        "src": "5094:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2034,
                            "name": "file",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1786,
                            "src": "5122:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FileInterface_$6917",
                              "typeString": "contract FileInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_FileInterface_$6917",
                              "typeString": "contract FileInterface"
                            }
                          ],
                          "id": 2033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5114:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5114:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2030,
                      "name": "notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2174
                      ],
                      "referencedDeclaration": 2174,
                      "src": "5056:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5056:72:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "5056:72:9"
                }
              ]
            },
            "documentation": null,
            "id": 2039,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1991,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "4525:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4525:9:9"
              }
            ],
            "name": "createFile",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1981,
                  "name": "fileId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4360:20:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4360:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1983,
                  "name": "fileName",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4390:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1982,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4390:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1985,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4422:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1984,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4422:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1987,
                  "name": "fileCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4454:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4454:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1989,
                  "name": "fileSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 2039,
                  "src": "4482:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1988,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4482:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4350:151:9"
            },
            "returnParameters": {
              "id": 1993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4539:0:9"
            },
            "scope": 2211,
            "src": "4331:804:9",
            "stateMutability": "nonpayable",
            "superFunction": 6851,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2058,
              "nodeType": "Block",
              "src": "5237:196:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2046,
                      "name": "signedFileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1771,
                      "src": "5247:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2047,
                      "name": "fileHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "5264:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "5247:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "5247:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2051,
                        "name": "ID_FILE_SIGNED_HASH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1728,
                        "src": "5308:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2052,
                        "name": "FILE_SIGNED_HASH_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "5341:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "736f6c6964697479",
                        "id": 2053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5377:10:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        "value": "solidity"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7294,
                          "src": "5401:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5401:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25",
                          "typeString": "literal_string \"solidity\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2050,
                      "name": "createEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2121
                      ],
                      "referencedDeclaration": 2121,
                      "src": "5283:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory,uint256)"
                      }
                    },
                    "id": 2056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5283:143:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2057,
                  "nodeType": "ExpressionStatement",
                  "src": "5283:143:9"
                }
              ]
            },
            "documentation": null,
            "id": 2059,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2044,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2043,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "5223:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5223:9:9"
              }
            ],
            "name": "setFileHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "fileHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2059,
                  "src": "5171:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5171:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5161:38:9"
            },
            "returnParameters": {
              "id": 2045,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5237:0:9"
            },
            "scope": 2211,
            "src": "5141:292:9",
            "stateMutability": "nonpayable",
            "superFunction": 6856,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2120,
              "nodeType": "Block",
              "src": "5634:631:9",
              "statements": [
                {
                  "assignments": [
                    2073,
                    2075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2073,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 2120,
                      "src": "5645:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2072,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5645:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2075,
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 2120,
                      "src": "5659:23:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2074,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5659:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2087,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6465706c6f794576656e7428737472696e672c737472696e672c737472696e672c75696e7432353629",
                            "id": 2080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5762:43:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            "value": "deployEvent(string,string,string,uint256)"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2081,
                            "name": "eventId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2061,
                            "src": "5823:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2082,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2063,
                            "src": "5848:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2083,
                            "name": "eventUserAgent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2065,
                            "src": "5875:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2084,
                            "name": "eventCreatedAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "5907:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f776d03bae68533a22110763a47f66d6a1059f4f873fd364dad87b62f453c956",
                              "typeString": "literal_string \"deployEvent(string,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2078,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7291,
                            "src": "5721:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5721:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 2085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5721:214:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2076,
                        "name": "deployer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1761,
                        "src": "5686:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5686:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 2086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5686:259:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5644:301:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2089,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2073,
                        "src": "5977:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4572726f72207768696c65206465706c6f79696e67206576656e742066726f6d20646f63756d656e74",
                        "id": 2090,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5998:43:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ff8fa4206de4cac8f9ee2d47c80301d53b79229d92bd08c65d656c5e22c05dd4",
                          "typeString": "literal_string \"Error while deploying event from document\""
                        },
                        "value": "Error while deploying event from document"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ff8fa4206de4cac8f9ee2d47c80301d53b79229d92bd08c65d656c5e22c05dd4",
                          "typeString": "literal_string \"Error while deploying event from document\""
                        }
                      ],
                      "id": 2088,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "5956:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5956:95:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2092,
                  "nodeType": "ExpressionStatement",
                  "src": "5956:95:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2093,
                        "name": "events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1792,
                        "src": "6062:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                          "typeString": "mapping(string memory => contract EventInterface)"
                        }
                      },
                      "id": 2095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "6069:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6062:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2099,
                              "name": "returnData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2075,
                              "src": "6117:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2097,
                              "name": "Utils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "6095:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Utils_$7289_$",
                                "typeString": "type(library Utils)"
                              }
                            },
                            "id": 2098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_bytesToAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7273,
                            "src": "6095:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes memory) pure returns (address)"
                            }
                          },
                          "id": 2100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6095:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2096,
                        "name": "EventInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6891,
                        "src": "6080:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventInterface_$6891_$",
                          "typeString": "type(contract EventInterface)"
                        }
                      },
                      "id": 2101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6080:49:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventInterface_$6891",
                        "typeString": "contract EventInterface"
                      }
                    },
                    "src": "6062:67:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventInterface_$6891",
                      "typeString": "contract EventInterface"
                    }
                  },
                  "id": 2103,
                  "nodeType": "ExpressionStatement",
                  "src": "6062:67:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2107,
                        "name": "eventId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "6154:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2104,
                        "name": "eventsId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "6140:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      "id": 2106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6140:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                        "typeString": "function (string storage ref) returns (uint256)"
                      }
                    },
                    "id": 2108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6140:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2109,
                  "nodeType": "ExpressionStatement",
                  "src": "6140:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2111,
                        "name": "EVENT_NOTIFIERS_KEY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1755,
                        "src": "6191:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2112,
                        "name": "EVENT_CREATED_EVENT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1722,
                        "src": "6212:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2114,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1792,
                              "src": "6241:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                "typeString": "mapping(string memory => contract EventInterface)"
                              }
                            },
                            "id": 2116,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2115,
                              "name": "eventId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "6248:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6241:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EventInterface_$6891",
                              "typeString": "contract EventInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EventInterface_$6891",
                              "typeString": "contract EventInterface"
                            }
                          ],
                          "id": 2113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6233:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6233:24:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2110,
                      "name": "notifyEntityEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2174
                      ],
                      "referencedDeclaration": 2174,
                      "src": "6173:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (string memory,string memory,address)"
                      }
                    },
                    "id": 2118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6173:85:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2119,
                  "nodeType": "ExpressionStatement",
                  "src": "6173:85:9"
                }
              ]
            },
            "documentation": null,
            "id": 2121,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2070,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2069,
                  "name": "protected",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1830,
                  "src": "5620:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5620:9:9"
              }
            ],
            "name": "createEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2061,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5469:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2060,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5469:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2063,
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5500:23:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2062,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5500:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2065,
                  "name": "eventUserAgent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5533:28:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2064,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5533:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2067,
                  "name": "eventCreatedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 2121,
                  "src": "5571:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2066,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5571:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5459:137:9"
            },
            "returnParameters": {
              "id": 2071,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5634:0:9"
            },
            "scope": 2211,
            "src": "5439:826:9",
            "stateMutability": "nonpayable",
            "superFunction": 6867,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2173,
              "nodeType": "Block",
              "src": "6427:593:9",
              "statements": [
                {
                  "assignments": [
                    2131
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2131,
                      "name": "contractToNofify",
                      "nodeType": "VariableDeclaration",
                      "scope": 2173,
                      "src": "6437:24:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2130,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6437:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2132,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6437:24:9"
                },
                {
                  "assignments": [
                    2134
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2134,
                      "name": "notificationIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2173,
                      "src": "6471:22:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2133,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6471:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2136,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6496:1:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6471:26:9"
                },
                {
                  "body": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "6511:463:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2137,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "6525:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2140,
                                "name": "notifiersKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2123,
                                "src": "6584:12:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2141,
                                "name": "notificationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2134,
                                "src": "6598:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2138,
                                "name": "signatureOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1788,
                                "src": "6544:14:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SignaturitUserInterface_$7251",
                                  "typeString": "contract SignaturitUserInterface"
                                }
                              },
                              "id": 2139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressArrayAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7220,
                              "src": "6544:39:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (string memory,uint256) view external returns (address)"
                              }
                            },
                            "id": 2142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6544:72:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6525:91:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2144,
                        "nodeType": "ExpressionStatement",
                        "src": "6525:91:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "6630:19:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2145,
                            "name": "notificationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2134,
                            "src": "6632:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2147,
                        "nodeType": "ExpressionStatement",
                        "src": "6630:19:9"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "contractToNofify",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "6668:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6696:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6688:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6688:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6668:30:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2165,
                        "nodeType": "IfStatement",
                        "src": "6664:300:9",
                        "trueBody": {
                          "id": 2164,
                          "nodeType": "Block",
                          "src": "6700:264:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6e6f7469667928737472696e672c6164647265737329",
                                        "id": 2158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6810:24:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        "value": "notify(string,address)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2159,
                                        "name": "createdEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2125,
                                        "src": "6860:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2160,
                                        "name": "adrToNotify",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2127,
                                        "src": "6898:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e71e6576031f7526f2cb12010c629f7a2c29216b3a4c963863ce995a950c0e48",
                                          "typeString": "literal_string \"notify(string,address)\""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2156,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7291,
                                        "src": "6761:3:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6761:23:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 2161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6761:170:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2153,
                                    "name": "contractToNofify",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2131,
                                    "src": "6718:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 2155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6718:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6718:231:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "id": 2163,
                              "nodeType": "ExpressionStatement",
                              "src": "6718:231:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2167,
                      "name": "contractToNofify",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2131,
                      "src": "6982:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7010:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7002:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7002:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6982:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2172,
                  "nodeType": "DoWhileStatement",
                  "src": "6508:506:9"
                }
              ]
            },
            "documentation": null,
            "id": 2174,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyEntityEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2123,
                  "name": "notifiersKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6308:26:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2122,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6308:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2125,
                  "name": "createdEvent",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6344:26:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2124,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6344:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2127,
                  "name": "adrToNotify",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "6380:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2126,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6380:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6298:107:9"
            },
            "returnParameters": {
              "id": 2129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6427:0:9"
            },
            "scope": 2211,
            "src": "6271:749:9",
            "stateMutability": "nonpayable",
            "superFunction": 6828,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2200,
              "nodeType": "Block",
              "src": "7139:167:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2183,
                                "name": "events",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1792,
                                "src": "7178:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                                  "typeString": "mapping(string memory => contract EventInterface)"
                                }
                              },
                              "id": 2185,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2184,
                                "name": "eventId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2176,
                                "src": "7185:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7178:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EventInterface_$6891",
                                "typeString": "contract EventInterface"
                              }
                            ],
                            "id": 2182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7170:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7170:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7206:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7198:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7198:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "7170:38:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206576656e7420646f65736e2774206578697374",
                        "id": 2191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7222:25:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_121220d9b9f750b93d8abcbd1899f1dc548a835b45bc2fef201402b19ff81e47",
                          "typeString": "literal_string \"The event doesn't exist\""
                        },
                        "value": "The event doesn't exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_121220d9b9f750b93d8abcbd1899f1dc548a835b45bc2fef201402b19ff81e47",
                          "typeString": "literal_string \"The event doesn't exist\""
                        }
                      ],
                      "id": 2181,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "7149:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7149:108:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2193,
                  "nodeType": "ExpressionStatement",
                  "src": "7149:108:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2195,
                          "name": "events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "7283:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_contract$_EventInterface_$6891_$",
                            "typeString": "mapping(string memory => contract EventInterface)"
                          }
                        },
                        "id": 2197,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2196,
                          "name": "eventId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2176,
                          "src": "7290:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7283:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_EventInterface_$6891",
                          "typeString": "contract EventInterface"
                        }
                      ],
                      "id": 2194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7275:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 2198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7275:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2180,
                  "id": 2199,
                  "nodeType": "Return",
                  "src": "7268:31:9"
                }
              ]
            },
            "documentation": null,
            "id": 2201,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEvent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2176,
                  "name": "eventId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "7053:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2175,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7053:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7043:37:9"
            },
            "returnParameters": {
              "id": 2180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2179,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "7126:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2178,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7126:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7125:9:9"
            },
            "scope": 2211,
            "src": "7026:280:9",
            "stateMutability": "view",
            "superFunction": 6874,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2209,
              "nodeType": "Block",
              "src": "7392:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2206,
                      "name": "eventsId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1774,
                      "src": "7409:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                        "typeString": "string storage ref[] storage ref"
                      }
                    },
                    "id": 2207,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7409:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2205,
                  "id": 2208,
                  "nodeType": "Return",
                  "src": "7402:22:9"
                }
              ]
            },
            "documentation": null,
            "id": 2210,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventsSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7334:2:9"
            },
            "returnParameters": {
              "id": 2205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2204,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2210,
                  "src": "7382:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2203,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7382:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7381:6:9"
            },
            "scope": 2211,
            "src": "7312:119:9",
            "stateMutability": "view",
            "superFunction": 6879,
            "visibility": "public"
          }
        ],
        "scope": 2212,
        "src": "270:7163:9"
      }
    ],
    "src": "0:7434:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.264Z"
}