{
  "contractName": "BusinessDayConventions",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"BusinessDayConventions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"Contains conventions of how to handle non-business days when generating schedules of events. The events schedule time can be shifted or not, if shifted it is possible that it is shifted to the next or previous valid business days, etc.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":\"BusinessDayConventions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061044f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063e726d6801461003b578063f5586e0514610083575b600080fd5b6100716004803603608081101561005157600080fd5b5080359060ff6020820135811691604081013590911690606001356100b9565b60408051918252519081900360200190f35b6100716004803603608081101561009957600080fd5b5080359060ff60208201358116916040810135909116906060013561020e565b6000818514156100ca575083610206565b60018460088111156100d857fe5b14806100ef575060038460088111156100ed57fe5b145b15610105576100fe8584610282565b9050610206565b600284600881111561011357fe5b148061012a5750600484600881111561012857fe5b145b1561016e57600061013b8685610282565b9050610146866102e0565b61014f826102e0565b141561015c579050610206565b61016686856102f8565b915050610206565b600584600881111561017c57fe5b14806101935750600784600881111561019157fe5b145b156101a2576100fe85846102f8565b60068460088111156101b057fe5b14806101c7575060088460088111156101c557fe5b145b156102035760006101d886856102f8565b90506101e3866102e0565b6101ec826102e0565b14156101f9579050610206565b6101668685610282565b50835b949350505050565b6000600384600881111561021e57fe5b14806102355750600484600881111561023357fe5b145b8061024b5750600784600881111561024957fe5b145b806102615750600884600881111561025f57fe5b145b1561026d575083610206565b610279858585856100b9565b95945050505050565b6000600182600181111561029257fe5b14156102d7576102a183610346565b600614156102bb576102b4836002610359565b90506102da565b6102c483610346565b600714156102d7576102b4836001610359565b50815b92915050565b60006102f062015180830461036e565b509392505050565b6000600182600181111561030857fe5b14156102d75761031783610346565b6006141561032a576102b4836001610404565b61033383610346565b600714156102d7576102b4836002610404565b6007620151809091046003010660010190565b6201518081028201828110156102da57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816103c557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156102da57600080fdfea2646970667358221220d0744a43de820f6cd30387ea8b06a4f28fb5e0f99599b6ed12c480ec330affeb64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063e726d6801461003b578063f5586e0514610083575b600080fd5b6100716004803603608081101561005157600080fd5b5080359060ff6020820135811691604081013590911690606001356100b9565b60408051918252519081900360200190f35b6100716004803603608081101561009957600080fd5b5080359060ff60208201358116916040810135909116906060013561020e565b6000818514156100ca575083610206565b60018460088111156100d857fe5b14806100ef575060038460088111156100ed57fe5b145b15610105576100fe8584610282565b9050610206565b600284600881111561011357fe5b148061012a5750600484600881111561012857fe5b145b1561016e57600061013b8685610282565b9050610146866102e0565b61014f826102e0565b141561015c579050610206565b61016686856102f8565b915050610206565b600584600881111561017c57fe5b14806101935750600784600881111561019157fe5b145b156101a2576100fe85846102f8565b60068460088111156101b057fe5b14806101c7575060088460088111156101c557fe5b145b156102035760006101d886856102f8565b90506101e3866102e0565b6101ec826102e0565b14156101f9579050610206565b6101668685610282565b50835b949350505050565b6000600384600881111561021e57fe5b14806102355750600484600881111561023357fe5b145b8061024b5750600784600881111561024957fe5b145b806102615750600884600881111561025f57fe5b145b1561026d575083610206565b610279858585856100b9565b95945050505050565b6000600182600181111561029257fe5b14156102d7576102a183610346565b600614156102bb576102b4836002610359565b90506102da565b6102c483610346565b600714156102d7576102b4836001610359565b50815b92915050565b60006102f062015180830461036e565b509392505050565b6000600182600181111561030857fe5b14156102d75761031783610346565b6006141561032a576102b4836001610404565b61033383610346565b600714156102d7576102b4836002610404565b6007620151809091046003010660010190565b6201518081028201828110156102da57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816103c557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156102da57600080fdfea2646970667358221220d0744a43de820f6cd30387ea8b06a4f28fb5e0f99599b6ed12c480ec330affeb64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "461:4786:75:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "461:4786:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1599:2214;;;;;;;;;;;;;;;;-1:-1:-1;1599:2214:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;648:583;;;;;;;;;;;;;;;;-1:-1:-1;648:583:75;;;;;;;;;;;;;;;;;;;;;;;:::i;1599:2214::-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;1599:2214;;;;;;;:::o;648:583::-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;:::-;1156:68;648:583;-1:-1:-1;;;;;648:583:75:o;3980:550::-;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;3980:550;;;;;:::o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;7310:11;:40::i;:::-;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;3309:605;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\n\nimport \"../../external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\";\n\nimport \"../ACTUSTypes.sol\";\n\n\n/**\n * @title BusinessDayConventions\n * @notice Contains conventions of how to handle non-business days when generating schedules of events.\n * The events schedule time can be shifted or not, if shifted it is possible that it is shifted to the next\n * or previous valid business days, etc.\n */\ncontract BusinessDayConventions {\n\n    /**\n     * @notice Used in POFs and STFs for DCFs.\n     * No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\n     */\n    function shiftCalcTime(\n        uint256 timestamp,\n        BusinessDayConvention convention,\n        Calendar calendar,\n        uint256 maturityDate\n    )\n        public\n        pure\n        returns (uint256)\n    {\n        if (\n            convention == BusinessDayConvention.CSF ||\n            convention == BusinessDayConvention.CSMF ||\n            convention == BusinessDayConvention.CSP ||\n            convention == BusinessDayConvention.CSMP\n        ) {\n            return timestamp;\n        }\n\n        return shiftEventTime(timestamp, convention, calendar, maturityDate);\n    }\n\n    /*\n     * @notice Used for generating event schedules (for single events and event cycles schedules).\n     * This convention assumes that when shifting the events schedule time according\n     * to a BDC, the time is shifted first and calculations are performed thereafter.\n     * (Calculations in POFs and STFs are based on the shifted time as well)\n     */\n    function shiftEventTime(\n        uint256 timestamp,\n        BusinessDayConvention convention,\n        Calendar calendar,\n        uint256 maturityDate\n    )\n        public\n        pure\n        returns (uint256)\n    {\n        // do not shift if equal to maturity date\n        if (timestamp == maturityDate) return timestamp;\n\n        // Shift/Calc Following, Calc/Shift following\n        if (convention == BusinessDayConvention.SCF || convention == BusinessDayConvention.CSF) {\n            return getClosestBusinessDaySameDayOrFollowing(timestamp, calendar);\n        // Shift/Calc Modified Following, Calc/Shift Modified following\n        // Same as unmodified if shifted date is in the same month, if not it returns the previous buiness-day\n        } else if (convention == BusinessDayConvention.SCMF || convention == BusinessDayConvention.CSMF) {\n            uint256 followingOrSameBusinessDay = getClosestBusinessDaySameDayOrFollowing(timestamp, calendar);\n            if (BokkyPooBahsDateTimeLibrary.getMonth(followingOrSameBusinessDay) == BokkyPooBahsDateTimeLibrary.getMonth(timestamp)) {\n                return followingOrSameBusinessDay;\n            }\n            return getClosestBusinessDaySameDayOrPreceeding(timestamp, calendar);\n        // Shift/Calc Preceeding, Calc/Shift Preceeding\n        } else if (convention == BusinessDayConvention.SCP || convention == BusinessDayConvention.CSP) {\n            return getClosestBusinessDaySameDayOrPreceeding(timestamp, calendar);\n        // Shift/Calc Modified Preceeding, Calc/Shift Modified Preceeding\n        // Same as unmodified if shifted date is in the same month, if not it returns the following buiness-day\n        } else if (convention == BusinessDayConvention.SCMP || convention == BusinessDayConvention.CSMP) {\n            uint256 preceedingOrSameBusinessDay = getClosestBusinessDaySameDayOrPreceeding(timestamp, calendar);\n            if (BokkyPooBahsDateTimeLibrary.getMonth(preceedingOrSameBusinessDay) == BokkyPooBahsDateTimeLibrary.getMonth(timestamp)) {\n                return preceedingOrSameBusinessDay;\n            }\n            return getClosestBusinessDaySameDayOrFollowing(timestamp, calendar);\n        }\n\n        return timestamp;\n    }\n\n    /**\n     * @notice Returns the following business day if a non-business day is provided.\n     * (Returns the same day if calendar != MondayToFriday)\n     */\n    function getClosestBusinessDaySameDayOrFollowing(uint256 timestamp, Calendar calendar)\n        internal\n        pure\n        returns (uint256)\n    {\n        if (calendar == Calendar.MF) {\n            if (BokkyPooBahsDateTimeLibrary.getDayOfWeek(timestamp) == 6) {\n                return BokkyPooBahsDateTimeLibrary.addDays(timestamp, 2);\n            } else if (BokkyPooBahsDateTimeLibrary.getDayOfWeek(timestamp) == 7) {\n                return BokkyPooBahsDateTimeLibrary.addDays(timestamp, 1);\n            }\n        }\n        return timestamp;\n    }\n\n    /**\n     * @notice Returns the previous buiness day if a non-businessday is provided.\n     * (Returns the same day if calendar != MondayToFriday)\n     */\n    function getClosestBusinessDaySameDayOrPreceeding(uint256 timestamp, Calendar calendar)\n        internal\n        pure\n        returns (uint256)\n    {\n        if (calendar == Calendar.MF) {\n            if (BokkyPooBahsDateTimeLibrary.getDayOfWeek(timestamp) == 6) {\n                return BokkyPooBahsDateTimeLibrary.subDays(timestamp, 1);\n            } else if (BokkyPooBahsDateTimeLibrary.getDayOfWeek(timestamp) == 7) {\n                return BokkyPooBahsDateTimeLibrary.subDays(timestamp, 2);\n            }\n        }\n        return timestamp;\n    }\n}\n",
  "sourcePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
  "ast": {
    "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
    "exportedSymbols": {
      "BusinessDayConventions": [
        23277
      ]
    },
    "id": 23278,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23008,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:75"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol",
        "file": "../../external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol",
        "id": 23009,
        "nodeType": "ImportDirective",
        "scope": 23278,
        "sourceUnit": 37178,
        "src": "67:68:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "file": "../ACTUSTypes.sol",
        "id": 23010,
        "nodeType": "ImportDirective",
        "scope": 23278,
        "sourceUnit": 23007,
        "src": "137:27:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 23011,
          "nodeType": "StructuredDocumentation",
          "src": "167:293:75",
          "text": " @title BusinessDayConventions\n @notice Contains conventions of how to handle non-business days when generating schedules of events.\n The events schedule time can be shifted or not, if shifted it is possible that it is shifted to the next\n or previous valid business days, etc."
        },
        "fullyImplemented": true,
        "id": 23277,
        "linearizedBaseContracts": [
          23277
        ],
        "name": "BusinessDayConventions",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 23055,
              "nodeType": "Block",
              "src": "861:370:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 23043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 23038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23025,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23016,
                            "src": "888:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23026,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "902:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "902:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "888:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23029,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23016,
                            "src": "943:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23030,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "957:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSMF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "957:26:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "943:40:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "888:95:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23034,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23016,
                          "src": "999:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23035,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "1013:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CSP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1013:25:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "999:39:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "888:150:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23039,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23016,
                        "src": "1054:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23040,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "1068:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CSMP",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1068:26:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "1054:40:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "888:206:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23047,
                  "nodeType": "IfStatement",
                  "src": "871:275:75",
                  "trueBody": {
                    "id": 23046,
                    "nodeType": "Block",
                    "src": "1105:41:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23044,
                          "name": "timestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23014,
                          "src": "1126:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23024,
                        "id": 23045,
                        "nodeType": "Return",
                        "src": "1119:16:75"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 23049,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23014,
                        "src": "1178:9:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23050,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23016,
                        "src": "1189:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23051,
                        "name": "calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23018,
                        "src": "1201:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23052,
                        "name": "maturityDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23020,
                        "src": "1211:12:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23048,
                      "name": "shiftEventTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23182,
                      "src": "1163:14:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 23053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1163:61:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23024,
                  "id": 23054,
                  "nodeType": "Return",
                  "src": "1156:68:75"
                }
              ]
            },
            "documentation": {
              "id": 23012,
              "nodeType": "StructuredDocumentation",
              "src": "500:143:75",
              "text": " @notice Used in POFs and STFs for DCFs.\n No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
            },
            "functionSelector": "f5586e05",
            "id": 23056,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shiftCalcTime",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23014,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "680:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23013,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23016,
                  "mutability": "mutable",
                  "name": "convention",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "707:32:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                    "typeString": "enum BusinessDayConvention"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23015,
                    "name": "BusinessDayConvention",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22503,
                    "src": "707:21:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                      "typeString": "enum BusinessDayConvention"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23018,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "749:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23017,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "749:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23020,
                  "mutability": "mutable",
                  "name": "maturityDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "776:20:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23019,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:132:75"
            },
            "returnParameters": {
              "id": 23024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "848:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "847:9:75"
            },
            "scope": 23277,
            "src": "648:583:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23181,
              "nodeType": "Block",
              "src": "1813:2000:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23069,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23058,
                      "src": "1877:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 23070,
                      "name": "maturityDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23064,
                      "src": "1890:12:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1877:25:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23074,
                  "nodeType": "IfStatement",
                  "src": "1873:47:75",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 23072,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23058,
                      "src": "1911:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 23068,
                    "id": 23073,
                    "nodeType": "Return",
                    "src": "1904:16:75"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 23083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23075,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23060,
                        "src": "1989:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23076,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "2003:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "SCF",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2003:25:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "1989:39:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23079,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23060,
                        "src": "2032:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23080,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "2046:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CSF",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2046:25:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "2032:39:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1989:82:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 23098,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23090,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23060,
                          "src": "2358:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23091,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "2372:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "SCMF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2372:26:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "2358:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23094,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23060,
                          "src": "2402:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23095,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "2416:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CSMF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2416:26:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "2402:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "2358:84:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23125,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23060,
                            "src": "2914:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23126,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "2928:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "SCP",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2928:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "2914:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23129,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23060,
                            "src": "2957:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23130,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "2971:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSP",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2971:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "2957:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2914:82:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 23148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            },
                            "id": 23143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 23140,
                              "name": "convention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23060,
                              "src": "3287:10:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23141,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "3301:21:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 23142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "SCMP",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3301:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "src": "3287:40:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            },
                            "id": 23147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 23144,
                              "name": "convention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23060,
                              "src": "3331:10:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23145,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "3345:21:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 23146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "CSMP",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3345:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "src": "3331:40:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3287:84:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 23175,
                        "nodeType": "IfStatement",
                        "src": "3283:497:75",
                        "trueBody": {
                          "id": 23174,
                          "nodeType": "Block",
                          "src": "3373:407:75",
                          "statements": [
                            {
                              "assignments": [
                                23150
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23150,
                                  "mutability": "mutable",
                                  "name": "preceedingOrSameBusinessDay",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 23174,
                                  "src": "3387:35:75",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 23149,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3387:7:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23155,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23152,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23058,
                                    "src": "3466:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23153,
                                    "name": "calendar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23062,
                                    "src": "3477:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  ],
                                  "id": 23151,
                                  "name": "getClosestBusinessDaySameDayOrPreceeding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23276,
                                  "src": "3425:40:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                  }
                                },
                                "id": 23154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3425:61:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3387:99:75"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23158,
                                      "name": "preceedingOrSameBusinessDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23150,
                                      "src": "3541:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23156,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "3504:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getMonth",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36441,
                                    "src": "3504:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3504:65:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23162,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23058,
                                      "src": "3610:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23160,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "3573:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getMonth",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36441,
                                    "src": "3573:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3573:47:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3504:116:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 23168,
                              "nodeType": "IfStatement",
                              "src": "3500:189:75",
                              "trueBody": {
                                "id": 23167,
                                "nodeType": "Block",
                                "src": "3622:67:75",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23165,
                                      "name": "preceedingOrSameBusinessDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23150,
                                      "src": "3647:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 23068,
                                    "id": 23166,
                                    "nodeType": "Return",
                                    "src": "3640:34:75"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23170,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23058,
                                    "src": "3749:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23171,
                                    "name": "calendar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23062,
                                    "src": "3760:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  ],
                                  "id": 23169,
                                  "name": "getClosestBusinessDaySameDayOrFollowing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23229,
                                  "src": "3709:39:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                  }
                                },
                                "id": 23172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3709:60:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23068,
                              "id": 23173,
                              "nodeType": "Return",
                              "src": "3702:67:75"
                            }
                          ]
                        }
                      },
                      "id": 23176,
                      "nodeType": "IfStatement",
                      "src": "2910:870:75",
                      "trueBody": {
                        "id": 23139,
                        "nodeType": "Block",
                        "src": "2998:279:75",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23135,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23058,
                                  "src": "3060:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 23136,
                                  "name": "calendar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23062,
                                  "src": "3071:8:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                ],
                                "id": 23134,
                                "name": "getClosestBusinessDaySameDayOrPreceeding",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23276,
                                "src": "3019:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                }
                              },
                              "id": 23137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3019:61:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 23068,
                            "id": 23138,
                            "nodeType": "Return",
                            "src": "3012:68:75"
                          }
                        ]
                      }
                    },
                    "id": 23177,
                    "nodeType": "IfStatement",
                    "src": "2354:1426:75",
                    "trueBody": {
                      "id": 23124,
                      "nodeType": "Block",
                      "src": "2444:460:75",
                      "statements": [
                        {
                          "assignments": [
                            23100
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23100,
                              "mutability": "mutable",
                              "name": "followingOrSameBusinessDay",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 23124,
                              "src": "2458:34:75",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23099,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2458:7:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 23105,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23102,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23058,
                                "src": "2535:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 23103,
                                "name": "calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23062,
                                "src": "2546:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              ],
                              "id": 23101,
                              "name": "getClosestBusinessDaySameDayOrFollowing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23229,
                              "src": "2495:39:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                              }
                            },
                            "id": 23104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2495:60:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2458:97:75"
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23108,
                                  "name": "followingOrSameBusinessDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23100,
                                  "src": "2610:26:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23106,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "2573:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getMonth",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36441,
                                "src": "2573:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2573:64:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23112,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23058,
                                  "src": "2678:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23110,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "2641:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getMonth",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36441,
                                "src": "2641:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2641:47:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2573:115:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23118,
                          "nodeType": "IfStatement",
                          "src": "2569:187:75",
                          "trueBody": {
                            "id": 23117,
                            "nodeType": "Block",
                            "src": "2690:66:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23115,
                                  "name": "followingOrSameBusinessDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23100,
                                  "src": "2715:26:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23068,
                                "id": 23116,
                                "nodeType": "Return",
                                "src": "2708:33:75"
                              }
                            ]
                          }
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23120,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23058,
                                "src": "2817:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 23121,
                                "name": "calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23062,
                                "src": "2828:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              ],
                              "id": 23119,
                              "name": "getClosestBusinessDaySameDayOrPreceeding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23276,
                              "src": "2776:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                              }
                            },
                            "id": 23122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2776:61:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 23068,
                          "id": 23123,
                          "nodeType": "Return",
                          "src": "2769:68:75"
                        }
                      ]
                    }
                  },
                  "id": 23178,
                  "nodeType": "IfStatement",
                  "src": "1985:1795:75",
                  "trueBody": {
                    "id": 23089,
                    "nodeType": "Block",
                    "src": "2073:275:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23085,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23058,
                              "src": "2134:9:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23086,
                              "name": "calendar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23062,
                              "src": "2145:8:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            ],
                            "id": 23084,
                            "name": "getClosestBusinessDaySameDayOrFollowing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23229,
                            "src": "2094:39:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                              "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                            }
                          },
                          "id": 23087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2094:60:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23068,
                        "id": 23088,
                        "nodeType": "Return",
                        "src": "2087:67:75"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23179,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23058,
                    "src": "3797:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23068,
                  "id": 23180,
                  "nodeType": "Return",
                  "src": "3790:16:75"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e726d680",
            "id": 23182,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shiftEventTime",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23058,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1632:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23057,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1632:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23060,
                  "mutability": "mutable",
                  "name": "convention",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1659:32:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                    "typeString": "enum BusinessDayConvention"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23059,
                    "name": "BusinessDayConvention",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22503,
                    "src": "1659:21:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                      "typeString": "enum BusinessDayConvention"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23062,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1701:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23061,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "1701:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23064,
                  "mutability": "mutable",
                  "name": "maturityDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1728:20:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23063,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1622:132:75"
            },
            "returnParameters": {
              "id": 23068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23067,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1800:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23066,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1800:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1799:9:75"
            },
            "scope": 23277,
            "src": "1599:2214:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23228,
              "nodeType": "Block",
              "src": "4127:403:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    },
                    "id": 23195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23192,
                      "name": "calendar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23187,
                      "src": "4141:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 23193,
                        "name": "Calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22506,
                        "src": "4153:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                          "typeString": "type(enum Calendar)"
                        }
                      },
                      "id": 23194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4153:11:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "src": "4141:23:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23225,
                  "nodeType": "IfStatement",
                  "src": "4137:361:75",
                  "trueBody": {
                    "id": 23224,
                    "nodeType": "Block",
                    "src": "4166:332:75",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23198,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23185,
                                "src": "4225:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23196,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37177,
                                "src": "4184:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 23197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getDayOfWeek",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36407,
                              "src": "4184:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 23199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4184:51:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 23200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4239:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "4184:56:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23211,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23185,
                                  "src": "4382:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23209,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "4341:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getDayOfWeek",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36407,
                                "src": "4341:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4341:51:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 23213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4396:1:75",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "4341:56:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23222,
                          "nodeType": "IfStatement",
                          "src": "4337:151:75",
                          "trueBody": {
                            "id": 23221,
                            "nodeType": "Block",
                            "src": "4399:89:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23217,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23185,
                                      "src": "4460:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 23218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4471:1:75",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23215,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "4424:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addDays",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36680,
                                    "src": "4424:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4424:49:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23191,
                                "id": 23220,
                                "nodeType": "Return",
                                "src": "4417:56:75"
                              }
                            ]
                          }
                        },
                        "id": 23223,
                        "nodeType": "IfStatement",
                        "src": "4180:308:75",
                        "trueBody": {
                          "id": 23208,
                          "nodeType": "Block",
                          "src": "4242:89:75",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23204,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23185,
                                    "src": "4303:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 23205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4314:1:75",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23202,
                                    "name": "BokkyPooBahsDateTimeLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37177,
                                    "src": "4267:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                      "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                    }
                                  },
                                  "id": 23203,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addDays",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 36680,
                                  "src": "4267:35:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 23206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4267:49:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23191,
                              "id": 23207,
                              "nodeType": "Return",
                              "src": "4260:56:75"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23226,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23185,
                    "src": "4514:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23191,
                  "id": 23227,
                  "nodeType": "Return",
                  "src": "4507:16:75"
                }
              ]
            },
            "documentation": {
              "id": 23183,
              "nodeType": "StructuredDocumentation",
              "src": "3819:156:75",
              "text": " @notice Returns the following business day if a non-business day is provided.\n (Returns the same day if calendar != MondayToFriday)"
            },
            "id": 23229,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClosestBusinessDaySameDayOrFollowing",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23185,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4029:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23184,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23187,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4048:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23186,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "4048:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:38:75"
            },
            "returnParameters": {
              "id": 23191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23190,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4114:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23189,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4114:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4113:9:75"
            },
            "scope": 23277,
            "src": "3980:550:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23275,
              "nodeType": "Block",
              "src": "4842:403:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    },
                    "id": 23242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23239,
                      "name": "calendar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23234,
                      "src": "4856:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 23240,
                        "name": "Calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22506,
                        "src": "4868:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                          "typeString": "type(enum Calendar)"
                        }
                      },
                      "id": 23241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4868:11:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "src": "4856:23:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23272,
                  "nodeType": "IfStatement",
                  "src": "4852:361:75",
                  "trueBody": {
                    "id": 23271,
                    "nodeType": "Block",
                    "src": "4881:332:75",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23245,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23232,
                                "src": "4940:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23243,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37177,
                                "src": "4899:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 23244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getDayOfWeek",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36407,
                              "src": "4899:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 23246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4899:51:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 23247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4954:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "4899:56:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23258,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23232,
                                  "src": "5097:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23256,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "5056:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getDayOfWeek",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36407,
                                "src": "5056:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5056:51:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 23260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5111:1:75",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "5056:56:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23269,
                          "nodeType": "IfStatement",
                          "src": "5052:151:75",
                          "trueBody": {
                            "id": 23268,
                            "nodeType": "Block",
                            "src": "5114:89:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23264,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23232,
                                      "src": "5175:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 23265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5186:1:75",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23262,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "5139:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "subDays",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36921,
                                    "src": "5139:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5139:49:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23238,
                                "id": 23267,
                                "nodeType": "Return",
                                "src": "5132:56:75"
                              }
                            ]
                          }
                        },
                        "id": 23270,
                        "nodeType": "IfStatement",
                        "src": "4895:308:75",
                        "trueBody": {
                          "id": 23255,
                          "nodeType": "Block",
                          "src": "4957:89:75",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23251,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23232,
                                    "src": "5018:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 23252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5029:1:75",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23249,
                                    "name": "BokkyPooBahsDateTimeLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37177,
                                    "src": "4982:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                      "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                    }
                                  },
                                  "id": 23250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "subDays",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 36921,
                                  "src": "4982:35:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 23253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4982:49:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23238,
                              "id": 23254,
                              "nodeType": "Return",
                              "src": "4975:56:75"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23273,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23232,
                    "src": "5229:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23238,
                  "id": 23274,
                  "nodeType": "Return",
                  "src": "5222:16:75"
                }
              ]
            },
            "documentation": {
              "id": 23230,
              "nodeType": "StructuredDocumentation",
              "src": "4536:153:75",
              "text": " @notice Returns the previous buiness day if a non-businessday is provided.\n (Returns the same day if calendar != MondayToFriday)"
            },
            "id": 23276,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClosestBusinessDaySameDayOrPreceeding",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23232,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4744:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4744:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23234,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4763:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23233,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "4763:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4743:38:75"
            },
            "returnParameters": {
              "id": 23238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23237,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4829:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23236,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4829:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4828:9:75"
            },
            "scope": 23277,
            "src": "4694:551:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 23278,
        "src": "461:4786:75"
      }
    ],
    "src": "41:5207:75"
  },
  "legacyAST": {
    "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
    "exportedSymbols": {
      "BusinessDayConventions": [
        23277
      ]
    },
    "id": 23278,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23008,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:75"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol",
        "file": "../../external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol",
        "id": 23009,
        "nodeType": "ImportDirective",
        "scope": 23278,
        "sourceUnit": 37178,
        "src": "67:68:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "file": "../ACTUSTypes.sol",
        "id": 23010,
        "nodeType": "ImportDirective",
        "scope": 23278,
        "sourceUnit": 23007,
        "src": "137:27:75",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 23011,
          "nodeType": "StructuredDocumentation",
          "src": "167:293:75",
          "text": " @title BusinessDayConventions\n @notice Contains conventions of how to handle non-business days when generating schedules of events.\n The events schedule time can be shifted or not, if shifted it is possible that it is shifted to the next\n or previous valid business days, etc."
        },
        "fullyImplemented": true,
        "id": 23277,
        "linearizedBaseContracts": [
          23277
        ],
        "name": "BusinessDayConventions",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 23055,
              "nodeType": "Block",
              "src": "861:370:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 23043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 23038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23025,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23016,
                            "src": "888:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23026,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "902:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "902:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "888:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23029,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23016,
                            "src": "943:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23030,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "957:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSMF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "957:26:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "943:40:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "888:95:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23034,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23016,
                          "src": "999:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23035,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "1013:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CSP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1013:25:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "999:39:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "888:150:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23039,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23016,
                        "src": "1054:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23040,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "1068:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CSMP",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1068:26:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "1054:40:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "888:206:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23047,
                  "nodeType": "IfStatement",
                  "src": "871:275:75",
                  "trueBody": {
                    "id": 23046,
                    "nodeType": "Block",
                    "src": "1105:41:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23044,
                          "name": "timestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23014,
                          "src": "1126:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23024,
                        "id": 23045,
                        "nodeType": "Return",
                        "src": "1119:16:75"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 23049,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23014,
                        "src": "1178:9:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23050,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23016,
                        "src": "1189:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23051,
                        "name": "calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23018,
                        "src": "1201:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 23052,
                        "name": "maturityDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23020,
                        "src": "1211:12:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23048,
                      "name": "shiftEventTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23182,
                      "src": "1163:14:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 23053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1163:61:75",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23024,
                  "id": 23054,
                  "nodeType": "Return",
                  "src": "1156:68:75"
                }
              ]
            },
            "documentation": {
              "id": 23012,
              "nodeType": "StructuredDocumentation",
              "src": "500:143:75",
              "text": " @notice Used in POFs and STFs for DCFs.\n No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
            },
            "functionSelector": "f5586e05",
            "id": 23056,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shiftCalcTime",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23014,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "680:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23013,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23016,
                  "mutability": "mutable",
                  "name": "convention",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "707:32:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                    "typeString": "enum BusinessDayConvention"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23015,
                    "name": "BusinessDayConvention",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22503,
                    "src": "707:21:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                      "typeString": "enum BusinessDayConvention"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23018,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "749:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23017,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "749:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23020,
                  "mutability": "mutable",
                  "name": "maturityDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "776:20:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23019,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:132:75"
            },
            "returnParameters": {
              "id": 23024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23056,
                  "src": "848:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "847:9:75"
            },
            "scope": 23277,
            "src": "648:583:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23181,
              "nodeType": "Block",
              "src": "1813:2000:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23069,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23058,
                      "src": "1877:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 23070,
                      "name": "maturityDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23064,
                      "src": "1890:12:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1877:25:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23074,
                  "nodeType": "IfStatement",
                  "src": "1873:47:75",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 23072,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23058,
                      "src": "1911:9:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 23068,
                    "id": 23073,
                    "nodeType": "Return",
                    "src": "1904:16:75"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 23083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23075,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23060,
                        "src": "1989:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23076,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "2003:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "SCF",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2003:25:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "1989:39:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                        "typeString": "enum BusinessDayConvention"
                      },
                      "id": 23082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 23079,
                        "name": "convention",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23060,
                        "src": "2032:10:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 23080,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "2046:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 23081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CSF",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2046:25:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      "src": "2032:39:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1989:82:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 23098,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23090,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23060,
                          "src": "2358:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23091,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "2372:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "SCMF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2372:26:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "2358:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        "id": 23097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 23094,
                          "name": "convention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23060,
                          "src": "2402:10:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 23095,
                            "name": "BusinessDayConvention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22503,
                            "src": "2416:21:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                              "typeString": "type(enum BusinessDayConvention)"
                            }
                          },
                          "id": 23096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CSMF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2416:26:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        "src": "2402:40:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "2358:84:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23125,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23060,
                            "src": "2914:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23126,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "2928:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "SCP",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2928:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "2914:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          "id": 23132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23129,
                            "name": "convention",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23060,
                            "src": "2957:10:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23130,
                              "name": "BusinessDayConvention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22503,
                              "src": "2971:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                "typeString": "type(enum BusinessDayConvention)"
                              }
                            },
                            "id": 23131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CSP",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2971:25:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            }
                          },
                          "src": "2957:39:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2914:82:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 23148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            },
                            "id": 23143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 23140,
                              "name": "convention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23060,
                              "src": "3287:10:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23141,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "3301:21:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 23142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "SCMP",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3301:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "src": "3287:40:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                              "typeString": "enum BusinessDayConvention"
                            },
                            "id": 23147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 23144,
                              "name": "convention",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23060,
                              "src": "3331:10:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23145,
                                "name": "BusinessDayConvention",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22503,
                                "src": "3345:21:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                                  "typeString": "type(enum BusinessDayConvention)"
                                }
                              },
                              "id": 23146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "CSMP",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3345:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                "typeString": "enum BusinessDayConvention"
                              }
                            },
                            "src": "3331:40:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3287:84:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 23175,
                        "nodeType": "IfStatement",
                        "src": "3283:497:75",
                        "trueBody": {
                          "id": 23174,
                          "nodeType": "Block",
                          "src": "3373:407:75",
                          "statements": [
                            {
                              "assignments": [
                                23150
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23150,
                                  "mutability": "mutable",
                                  "name": "preceedingOrSameBusinessDay",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 23174,
                                  "src": "3387:35:75",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 23149,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3387:7:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23155,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23152,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23058,
                                    "src": "3466:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23153,
                                    "name": "calendar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23062,
                                    "src": "3477:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  ],
                                  "id": 23151,
                                  "name": "getClosestBusinessDaySameDayOrPreceeding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23276,
                                  "src": "3425:40:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                  }
                                },
                                "id": 23154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3425:61:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3387:99:75"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23158,
                                      "name": "preceedingOrSameBusinessDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23150,
                                      "src": "3541:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23156,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "3504:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getMonth",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36441,
                                    "src": "3504:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3504:65:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23162,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23058,
                                      "src": "3610:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23160,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "3573:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getMonth",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36441,
                                    "src": "3573:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3573:47:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3504:116:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 23168,
                              "nodeType": "IfStatement",
                              "src": "3500:189:75",
                              "trueBody": {
                                "id": 23167,
                                "nodeType": "Block",
                                "src": "3622:67:75",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23165,
                                      "name": "preceedingOrSameBusinessDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23150,
                                      "src": "3647:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 23068,
                                    "id": 23166,
                                    "nodeType": "Return",
                                    "src": "3640:34:75"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23170,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23058,
                                    "src": "3749:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23171,
                                    "name": "calendar",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23062,
                                    "src": "3760:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Calendar_$22506",
                                      "typeString": "enum Calendar"
                                    }
                                  ],
                                  "id": 23169,
                                  "name": "getClosestBusinessDaySameDayOrFollowing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23229,
                                  "src": "3709:39:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                  }
                                },
                                "id": 23172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3709:60:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23068,
                              "id": 23173,
                              "nodeType": "Return",
                              "src": "3702:67:75"
                            }
                          ]
                        }
                      },
                      "id": 23176,
                      "nodeType": "IfStatement",
                      "src": "2910:870:75",
                      "trueBody": {
                        "id": 23139,
                        "nodeType": "Block",
                        "src": "2998:279:75",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23135,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23058,
                                  "src": "3060:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 23136,
                                  "name": "calendar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23062,
                                  "src": "3071:8:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                ],
                                "id": 23134,
                                "name": "getClosestBusinessDaySameDayOrPreceeding",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23276,
                                "src": "3019:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                                }
                              },
                              "id": 23137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3019:61:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 23068,
                            "id": 23138,
                            "nodeType": "Return",
                            "src": "3012:68:75"
                          }
                        ]
                      }
                    },
                    "id": 23177,
                    "nodeType": "IfStatement",
                    "src": "2354:1426:75",
                    "trueBody": {
                      "id": 23124,
                      "nodeType": "Block",
                      "src": "2444:460:75",
                      "statements": [
                        {
                          "assignments": [
                            23100
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23100,
                              "mutability": "mutable",
                              "name": "followingOrSameBusinessDay",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 23124,
                              "src": "2458:34:75",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23099,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2458:7:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 23105,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23102,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23058,
                                "src": "2535:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 23103,
                                "name": "calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23062,
                                "src": "2546:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              ],
                              "id": 23101,
                              "name": "getClosestBusinessDaySameDayOrFollowing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23229,
                              "src": "2495:39:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                              }
                            },
                            "id": 23104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2495:60:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2458:97:75"
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23108,
                                  "name": "followingOrSameBusinessDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23100,
                                  "src": "2610:26:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23106,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "2573:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getMonth",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36441,
                                "src": "2573:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2573:64:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23112,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23058,
                                  "src": "2678:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23110,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "2641:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getMonth",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36441,
                                "src": "2641:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2641:47:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2573:115:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23118,
                          "nodeType": "IfStatement",
                          "src": "2569:187:75",
                          "trueBody": {
                            "id": 23117,
                            "nodeType": "Block",
                            "src": "2690:66:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23115,
                                  "name": "followingOrSameBusinessDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23100,
                                  "src": "2715:26:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23068,
                                "id": 23116,
                                "nodeType": "Return",
                                "src": "2708:33:75"
                              }
                            ]
                          }
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23120,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23058,
                                "src": "2817:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 23121,
                                "name": "calendar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23062,
                                "src": "2828:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              ],
                              "id": 23119,
                              "name": "getClosestBusinessDaySameDayOrPreceeding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23276,
                              "src": "2776:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                              }
                            },
                            "id": 23122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2776:61:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 23068,
                          "id": 23123,
                          "nodeType": "Return",
                          "src": "2769:68:75"
                        }
                      ]
                    }
                  },
                  "id": 23178,
                  "nodeType": "IfStatement",
                  "src": "1985:1795:75",
                  "trueBody": {
                    "id": 23089,
                    "nodeType": "Block",
                    "src": "2073:275:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23085,
                              "name": "timestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23058,
                              "src": "2134:9:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23086,
                              "name": "calendar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23062,
                              "src": "2145:8:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Calendar_$22506",
                                "typeString": "enum Calendar"
                              }
                            ],
                            "id": 23084,
                            "name": "getClosestBusinessDaySameDayOrFollowing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23229,
                            "src": "2094:39:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_Calendar_$22506_$returns$_t_uint256_$",
                              "typeString": "function (uint256,enum Calendar) pure returns (uint256)"
                            }
                          },
                          "id": 23087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2094:60:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23068,
                        "id": 23088,
                        "nodeType": "Return",
                        "src": "2087:67:75"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23179,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23058,
                    "src": "3797:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23068,
                  "id": 23180,
                  "nodeType": "Return",
                  "src": "3790:16:75"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e726d680",
            "id": 23182,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shiftEventTime",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23058,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1632:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23057,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1632:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23060,
                  "mutability": "mutable",
                  "name": "convention",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1659:32:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                    "typeString": "enum BusinessDayConvention"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23059,
                    "name": "BusinessDayConvention",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22503,
                    "src": "1659:21:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                      "typeString": "enum BusinessDayConvention"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23062,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1701:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23061,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "1701:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23064,
                  "mutability": "mutable",
                  "name": "maturityDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1728:20:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23063,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1622:132:75"
            },
            "returnParameters": {
              "id": 23068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23067,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23182,
                  "src": "1800:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23066,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1800:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1799:9:75"
            },
            "scope": 23277,
            "src": "1599:2214:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23228,
              "nodeType": "Block",
              "src": "4127:403:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    },
                    "id": 23195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23192,
                      "name": "calendar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23187,
                      "src": "4141:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 23193,
                        "name": "Calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22506,
                        "src": "4153:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                          "typeString": "type(enum Calendar)"
                        }
                      },
                      "id": 23194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4153:11:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "src": "4141:23:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23225,
                  "nodeType": "IfStatement",
                  "src": "4137:361:75",
                  "trueBody": {
                    "id": 23224,
                    "nodeType": "Block",
                    "src": "4166:332:75",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23198,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23185,
                                "src": "4225:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23196,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37177,
                                "src": "4184:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 23197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getDayOfWeek",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36407,
                              "src": "4184:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 23199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4184:51:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 23200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4239:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "4184:56:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23211,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23185,
                                  "src": "4382:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23209,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "4341:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getDayOfWeek",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36407,
                                "src": "4341:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4341:51:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 23213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4396:1:75",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "4341:56:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23222,
                          "nodeType": "IfStatement",
                          "src": "4337:151:75",
                          "trueBody": {
                            "id": 23221,
                            "nodeType": "Block",
                            "src": "4399:89:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23217,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23185,
                                      "src": "4460:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 23218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4471:1:75",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23215,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "4424:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addDays",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36680,
                                    "src": "4424:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4424:49:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23191,
                                "id": 23220,
                                "nodeType": "Return",
                                "src": "4417:56:75"
                              }
                            ]
                          }
                        },
                        "id": 23223,
                        "nodeType": "IfStatement",
                        "src": "4180:308:75",
                        "trueBody": {
                          "id": 23208,
                          "nodeType": "Block",
                          "src": "4242:89:75",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23204,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23185,
                                    "src": "4303:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 23205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4314:1:75",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23202,
                                    "name": "BokkyPooBahsDateTimeLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37177,
                                    "src": "4267:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                      "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                    }
                                  },
                                  "id": 23203,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addDays",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 36680,
                                  "src": "4267:35:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 23206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4267:49:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23191,
                              "id": 23207,
                              "nodeType": "Return",
                              "src": "4260:56:75"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23226,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23185,
                    "src": "4514:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23191,
                  "id": 23227,
                  "nodeType": "Return",
                  "src": "4507:16:75"
                }
              ]
            },
            "documentation": {
              "id": 23183,
              "nodeType": "StructuredDocumentation",
              "src": "3819:156:75",
              "text": " @notice Returns the following business day if a non-business day is provided.\n (Returns the same day if calendar != MondayToFriday)"
            },
            "id": 23229,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClosestBusinessDaySameDayOrFollowing",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23185,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4029:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23184,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23187,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4048:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23186,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "4048:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:38:75"
            },
            "returnParameters": {
              "id": 23191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23190,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23229,
                  "src": "4114:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23189,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4114:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4113:9:75"
            },
            "scope": 23277,
            "src": "3980:550:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23275,
              "nodeType": "Block",
              "src": "4842:403:75",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    },
                    "id": 23242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 23239,
                      "name": "calendar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23234,
                      "src": "4856:8:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 23240,
                        "name": "Calendar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22506,
                        "src": "4868:8:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                          "typeString": "type(enum Calendar)"
                        }
                      },
                      "id": 23241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4868:11:75",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Calendar_$22506",
                        "typeString": "enum Calendar"
                      }
                    },
                    "src": "4856:23:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 23272,
                  "nodeType": "IfStatement",
                  "src": "4852:361:75",
                  "trueBody": {
                    "id": 23271,
                    "nodeType": "Block",
                    "src": "4881:332:75",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23245,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23232,
                                "src": "4940:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23243,
                                "name": "BokkyPooBahsDateTimeLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37177,
                                "src": "4899:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                  "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                }
                              },
                              "id": 23244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getDayOfWeek",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36407,
                              "src": "4899:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 23246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4899:51:75",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 23247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4954:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "4899:56:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23258,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23232,
                                  "src": "5097:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23256,
                                  "name": "BokkyPooBahsDateTimeLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37177,
                                  "src": "5056:27:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                    "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                  }
                                },
                                "id": 23257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getDayOfWeek",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36407,
                                "src": "5056:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 23259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5056:51:75",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 23260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5111:1:75",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "5056:56:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 23269,
                          "nodeType": "IfStatement",
                          "src": "5052:151:75",
                          "trueBody": {
                            "id": 23268,
                            "nodeType": "Block",
                            "src": "5114:89:75",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23264,
                                      "name": "timestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23232,
                                      "src": "5175:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 23265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5186:1:75",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23262,
                                      "name": "BokkyPooBahsDateTimeLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37177,
                                      "src": "5139:27:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                        "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                      }
                                    },
                                    "id": 23263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "subDays",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 36921,
                                    "src": "5139:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5139:49:75",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 23238,
                                "id": 23267,
                                "nodeType": "Return",
                                "src": "5132:56:75"
                              }
                            ]
                          }
                        },
                        "id": 23270,
                        "nodeType": "IfStatement",
                        "src": "4895:308:75",
                        "trueBody": {
                          "id": 23255,
                          "nodeType": "Block",
                          "src": "4957:89:75",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23251,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23232,
                                    "src": "5018:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 23252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5029:1:75",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23249,
                                    "name": "BokkyPooBahsDateTimeLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37177,
                                    "src": "4982:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$37177_$",
                                      "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                    }
                                  },
                                  "id": 23250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "subDays",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 36921,
                                  "src": "4982:35:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 23253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4982:49:75",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 23238,
                              "id": 23254,
                              "nodeType": "Return",
                              "src": "4975:56:75"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 23273,
                    "name": "timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23232,
                    "src": "5229:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23238,
                  "id": 23274,
                  "nodeType": "Return",
                  "src": "5222:16:75"
                }
              ]
            },
            "documentation": {
              "id": 23230,
              "nodeType": "StructuredDocumentation",
              "src": "4536:153:75",
              "text": " @notice Returns the previous buiness day if a non-businessday is provided.\n (Returns the same day if calendar != MondayToFriday)"
            },
            "id": 23276,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getClosestBusinessDaySameDayOrPreceeding",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 23235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23232,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4744:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4744:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23234,
                  "mutability": "mutable",
                  "name": "calendar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4763:17:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Calendar_$22506",
                    "typeString": "enum Calendar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23233,
                    "name": "Calendar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22506,
                    "src": "4763:8:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Calendar_$22506",
                      "typeString": "enum Calendar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4743:38:75"
            },
            "returnParameters": {
              "id": 23238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23237,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23276,
                  "src": "4829:7:75",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23236,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4829:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4828:9:75"
            },
            "scope": 23277,
            "src": "4694:551:75",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 23278,
        "src": "461:4786:75"
      }
    ],
    "src": "41:5207:75"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.265Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "title": "BusinessDayConventions",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "Contains conventions of how to handle non-business days when generating schedules of events. The events schedule time can be shifted or not, if shifted it is possible that it is shifted to the next or previous valid business days, etc.",
    "version": 1
  }
}