{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20Metadata",
          "name": "currency_",
          "type": "address"
        },
        {
          "internalType": "contract IPolicyPoolConfig",
          "name": "config_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IRiskModule",
          "name": "riskModule",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "payout",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "scr",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lossProb",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purePremium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForEnsuro",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForRm",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForLps",
              "type": "uint256"
            },
            {
              "internalType": "contract IRiskModule",
              "name": "riskModule",
              "type": "address"
            },
            {
              "internalType": "uint40",
              "name": "start",
              "type": "uint40"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            }
          ],
          "indexed": false,
          "internalType": "struct Policy.PolicyData",
          "name": "policy",
          "type": "tuple"
        }
      ],
      "name": "NewPolicy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IRiskModule",
          "name": "riskModule",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "policyId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "payout",
          "type": "uint256"
        }
      ],
      "name": "PolicyResolved",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_INT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "assetEarnings",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "contract IPolicyPoolConfig",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20Metadata",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IEToken",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "getETokenAt",
      "outputs": [
        {
          "internalType": "contract IEToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getETokenCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInvestable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "payout",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "scr",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lossProb",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purePremium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForEnsuro",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForRm",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForLps",
              "type": "uint256"
            },
            {
              "internalType": "contract IRiskModule",
              "name": "riskModule",
              "type": "address"
            },
            {
              "internalType": "uint40",
              "name": "start",
              "type": "uint40"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            }
          ],
          "internalType": "struct Policy.PolicyData",
          "name": "policy",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "internalId",
          "type": "uint96"
        }
      ],
      "name": "newPolicy",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "policyNFT",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "receiveGrant",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "payout",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "scr",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lossProb",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purePremium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForEnsuro",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForRm",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForLps",
              "type": "uint256"
            },
            {
              "internalType": "contract IRiskModule",
              "name": "riskModule",
              "type": "address"
            },
            {
              "internalType": "uint40",
              "name": "start",
              "type": "uint40"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            }
          ],
          "internalType": "struct Policy.PolicyData",
          "name": "policy",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "payout",
          "type": "uint256"
        }
      ],
      "name": "resolvePolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "payout",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "scr",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lossProb",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purePremium",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForEnsuro",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForRm",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "premiumForLps",
              "type": "uint256"
            },
            {
              "internalType": "contract IRiskModule",
              "name": "riskModule",
              "type": "address"
            },
            {
              "internalType": "uint40",
              "name": "start",
              "type": "uint40"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            }
          ],
          "internalType": "struct Policy.PolicyData",
          "name": "policy",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "customerWon",
          "type": "bool"
        }
      ],
      "name": "resolvePolicyFullPayout",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IAssetManager",
          "name": "newAssetManager",
          "type": "address"
        }
      ],
      "name": "setAssetManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "setTotalETokenSupply",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalETokenSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IEToken",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "14": "contracts/WadRayMath.sol",
    "24": "contracts/mocks/PolicyPoolMock.sol",
    "31": "interfaces/IAssetManager.sol",
    "32": "interfaces/IEToken.sol",
    "33": "interfaces/IExchange.sol",
    "34": "interfaces/IInsolvencyHook.sol",
    "35": "interfaces/ILPWhitelist.sol",
    "37": "interfaces/IPolicyPool.sol",
    "39": "interfaces/IPolicyPoolConfig.sol",
    "40": "interfaces/IRiskModule.sol",
    "7": "contracts/Policy.sol",
    "98": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"
  },
  "ast": {
    "absolutePath": "contracts/mocks/PolicyPoolMock.sol",
    "exportedSymbols": {
      "AccessControl": [
        20768
      ],
      "ForwardProxy": [
        12828
      ],
      "IAssetManager": [
        16509
      ],
      "IERC20Metadata": [
        16271
      ],
      "IEToken": [
        16628
      ],
      "IPolicyPool": [
        14671
      ],
      "IPolicyPoolConfig": [
        14792
      ],
      "IRiskModule": [
        17857
      ],
      "Policy": [
        5952
      ],
      "PolicyPoolMock": [
        13719
      ],
      "PolicyPoolMockForward": [
        13899
      ]
    },
    "id": 13900,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13248,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:23:24"
      },
      {
        "absolutePath": "interfaces/IPolicyPool.sol",
        "file": "../../interfaces/IPolicyPool.sol",
        "id": 13250,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 14672,
        "src": "64:61:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13249,
              "name": "IPolicyPool",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "72:11:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "interfaces/IRiskModule.sol",
        "file": "../../interfaces/IRiskModule.sol",
        "id": 13252,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 17858,
        "src": "126:61:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13251,
              "name": "IRiskModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "134:11:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "interfaces/IEToken.sol",
        "file": "../../interfaces/IEToken.sol",
        "id": 13254,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 16629,
        "src": "188:53:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13253,
              "name": "IEToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "196:7:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "interfaces/IAssetManager.sol",
        "file": "../../interfaces/IAssetManager.sol",
        "id": 13256,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 16510,
        "src": "242:65:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13255,
              "name": "IAssetManager",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "250:13:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "interfaces/IPolicyPoolConfig.sol",
        "file": "../../interfaces/IPolicyPoolConfig.sol",
        "id": 13258,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 14793,
        "src": "308:73:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13257,
              "name": "IPolicyPoolConfig",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "316:17:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
        "file": "@openzeppelin/contracts/access/AccessControl.sol",
        "id": 13260,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 20769,
        "src": "382:79:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13259,
              "name": "AccessControl",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "390:13:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "file": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "id": 13262,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 16272,
        "src": "462:97:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13261,
              "name": "IERC20Metadata",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "470:14:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/Policy.sol",
        "file": "../Policy.sol",
        "id": 13264,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 5953,
        "src": "560:37:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13263,
              "name": "Policy",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "568:6:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/mocks/ForwardProxy.sol",
        "file": "./ForwardProxy.sol",
        "id": 13266,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13900,
        "sourceUnit": 12829,
        "src": "598:48:24",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13265,
              "name": "ForwardProxy",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "606:12:24",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 13267,
              "name": "IPolicyPool",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14671,
              "src": "675:11:24"
            },
            "id": 13268,
            "nodeType": "InheritanceSpecifier",
            "src": "675:11:24"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 13719,
        "linearizedBaseContracts": [
          13719,
          14671
        ],
        "name": "PolicyPoolMock",
        "nameLocation": "657:14:24",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 13272,
            "libraryName": {
              "id": 13269,
              "name": "Policy",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5952,
              "src": "697:6:24"
            },
            "nodeType": "UsingForDirective",
            "src": "691:35:24",
            "typeName": {
              "id": 13271,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13270,
                "name": "Policy.PolicyData",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5686,
                "src": "708:17:24"
              },
              "referencedDeclaration": 5686,
              "src": "708:17:24",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                "typeString": "struct Policy.PolicyData"
              }
            }
          },
          {
            "constant": true,
            "functionSelector": "098d3228",
            "id": 13275,
            "mutability": "constant",
            "name": "MAX_INT",
            "nameLocation": "754:7:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "730:104:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 13273,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "730:7:24",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
              "id": 13274,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "768:66:24",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                "typeString": "int_const 1157...(70 digits omitted)...9935"
              },
              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13278,
            "mutability": "mutable",
            "name": "_currency",
            "nameLocation": "863:9:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "839:33:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
              "typeString": "contract IERC20Metadata"
            },
            "typeName": {
              "id": 13277,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13276,
                "name": "IERC20Metadata",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 16271,
                "src": "839:14:24"
              },
              "referencedDeclaration": 16271,
              "src": "839:14:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                "typeString": "contract IERC20Metadata"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13281,
            "mutability": "mutable",
            "name": "_config",
            "nameLocation": "903:7:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "876:34:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
              "typeString": "contract IPolicyPoolConfig"
            },
            "typeName": {
              "id": 13280,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13279,
                "name": "IPolicyPoolConfig",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 14792,
                "src": "876:17:24"
              },
              "referencedDeclaration": 14792,
              "src": "876:17:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                "typeString": "contract IPolicyPoolConfig"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13283,
            "mutability": "mutable",
            "name": "_totalETokenSupply",
            "nameLocation": "932:18:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "915:35:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 13282,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "915:7:24",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13288,
            "mutability": "mutable",
            "name": "policies",
            "nameLocation": "1001:8:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "954:55:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PolicyData_$5686_storage_$",
              "typeString": "mapping(uint256 => struct Policy.PolicyData)"
            },
            "typeName": {
              "id": 13287,
              "keyType": {
                "id": 13284,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "962:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "954:37:24",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PolicyData_$5686_storage_$",
                "typeString": "mapping(uint256 => struct Policy.PolicyData)"
              },
              "valueType": {
                "id": 13286,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 13285,
                  "name": "Policy.PolicyData",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5686,
                  "src": "973:17:24"
                },
                "referencedDeclaration": 5686,
                "src": "973:17:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                  "typeString": "struct Policy.PolicyData"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13292,
            "mutability": "mutable",
            "name": "policyHashes",
            "nameLocation": "1050:12:24",
            "nodeType": "VariableDeclaration",
            "scope": 13719,
            "src": "1013:49:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
              "typeString": "mapping(uint256 => bytes32)"
            },
            "typeName": {
              "id": 13291,
              "keyType": {
                "id": 13289,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1021:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1013:27:24",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                "typeString": "mapping(uint256 => bytes32)"
              },
              "valueType": {
                "id": 13290,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1032:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 13300,
            "name": "NewPolicy",
            "nameLocation": "1073:9:24",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13295,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "riskModule",
                  "nameLocation": "1103:10:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13300,
                  "src": "1083:30:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IRiskModule_$17857",
                    "typeString": "contract IRiskModule"
                  },
                  "typeName": {
                    "id": 13294,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13293,
                      "name": "IRiskModule",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17857,
                      "src": "1083:11:24"
                    },
                    "referencedDeclaration": 17857,
                    "src": "1083:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRiskModule_$17857",
                      "typeString": "contract IRiskModule"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13298,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "policy",
                  "nameLocation": "1133:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13300,
                  "src": "1115:24:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                    "typeString": "struct Policy.PolicyData"
                  },
                  "typeName": {
                    "id": 13297,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13296,
                      "name": "Policy.PolicyData",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5686,
                      "src": "1115:17:24"
                    },
                    "referencedDeclaration": 5686,
                    "src": "1115:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                      "typeString": "struct Policy.PolicyData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1082:58:24"
            },
            "src": "1067:74:24"
          },
          {
            "anonymous": false,
            "id": 13309,
            "name": "PolicyResolved",
            "nameLocation": "1150:14:24",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 13308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13303,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "riskModule",
                  "nameLocation": "1185:10:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13309,
                  "src": "1165:30:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IRiskModule_$17857",
                    "typeString": "contract IRiskModule"
                  },
                  "typeName": {
                    "id": 13302,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13301,
                      "name": "IRiskModule",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17857,
                      "src": "1165:11:24"
                    },
                    "referencedDeclaration": 17857,
                    "src": "1165:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRiskModule_$17857",
                      "typeString": "contract IRiskModule"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13305,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "policyId",
                  "nameLocation": "1213:8:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13309,
                  "src": "1197:24:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13304,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1197:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13307,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "payout",
                  "nameLocation": "1231:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13309,
                  "src": "1223:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1164:74:24"
            },
            "src": "1144:95:24"
          },
          {
            "body": {
              "id": 13349,
              "nodeType": "Block",
              "src": "1308:274:24",
              "statements": [
                {
                  "expression": {
                    "id": 13320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13318,
                      "name": "_currency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13278,
                      "src": "1314:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                        "typeString": "contract IERC20Metadata"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13319,
                      "name": "currency_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13312,
                      "src": "1326:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                        "typeString": "contract IERC20Metadata"
                      }
                    },
                    "src": "1314:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "id": 13321,
                  "nodeType": "ExpressionStatement",
                  "src": "1314:21:24"
                },
                {
                  "expression": {
                    "id": 13324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13322,
                      "name": "_config",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13281,
                      "src": "1341:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                        "typeString": "contract IPolicyPoolConfig"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13323,
                      "name": "config_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13315,
                      "src": "1351:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                        "typeString": "contract IPolicyPoolConfig"
                      }
                    },
                    "src": "1341:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "id": 13325,
                  "nodeType": "ExpressionStatement",
                  "src": "1341:17:24"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 13326,
                        "name": "_config",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13281,
                        "src": "1364:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                          "typeString": "contract IPolicyPoolConfig"
                        }
                      },
                      "id": 13328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connect",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14750,
                      "src": "1364:15:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 13329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1364:17:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13330,
                  "nodeType": "ExpressionStatement",
                  "src": "1364:17:24"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_contract$_IAssetManager_$16509",
                          "typeString": "contract IAssetManager"
                        },
                        "id": 13341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13332,
                              "name": "_config",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "1402:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            },
                            "id": 13333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "assetManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14756,
                            "src": "1402:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                              "typeString": "function () view external returns (contract IAssetManager)"
                            }
                          },
                          "id": 13334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1402:22:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 13338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1450:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 13337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1442:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13336,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1442:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1442:10:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13335,
                            "name": "IAssetManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16509,
                            "src": "1428:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IAssetManager_$16509_$",
                              "typeString": "type(contract IAssetManager)"
                            }
                          },
                          "id": 13340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1428:25:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        },
                        "src": "1402:51:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "41737365744d616e616765722063616e277420626520736574206265666f726520506f6c696379506f6f6c20696e697469616c697a6174696f6e",
                        "id": 13342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1461:60:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_06b285b636e2bed6c555f2dc98c2be9711971d5469c584a133ec98e6ef2ad96c",
                          "typeString": "literal_string \"AssetManager can't be set before PolicyPool initialization\""
                        },
                        "value": "AssetManager can't be set before PolicyPool initialization"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_06b285b636e2bed6c555f2dc98c2be9711971d5469c584a133ec98e6ef2ad96c",
                          "typeString": "literal_string \"AssetManager can't be set before PolicyPool initialization\""
                        }
                      ],
                      "id": 13331,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1387:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1387:140:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13344,
                  "nodeType": "ExpressionStatement",
                  "src": "1387:140:24"
                },
                {
                  "expression": {
                    "id": 13347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13345,
                      "name": "_totalETokenSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13283,
                      "src": "1533:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "31653430",
                      "id": 13346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1554:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000000000000000000000000000000000000000_by_1",
                        "typeString": "int_const 1000...(33 digits omitted)...0000"
                      },
                      "value": "1e40"
                    },
                    "src": "1533:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13348,
                  "nodeType": "ExpressionStatement",
                  "src": "1533:25:24"
                }
              ]
            },
            "id": 13350,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13312,
                  "mutability": "mutable",
                  "name": "currency_",
                  "nameLocation": "1270:9:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13350,
                  "src": "1255:24:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 13311,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13310,
                      "name": "IERC20Metadata",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16271,
                      "src": "1255:14:24"
                    },
                    "referencedDeclaration": 16271,
                    "src": "1255:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13315,
                  "mutability": "mutable",
                  "name": "config_",
                  "nameLocation": "1299:7:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13350,
                  "src": "1281:25:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                    "typeString": "contract IPolicyPoolConfig"
                  },
                  "typeName": {
                    "id": 13314,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13313,
                      "name": "IPolicyPoolConfig",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 14792,
                      "src": "1281:17:24"
                    },
                    "referencedDeclaration": 14792,
                    "src": "1281:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1254:53:24"
            },
            "returnParameters": {
              "id": 13317,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1308:0:24"
            },
            "scope": 13719,
            "src": "1243:339:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              14572
            ],
            "body": {
              "id": 13359,
              "nodeType": "Block",
              "src": "1654:27:24",
              "statements": [
                {
                  "expression": {
                    "id": 13357,
                    "name": "_currency",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13278,
                    "src": "1667:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "functionReturnParameters": 13356,
                  "id": 13358,
                  "nodeType": "Return",
                  "src": "1660:16:24"
                }
              ]
            },
            "functionSelector": "e5a6b10f",
            "id": 13360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currency",
            "nameLocation": "1595:8:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13352,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1620:8:24"
            },
            "parameters": {
              "id": 13351,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1603:2:24"
            },
            "returnParameters": {
              "id": 13356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13355,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13360,
                  "src": "1638:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 13354,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13353,
                      "name": "IERC20Metadata",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16271,
                      "src": "1638:14:24"
                    },
                    "referencedDeclaration": 16271,
                    "src": "1638:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1637:16:24"
            },
            "scope": 13719,
            "src": "1586:95:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14578
            ],
            "body": {
              "id": 13369,
              "nodeType": "Block",
              "src": "1754:25:24",
              "statements": [
                {
                  "expression": {
                    "id": 13367,
                    "name": "_config",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13281,
                    "src": "1767:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "functionReturnParameters": 13366,
                  "id": 13368,
                  "nodeType": "Return",
                  "src": "1760:14:24"
                }
              ]
            },
            "functionSelector": "79502c55",
            "id": 13370,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "config",
            "nameLocation": "1694:6:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13362,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1717:8:24"
            },
            "parameters": {
              "id": 13361,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1700:2:24"
            },
            "returnParameters": {
              "id": 13366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13365,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13370,
                  "src": "1735:17:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                    "typeString": "contract IPolicyPoolConfig"
                  },
                  "typeName": {
                    "id": 13364,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13363,
                      "name": "IPolicyPoolConfig",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 14792,
                      "src": "1735:17:24"
                    },
                    "referencedDeclaration": 14792,
                    "src": "1735:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1734:19:24"
            },
            "scope": 13719,
            "src": "1685:94:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14583
            ],
            "body": {
              "id": 13381,
              "nodeType": "Block",
              "src": "1845:28:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 13378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1866:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 13377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1858:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 13376,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1858:7:24",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 13379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1858:10:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13375,
                  "id": 13380,
                  "nodeType": "Return",
                  "src": "1851:17:24"
                }
              ]
            },
            "functionSelector": "af02808a",
            "id": 13382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "policyNFT",
            "nameLocation": "1792:9:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13372,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1818:8:24"
            },
            "parameters": {
              "id": 13371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1801:2:24"
            },
            "returnParameters": {
              "id": 13375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13374,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13382,
                  "src": "1836:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13373,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1836:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1835:9:24"
            },
            "scope": 13719,
            "src": "1783:90:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14589
            ],
            "body": {
              "id": 13457,
              "nodeType": "Block",
              "src": "1951:459:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 13396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 13390,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1965:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 13391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1965:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 13394,
                              "name": "_config",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "1987:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            ],
                            "id": 13393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1979:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13392,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1979:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1979:16:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1965:30:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e206368616e67652061737365744d616e61676572",
                        "id": 13397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1997:51:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_288bc4daf56fc7b9b3a7d6ee529886d2cac285db54cbd4d7440933a7c771b79e",
                          "typeString": "literal_string \"Only the PolicyPoolConfig can change assetManager\""
                        },
                        "value": "Only the PolicyPoolConfig can change assetManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_288bc4daf56fc7b9b3a7d6ee529886d2cac285db54cbd4d7440933a7c771b79e",
                          "typeString": "literal_string \"Only the PolicyPoolConfig can change assetManager\""
                        }
                      ],
                      "id": 13389,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1957:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1957:92:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13399,
                  "nodeType": "ExpressionStatement",
                  "src": "1957:92:24"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13402,
                              "name": "_config",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "2067:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            },
                            "id": 13403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "assetManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14756,
                            "src": "2067:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                              "typeString": "function () view external returns (contract IAssetManager)"
                            }
                          },
                          "id": 13404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2067:22:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        ],
                        "id": 13401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2059:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2059:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2059:31:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2102:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 13407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2094:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2094:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2094:10:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2059:45:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13431,
                  "nodeType": "IfStatement",
                  "src": "2055:225:24",
                  "trueBody": {
                    "id": 13430,
                    "nodeType": "Block",
                    "src": "2106:174:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13411,
                                  "name": "_config",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13281,
                                  "src": "2114:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                    "typeString": "contract IPolicyPoolConfig"
                                  }
                                },
                                "id": 13413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "assetManager",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14756,
                                "src": "2114:20:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                                  "typeString": "function () view external returns (contract IAssetManager)"
                                }
                              },
                              "id": 13414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2114:22:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                "typeString": "contract IAssetManager"
                              }
                            },
                            "id": 13415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deinvestAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16508,
                            "src": "2114:34:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 13416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2114:36:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13417,
                        "nodeType": "ExpressionStatement",
                        "src": "2114:36:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13423,
                                      "name": "_config",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13281,
                                      "src": "2207:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                        "typeString": "contract IPolicyPoolConfig"
                                      }
                                    },
                                    "id": 13424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "assetManager",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14756,
                                    "src": "2207:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                                      "typeString": "function () view external returns (contract IAssetManager)"
                                    }
                                  },
                                  "id": 13425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2207:22:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                ],
                                "id": 13422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2199:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13421,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2199:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2199:31:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 13427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2232:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 13418,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13278,
                              "src": "2181:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                                "typeString": "contract IERC20Metadata"
                              }
                            },
                            "id": 13420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16675,
                            "src": "2181:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 13428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2181:53:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13429,
                        "nodeType": "ExpressionStatement",
                        "src": "2181:53:24"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 13434,
                          "name": "newAssetManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13385,
                          "src": "2297:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        ],
                        "id": 13433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2289:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13432,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2289:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13435,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2289:24:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2325:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 13437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2317:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2317:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2317:10:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2289:38:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13456,
                  "nodeType": "IfStatement",
                  "src": "2285:121:24",
                  "trueBody": {
                    "id": 13455,
                    "nodeType": "Block",
                    "src": "2329:77:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13446,
                                  "name": "newAssetManager",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13385,
                                  "src": "2363:15:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                ],
                                "id": 13445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2355:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13444,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2355:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2355:24:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2386:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 13449,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2386:7:24",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 13448,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2381:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2381:13:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 13452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "2381:17:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 13441,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13278,
                              "src": "2337:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                                "typeString": "contract IERC20Metadata"
                              }
                            },
                            "id": 13443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16675,
                            "src": "2337:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 13453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2337:62:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13454,
                        "nodeType": "ExpressionStatement",
                        "src": "2337:62:24"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "43060237",
            "id": 13458,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAssetManager",
            "nameLocation": "1886:15:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13387,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1942:8:24"
            },
            "parameters": {
              "id": 13386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13385,
                  "mutability": "mutable",
                  "name": "newAssetManager",
                  "nameLocation": "1916:15:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13458,
                  "src": "1902:29:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                    "typeString": "contract IAssetManager"
                  },
                  "typeName": {
                    "id": 13384,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13383,
                      "name": "IAssetManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16509,
                      "src": "1902:13:24"
                    },
                    "referencedDeclaration": 16509,
                    "src": "1902:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetManager_$16509",
                      "typeString": "contract IAssetManager"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1901:31:24"
            },
            "returnParameters": {
              "id": 13388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1951:0:24"
            },
            "scope": 13719,
            "src": "1877:533:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14627
            ],
            "body": {
              "id": 13466,
              "nodeType": "Block",
              "src": "2480:19:24",
              "statements": [
                {
                  "expression": {
                    "hexValue": "30",
                    "id": 13464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2493:1:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 13463,
                  "id": 13465,
                  "nodeType": "Return",
                  "src": "2486:8:24"
                }
              ]
            },
            "functionSelector": "65e29c7e",
            "id": 13467,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInvestable",
            "nameLocation": "2423:13:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13460,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2453:8:24"
            },
            "parameters": {
              "id": 13459,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2436:2:24"
            },
            "returnParameters": {
              "id": 13463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13462,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13467,
                  "src": "2471:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2471:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2470:9:24"
            },
            "scope": 13719,
            "src": "2414:85:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14632
            ],
            "body": {
              "id": 13475,
              "nodeType": "Block",
              "src": "2570:19:24",
              "statements": [
                {
                  "expression": {
                    "hexValue": "30",
                    "id": 13473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2583:1:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 13472,
                  "id": 13474,
                  "nodeType": "Return",
                  "src": "2576:8:24"
                }
              ]
            },
            "functionSelector": "dea167d5",
            "id": 13476,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getETokenCount",
            "nameLocation": "2512:14:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13469,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2543:8:24"
            },
            "parameters": {
              "id": 13468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2526:2:24"
            },
            "returnParameters": {
              "id": 13472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13471,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13476,
                  "src": "2561:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2561:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2560:9:24"
            },
            "scope": 13719,
            "src": "2503:86:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14640
            ],
            "body": {
              "id": 13492,
              "nodeType": "Block",
              "src": "2664:37:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 13488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2693:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 13487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2685:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13486,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2685:7:24",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2685:10:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13485,
                      "name": "IEToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16628,
                      "src": "2677:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEToken_$16628_$",
                        "typeString": "type(contract IEToken)"
                      }
                    },
                    "id": 13490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2677:19:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "functionReturnParameters": 13484,
                  "id": 13491,
                  "nodeType": "Return",
                  "src": "2670:26:24"
                }
              ]
            },
            "functionSelector": "b0ec4bcf",
            "id": 13493,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getETokenAt",
            "nameLocation": "2602:11:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13480,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2637:8:24"
            },
            "parameters": {
              "id": 13479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13478,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13493,
                  "src": "2614:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2614:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2613:9:24"
            },
            "returnParameters": {
              "id": 13484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13483,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13493,
                  "src": "2655:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEToken_$16628",
                    "typeString": "contract IEToken"
                  },
                  "typeName": {
                    "id": 13482,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13481,
                      "name": "IEToken",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16628,
                      "src": "2655:7:24"
                    },
                    "referencedDeclaration": 16628,
                    "src": "2655:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2654:9:24"
            },
            "scope": 13719,
            "src": "2593:108:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14647
            ],
            "body": {
              "id": 13505,
              "nodeType": "Block",
              "src": "2766:36:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4e6f7420496d706c656d656e746564",
                        "id": 13502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2779:17:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a15a657eb93d30e6a4d715c83e9470991853f7e57b97f4e4634b26f2428171c",
                          "typeString": "literal_string \"Not Implemented\""
                        },
                        "value": "Not Implemented"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1a15a657eb93d30e6a4d715c83e9470991853f7e57b97f4e4634b26f2428171c",
                          "typeString": "literal_string \"Not Implemented\""
                        }
                      ],
                      "id": 13501,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "2772:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 13503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2772:25:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13504,
                  "nodeType": "ExpressionStatement",
                  "src": "2772:25:24"
                }
              ]
            },
            "functionSelector": "ab600169",
            "id": 13506,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "assetEarnings",
            "nameLocation": "2714:13:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13499,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2757:8:24"
            },
            "parameters": {
              "id": 13498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13495,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13506,
                  "src": "2728:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13494,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2728:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13497,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13506,
                  "src": "2737:4:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13496,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2737:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2727:15:24"
            },
            "returnParameters": {
              "id": 13500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2766:0:24"
            },
            "scope": 13719,
            "src": "2705:97:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14601
            ],
            "body": {
              "id": 13560,
              "nodeType": "Block",
              "src": "2953:208:24",
              "statements": [
                {
                  "expression": {
                    "id": 13538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 13519,
                        "name": "policy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13509,
                        "src": "2959:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                          "typeString": "struct Policy.PolicyData memory"
                        }
                      },
                      "id": 13521,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5662,
                      "src": "2959:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 13528,
                                            "name": "policy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13509,
                                            "src": "2996:6:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                                              "typeString": "struct Policy.PolicyData memory"
                                            }
                                          },
                                          "id": 13529,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "riskModule",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5681,
                                          "src": "2996:17:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRiskModule_$17857",
                                            "typeString": "contract IRiskModule"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IRiskModule_$17857",
                                            "typeString": "contract IRiskModule"
                                          }
                                        ],
                                        "id": 13527,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2988:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 13526,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2988:7:24",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13530,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2988:26:24",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13525,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2980:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 13524,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2980:7:24",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2980:35:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 13523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2972:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13522,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2972:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2972:44:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "3936",
                              "id": 13533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3020:2:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_96_by_1",
                                "typeString": "int_const 96"
                              },
                              "value": "96"
                            },
                            "src": "2972:50:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 13535,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2971:52:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 13536,
                        "name": "internalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13513,
                        "src": "3026:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "src": "2971:65:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2959:77:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13539,
                  "nodeType": "ExpressionStatement",
                  "src": "2959:77:24"
                },
                {
                  "expression": {
                    "id": 13547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 13540,
                        "name": "policyHashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13292,
                        "src": "3042:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                          "typeString": "mapping(uint256 => bytes32)"
                        }
                      },
                      "id": 13543,
                      "indexExpression": {
                        "expression": {
                          "id": 13541,
                          "name": "policy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13509,
                          "src": "3055:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                            "typeString": "struct Policy.PolicyData memory"
                          }
                        },
                        "id": 13542,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5662,
                        "src": "3055:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3042:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 13544,
                          "name": "policy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13509,
                          "src": "3068:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                            "typeString": "struct Policy.PolicyData memory"
                          }
                        },
                        "id": 13545,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "hash",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5951,
                        "src": "3068:11:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_PolicyData_$5686_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PolicyData_$5686_memory_ptr_$",
                          "typeString": "function (struct Policy.PolicyData memory) pure returns (bytes32)"
                        }
                      },
                      "id": 13546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3068:13:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3042:39:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 13548,
                  "nodeType": "ExpressionStatement",
                  "src": "3042:39:24"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 13551,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3114:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3114:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13550,
                          "name": "IRiskModule",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17857,
                          "src": "3102:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IRiskModule_$17857_$",
                            "typeString": "type(contract IRiskModule)"
                          }
                        },
                        "id": 13553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3102:23:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRiskModule_$17857",
                          "typeString": "contract IRiskModule"
                        }
                      },
                      {
                        "id": 13554,
                        "name": "policy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13509,
                        "src": "3127:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                          "typeString": "struct Policy.PolicyData memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IRiskModule_$17857",
                          "typeString": "contract IRiskModule"
                        },
                        {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                          "typeString": "struct Policy.PolicyData memory"
                        }
                      ],
                      "id": 13549,
                      "name": "NewPolicy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13300,
                      "src": "3092:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IRiskModule_$17857_$_t_struct$_PolicyData_$5686_memory_ptr_$returns$__$",
                        "typeString": "function (contract IRiskModule,struct Policy.PolicyData memory)"
                      }
                    },
                    "id": 13555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3092:42:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13556,
                  "nodeType": "EmitStatement",
                  "src": "3087:47:24"
                },
                {
                  "expression": {
                    "expression": {
                      "id": 13557,
                      "name": "policy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13509,
                      "src": "3147:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                        "typeString": "struct Policy.PolicyData memory"
                      }
                    },
                    "id": 13558,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "id",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5662,
                    "src": "3147:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13518,
                  "id": 13559,
                  "nodeType": "Return",
                  "src": "3140:16:24"
                }
              ]
            },
            "functionSelector": "19704a3a",
            "id": 13561,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newPolicy",
            "nameLocation": "2815:9:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13515,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2926:8:24"
            },
            "parameters": {
              "id": 13514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13509,
                  "mutability": "mutable",
                  "name": "policy",
                  "nameLocation": "2855:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13561,
                  "src": "2830:31:24",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                    "typeString": "struct Policy.PolicyData"
                  },
                  "typeName": {
                    "id": 13508,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13507,
                      "name": "Policy.PolicyData",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5686,
                      "src": "2830:17:24"
                    },
                    "referencedDeclaration": 5686,
                    "src": "2830:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                      "typeString": "struct Policy.PolicyData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13511,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13561,
                  "src": "2867:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2867:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13513,
                  "mutability": "mutable",
                  "name": "internalId",
                  "nameLocation": "2902:10:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13561,
                  "src": "2895:17:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 13512,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "2895:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2824:92:24"
            },
            "returnParameters": {
              "id": 13518,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13517,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13561,
                  "src": "2944:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2944:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2943:9:24"
            },
            "scope": 13719,
            "src": "2806:355:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13623,
              "nodeType": "Block",
              "src": "3247:396:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 13570,
                            "name": "policy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13564,
                            "src": "3261:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                              "typeString": "struct Policy.PolicyData memory"
                            }
                          },
                          "id": 13571,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5662,
                          "src": "3261:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 13572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3274:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3261:14:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "506f6c696379206e6f7420666f756e64",
                        "id": 13574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3277:18:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_42cb6adf2172fcd554545cbd0fc5a0dbec5675a8a159c6f6ca5b7e35bd632f79",
                          "typeString": "literal_string \"Policy not found\""
                        },
                        "value": "Policy not found"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_42cb6adf2172fcd554545cbd0fc5a0dbec5675a8a159c6f6ca5b7e35bd632f79",
                          "typeString": "literal_string \"Policy not found\""
                        }
                      ],
                      "id": 13569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3253:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3253:43:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13576,
                  "nodeType": "ExpressionStatement",
                  "src": "3253:43:24"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 13585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13578,
                              "name": "policy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13564,
                              "src": "3310:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                                "typeString": "struct Policy.PolicyData memory"
                              }
                            },
                            "id": 13579,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "hash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5951,
                            "src": "3310:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_PolicyData_$5686_memory_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_PolicyData_$5686_memory_ptr_$",
                              "typeString": "function (struct Policy.PolicyData memory) pure returns (bytes32)"
                            }
                          },
                          "id": 13580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3310:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 13581,
                            "name": "policyHashes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13292,
                            "src": "3327:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                              "typeString": "mapping(uint256 => bytes32)"
                            }
                          },
                          "id": 13584,
                          "indexExpression": {
                            "expression": {
                              "id": 13582,
                              "name": "policy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13564,
                              "src": "3340:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                                "typeString": "struct Policy.PolicyData memory"
                              }
                            },
                            "id": 13583,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5662,
                            "src": "3340:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3327:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3310:40:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4861736820646f65736e2774206d61746368",
                        "id": 13586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3352:20:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dfce19cc5c9d715e1c1447fc4d85b7dd2f48c5fc48e7b8cdfb74121bafc6775d",
                          "typeString": "literal_string \"Hash doesn't match\""
                        },
                        "value": "Hash doesn't match"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dfce19cc5c9d715e1c1447fc4d85b7dd2f48c5fc48e7b8cdfb74121bafc6775d",
                          "typeString": "literal_string \"Hash doesn't match\""
                        }
                      ],
                      "id": 13577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3302:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3302:71:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13588,
                  "nodeType": "ExpressionStatement",
                  "src": "3302:71:24"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 13597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 13590,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3394:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 13591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "3394:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13594,
                                "name": "policy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13564,
                                "src": "3416:6:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                                  "typeString": "struct Policy.PolicyData memory"
                                }
                              },
                              "id": 13595,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "riskModule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5681,
                              "src": "3416:17:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRiskModule_$17857",
                                "typeString": "contract IRiskModule"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRiskModule_$17857",
                                "typeString": "contract IRiskModule"
                              }
                            ],
                            "id": 13593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3408:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13592,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3408:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3408:26:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3394:40:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f207265736f6c76652074686520706f6c696379",
                        "id": 13598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3442:53:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8c6e8f8f1986f173d0b52c2c973e7c4feadfc6927d78aa5a06bfebe82321d431",
                          "typeString": "literal_string \"Only riskModule is authorized to resolve the policy\""
                        },
                        "value": "Only riskModule is authorized to resolve the policy"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8c6e8f8f1986f173d0b52c2c973e7c4feadfc6927d78aa5a06bfebe82321d431",
                          "typeString": "literal_string \"Only riskModule is authorized to resolve the policy\""
                        }
                      ],
                      "id": 13589,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3379:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3379:122:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13600,
                  "nodeType": "ExpressionStatement",
                  "src": "3379:122:24"
                },
                {
                  "expression": {
                    "id": 13605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "3507:26:24",
                    "subExpression": {
                      "baseExpression": {
                        "id": 13601,
                        "name": "policies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13288,
                        "src": "3514:8:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_PolicyData_$5686_storage_$",
                          "typeString": "mapping(uint256 => struct Policy.PolicyData storage ref)"
                        }
                      },
                      "id": 13604,
                      "indexExpression": {
                        "expression": {
                          "id": 13602,
                          "name": "policy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13564,
                          "src": "3523:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                            "typeString": "struct Policy.PolicyData memory"
                          }
                        },
                        "id": 13603,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5662,
                        "src": "3523:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3514:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PolicyData_$5686_storage",
                        "typeString": "struct Policy.PolicyData storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13606,
                  "nodeType": "ExpressionStatement",
                  "src": "3507:26:24"
                },
                {
                  "expression": {
                    "id": 13611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "3539:30:24",
                    "subExpression": {
                      "baseExpression": {
                        "id": 13607,
                        "name": "policyHashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13292,
                        "src": "3546:12:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                          "typeString": "mapping(uint256 => bytes32)"
                        }
                      },
                      "id": 13610,
                      "indexExpression": {
                        "expression": {
                          "id": 13608,
                          "name": "policy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13564,
                          "src": "3559:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                            "typeString": "struct Policy.PolicyData memory"
                          }
                        },
                        "id": 13609,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5662,
                        "src": "3559:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3546:23:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13612,
                  "nodeType": "ExpressionStatement",
                  "src": "3539:30:24"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 13615,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3607:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3607:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 13614,
                          "name": "IRiskModule",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17857,
                          "src": "3595:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IRiskModule_$17857_$",
                            "typeString": "type(contract IRiskModule)"
                          }
                        },
                        "id": 13617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3595:23:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRiskModule_$17857",
                          "typeString": "contract IRiskModule"
                        }
                      },
                      {
                        "expression": {
                          "id": 13618,
                          "name": "policy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13564,
                          "src": "3620:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                            "typeString": "struct Policy.PolicyData memory"
                          }
                        },
                        "id": 13619,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5662,
                        "src": "3620:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 13620,
                        "name": "payout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13566,
                        "src": "3631:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IRiskModule_$17857",
                          "typeString": "contract IRiskModule"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13613,
                      "name": "PolicyResolved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13309,
                      "src": "3580:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IRiskModule_$17857_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IRiskModule,uint256,uint256)"
                      }
                    },
                    "id": 13621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3580:58:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13622,
                  "nodeType": "EmitStatement",
                  "src": "3575:63:24"
                }
              ]
            },
            "id": 13624,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_resolvePolicy",
            "nameLocation": "3174:14:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13564,
                  "mutability": "mutable",
                  "name": "policy",
                  "nameLocation": "3214:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13624,
                  "src": "3189:31:24",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PolicyData_$5686_memory_ptr",
                    "typeString": "struct Policy.PolicyData"
                  },
                  "typeName": {
                    "id": 13563,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13562,
                      "name": "Policy.PolicyData",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5686,
                      "src": "3189:17:24"
                    },
                    "referencedDeclaration": 5686,
                    "src": "3189:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                      "typeString": "struct Policy.PolicyData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13566,
                  "mutability": "mutable",
                  "name": "payout",
                  "nameLocation": "3230:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13624,
                  "src": "3222:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13565,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3188:49:24"
            },
            "returnParameters": {
              "id": 13568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3247:0:24"
            },
            "scope": 13719,
            "src": "3165:478:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              14622
            ],
            "body": {
              "id": 13634,
              "nodeType": "Block",
              "src": "3701:36:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4e6f7420496d706c656d656e746564",
                        "id": 13631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3714:17:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a15a657eb93d30e6a4d715c83e9470991853f7e57b97f4e4634b26f2428171c",
                          "typeString": "literal_string \"Not Implemented\""
                        },
                        "value": "Not Implemented"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1a15a657eb93d30e6a4d715c83e9470991853f7e57b97f4e4634b26f2428171c",
                          "typeString": "literal_string \"Not Implemented\""
                        }
                      ],
                      "id": 13630,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "3707:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 13632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3707:25:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13633,
                  "nodeType": "ExpressionStatement",
                  "src": "3707:25:24"
                }
              ]
            },
            "functionSelector": "81ced71f",
            "id": 13635,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "receiveGrant",
            "nameLocation": "3656:12:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13628,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3692:8:24"
            },
            "parameters": {
              "id": 13627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13626,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13635,
                  "src": "3669:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3669:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3668:9:24"
            },
            "returnParameters": {
              "id": 13629,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3701:0:24"
            },
            "scope": 13719,
            "src": "3647:90:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14609
            ],
            "body": {
              "id": 13649,
              "nodeType": "Block",
              "src": "3833:41:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13645,
                        "name": "policy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13638,
                        "src": "3854:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                          "typeString": "struct Policy.PolicyData calldata"
                        }
                      },
                      {
                        "id": 13646,
                        "name": "payout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13640,
                        "src": "3862:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                          "typeString": "struct Policy.PolicyData calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13644,
                      "name": "_resolvePolicy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13624,
                      "src": "3839:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PolicyData_$5686_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Policy.PolicyData memory,uint256)"
                      }
                    },
                    "id": 13647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3839:30:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13648,
                  "nodeType": "ExpressionStatement",
                  "src": "3839:30:24"
                }
              ]
            },
            "functionSelector": "9e556b2b",
            "id": 13650,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolvePolicy",
            "nameLocation": "3750:13:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13642,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3824:8:24"
            },
            "parameters": {
              "id": 13641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13638,
                  "mutability": "mutable",
                  "name": "policy",
                  "nameLocation": "3791:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13650,
                  "src": "3764:33:24",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                    "typeString": "struct Policy.PolicyData"
                  },
                  "typeName": {
                    "id": 13637,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13636,
                      "name": "Policy.PolicyData",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5686,
                      "src": "3764:17:24"
                    },
                    "referencedDeclaration": 5686,
                    "src": "3764:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                      "typeString": "struct Policy.PolicyData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13640,
                  "mutability": "mutable",
                  "name": "payout",
                  "nameLocation": "3807:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13650,
                  "src": "3799:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3799:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3763:51:24"
            },
            "returnParameters": {
              "id": 13643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3833:0:24"
            },
            "scope": 13719,
            "src": "3741:133:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14617
            ],
            "body": {
              "id": 13668,
              "nodeType": "Block",
              "src": "3992:73:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 13660,
                        "name": "policy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13653,
                        "src": "4020:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                          "typeString": "struct Policy.PolicyData calldata"
                        }
                      },
                      {
                        "condition": {
                          "id": 13661,
                          "name": "customerWon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13655,
                          "src": "4028:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "hexValue": "30",
                          "id": 13664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4058:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 13665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4028:31:24",
                        "trueExpression": {
                          "expression": {
                            "id": 13662,
                            "name": "policy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13653,
                            "src": "4042:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                              "typeString": "struct Policy.PolicyData calldata"
                            }
                          },
                          "id": 13663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "payout",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5664,
                          "src": "4042:13:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                          "typeString": "struct Policy.PolicyData calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13659,
                      "name": "_resolvePolicy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13624,
                      "src": "4005:14:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PolicyData_$5686_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Policy.PolicyData memory,uint256)"
                      }
                    },
                    "id": 13666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4005:55:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 13658,
                  "id": 13667,
                  "nodeType": "Return",
                  "src": "3998:62:24"
                }
              ]
            },
            "functionSelector": "066dda0e",
            "id": 13669,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolvePolicyFullPayout",
            "nameLocation": "3887:23:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13657,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3981:8:24"
            },
            "parameters": {
              "id": 13656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13653,
                  "mutability": "mutable",
                  "name": "policy",
                  "nameLocation": "3938:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13669,
                  "src": "3911:33:24",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PolicyData_$5686_calldata_ptr",
                    "typeString": "struct Policy.PolicyData"
                  },
                  "typeName": {
                    "id": 13652,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13651,
                      "name": "Policy.PolicyData",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5686,
                      "src": "3911:17:24"
                    },
                    "referencedDeclaration": 5686,
                    "src": "3911:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PolicyData_$5686_storage_ptr",
                      "typeString": "struct Policy.PolicyData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13655,
                  "mutability": "mutable",
                  "name": "customerWon",
                  "nameLocation": "3951:11:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13669,
                  "src": "3946:16:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13654,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3946:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3910:53:24"
            },
            "returnParameters": {
              "id": 13658,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3992:0:24"
            },
            "scope": 13719,
            "src": "3878:187:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14655
            ],
            "body": {
              "id": 13682,
              "nodeType": "Block",
              "src": "4127:44:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4e6f7420496d706c656d656e746564206465706f736974",
                        "id": 13679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4140:25:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4056b1a890a2c3818b7771ad8e47567b7f58fbbd321bfc4356d4990f533b901a",
                          "typeString": "literal_string \"Not Implemented deposit\""
                        },
                        "value": "Not Implemented deposit"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4056b1a890a2c3818b7771ad8e47567b7f58fbbd321bfc4356d4990f533b901a",
                          "typeString": "literal_string \"Not Implemented deposit\""
                        }
                      ],
                      "id": 13678,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "4133:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 13680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4133:33:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13681,
                  "nodeType": "ExpressionStatement",
                  "src": "4133:33:24"
                }
              ]
            },
            "functionSelector": "47e7ef24",
            "id": 13683,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "4078:7:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13676,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4118:8:24"
            },
            "parameters": {
              "id": 13675,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13672,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13683,
                  "src": "4086:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEToken_$16628",
                    "typeString": "contract IEToken"
                  },
                  "typeName": {
                    "id": 13671,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13670,
                      "name": "IEToken",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16628,
                      "src": "4086:7:24"
                    },
                    "referencedDeclaration": 16628,
                    "src": "4086:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13674,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13683,
                  "src": "4095:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4095:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4085:18:24"
            },
            "returnParameters": {
              "id": 13677,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4127:0:24"
            },
            "scope": 13719,
            "src": "4069:102:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14665
            ],
            "body": {
              "id": 13698,
              "nodeType": "Block",
              "src": "4252:45:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "4e6f7420496d706c656d656e746564207769746864726177",
                        "id": 13695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4265:26:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d1c133ca691942c2b9c7b9bbdea503640377a82463f9986cfe69df5983647c2d",
                          "typeString": "literal_string \"Not Implemented withdraw\""
                        },
                        "value": "Not Implemented withdraw"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d1c133ca691942c2b9c7b9bbdea503640377a82463f9986cfe69df5983647c2d",
                          "typeString": "literal_string \"Not Implemented withdraw\""
                        }
                      ],
                      "id": 13694,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "4258:6:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 13696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4258:34:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13697,
                  "nodeType": "ExpressionStatement",
                  "src": "4258:34:24"
                }
              ]
            },
            "functionSelector": "f3fef3a3",
            "id": 13699,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "withdraw",
            "nameLocation": "4184:8:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13690,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4225:8:24"
            },
            "parameters": {
              "id": 13689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13686,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13699,
                  "src": "4193:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEToken_$16628",
                    "typeString": "contract IEToken"
                  },
                  "typeName": {
                    "id": 13685,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13684,
                      "name": "IEToken",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16628,
                      "src": "4193:7:24"
                    },
                    "referencedDeclaration": 16628,
                    "src": "4193:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13688,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13699,
                  "src": "4202:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4202:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4192:18:24"
            },
            "returnParameters": {
              "id": 13693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13692,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13699,
                  "src": "4243:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4243:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4242:9:24"
            },
            "scope": 13719,
            "src": "4175:122:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13708,
              "nodeType": "Block",
              "src": "4355:37:24",
              "statements": [
                {
                  "expression": {
                    "id": 13706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13704,
                      "name": "_totalETokenSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13283,
                      "src": "4361:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13705,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13701,
                      "src": "4382:5:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4361:26:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13707,
                  "nodeType": "ExpressionStatement",
                  "src": "4361:26:24"
                }
              ]
            },
            "functionSelector": "1440912b",
            "id": 13709,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTotalETokenSupply",
            "nameLocation": "4310:20:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13701,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4339:5:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13709,
                  "src": "4331:13:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4331:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4330:15:24"
            },
            "returnParameters": {
              "id": 13703,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4355:0:24"
            },
            "scope": 13719,
            "src": "4301:91:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14670
            ],
            "body": {
              "id": 13717,
              "nodeType": "Block",
              "src": "4466:36:24",
              "statements": [
                {
                  "expression": {
                    "id": 13715,
                    "name": "_totalETokenSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13283,
                    "src": "4479:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13714,
                  "id": 13716,
                  "nodeType": "Return",
                  "src": "4472:25:24"
                }
              ]
            },
            "functionSelector": "b77ddfea",
            "id": 13718,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalETokenSupply",
            "nameLocation": "4405:17:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13711,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4439:8:24"
            },
            "parameters": {
              "id": 13710,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4422:2:24"
            },
            "returnParameters": {
              "id": 13714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13713,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13718,
                  "src": "4457:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13712,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4457:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4456:9:24"
            },
            "scope": 13719,
            "src": "4396:106:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 13900,
        "src": "648:3856:24",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 13721,
              "name": "ForwardProxy",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 12828,
              "src": "4770:12:24"
            },
            "id": 13722,
            "nodeType": "InheritanceSpecifier",
            "src": "4770:12:24"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 13720,
          "nodeType": "StructuredDocumentation",
          "src": "4506:229:24",
          "text": " @title PolicyPoolMockForward\n @dev PolicyPool that forwards fallback calls to another contract. Used to simulate calls to EToken\n      and other contracts that have functions that can be called only from PolicyPool"
        },
        "fullyImplemented": true,
        "id": 13899,
        "linearizedBaseContracts": [
          13899,
          12828,
          19871
        ],
        "name": "PolicyPoolMockForward",
        "nameLocation": "4745:21:24",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "098d3228",
            "id": 13725,
            "mutability": "constant",
            "name": "MAX_INT",
            "nameLocation": "4811:7:24",
            "nodeType": "VariableDeclaration",
            "scope": 13899,
            "src": "4787:104:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 13723,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "4787:7:24",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
              "id": 13724,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "4825:66:24",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                "typeString": "int_const 1157...(70 digits omitted)...9935"
              },
              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13728,
            "mutability": "mutable",
            "name": "_currency",
            "nameLocation": "4920:9:24",
            "nodeType": "VariableDeclaration",
            "scope": 13899,
            "src": "4896:33:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
              "typeString": "contract IERC20Metadata"
            },
            "typeName": {
              "id": 13727,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13726,
                "name": "IERC20Metadata",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 16271,
                "src": "4896:14:24"
              },
              "referencedDeclaration": 16271,
              "src": "4896:14:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                "typeString": "contract IERC20Metadata"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13731,
            "mutability": "mutable",
            "name": "_config",
            "nameLocation": "4960:7:24",
            "nodeType": "VariableDeclaration",
            "scope": 13899,
            "src": "4933:34:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
              "typeString": "contract IPolicyPoolConfig"
            },
            "typeName": {
              "id": 13730,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 13729,
                "name": "IPolicyPoolConfig",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 14792,
                "src": "4933:17:24"
              },
              "referencedDeclaration": 14792,
              "src": "4933:17:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                "typeString": "contract IPolicyPoolConfig"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13758,
              "nodeType": "Block",
              "src": "5096:78:24",
              "statements": [
                {
                  "expression": {
                    "id": 13747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13745,
                      "name": "_currency",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13728,
                      "src": "5102:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                        "typeString": "contract IERC20Metadata"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13746,
                      "name": "currency_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13736,
                      "src": "5114:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                        "typeString": "contract IERC20Metadata"
                      }
                    },
                    "src": "5102:21:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "id": 13748,
                  "nodeType": "ExpressionStatement",
                  "src": "5102:21:24"
                },
                {
                  "expression": {
                    "id": 13751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 13749,
                      "name": "_config",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13731,
                      "src": "5129:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                        "typeString": "contract IPolicyPoolConfig"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13750,
                      "name": "config_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13739,
                      "src": "5139:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                        "typeString": "contract IPolicyPoolConfig"
                      }
                    },
                    "src": "5129:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "id": 13752,
                  "nodeType": "ExpressionStatement",
                  "src": "5129:17:24"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 13753,
                        "name": "_config",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13731,
                        "src": "5152:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                          "typeString": "contract IPolicyPoolConfig"
                        }
                      },
                      "id": 13755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connect",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14750,
                      "src": "5152:15:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 13756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5152:17:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13757,
                  "nodeType": "ExpressionStatement",
                  "src": "5152:17:24"
                }
              ]
            },
            "id": 13759,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 13742,
                    "name": "forwardTo",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13733,
                    "src": "5085:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 13743,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 13741,
                  "name": "ForwardProxy",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 12828,
                  "src": "5072:12:24"
                },
                "nodeType": "ModifierInvocation",
                "src": "5072:23:24"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13733,
                  "mutability": "mutable",
                  "name": "forwardTo",
                  "nameLocation": "4997:9:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13759,
                  "src": "4989:17:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13732,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4989:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13736,
                  "mutability": "mutable",
                  "name": "currency_",
                  "nameLocation": "5027:9:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13759,
                  "src": "5012:24:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 13735,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13734,
                      "name": "IERC20Metadata",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16271,
                      "src": "5012:14:24"
                    },
                    "referencedDeclaration": 16271,
                    "src": "5012:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13739,
                  "mutability": "mutable",
                  "name": "config_",
                  "nameLocation": "5060:7:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13759,
                  "src": "5042:25:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                    "typeString": "contract IPolicyPoolConfig"
                  },
                  "typeName": {
                    "id": 13738,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13737,
                      "name": "IPolicyPoolConfig",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 14792,
                      "src": "5042:17:24"
                    },
                    "referencedDeclaration": 14792,
                    "src": "5042:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4983:88:24"
            },
            "returnParameters": {
              "id": 13744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5096:0:24"
            },
            "scope": 13899,
            "src": "4972:202:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13767,
              "nodeType": "Block",
              "src": "5237:27:24",
              "statements": [
                {
                  "expression": {
                    "id": 13765,
                    "name": "_currency",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13728,
                    "src": "5250:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "functionReturnParameters": 13764,
                  "id": 13766,
                  "nodeType": "Return",
                  "src": "5243:16:24"
                }
              ]
            },
            "functionSelector": "e5a6b10f",
            "id": 13768,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currency",
            "nameLocation": "5187:8:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13760,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5195:2:24"
            },
            "returnParameters": {
              "id": 13764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13763,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13768,
                  "src": "5221:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 13762,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13761,
                      "name": "IERC20Metadata",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16271,
                      "src": "5221:14:24"
                    },
                    "referencedDeclaration": 16271,
                    "src": "5221:14:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5220:16:24"
            },
            "scope": 13899,
            "src": "5178:86:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13776,
              "nodeType": "Block",
              "src": "5328:25:24",
              "statements": [
                {
                  "expression": {
                    "id": 13774,
                    "name": "_config",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13731,
                    "src": "5341:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "functionReturnParameters": 13773,
                  "id": 13775,
                  "nodeType": "Return",
                  "src": "5334:14:24"
                }
              ]
            },
            "functionSelector": "79502c55",
            "id": 13777,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "config",
            "nameLocation": "5277:6:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5283:2:24"
            },
            "returnParameters": {
              "id": 13773,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13772,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13777,
                  "src": "5309:17:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                    "typeString": "contract IPolicyPoolConfig"
                  },
                  "typeName": {
                    "id": 13771,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13770,
                      "name": "IPolicyPoolConfig",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 14792,
                      "src": "5309:17:24"
                    },
                    "referencedDeclaration": 14792,
                    "src": "5309:17:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                      "typeString": "contract IPolicyPoolConfig"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5308:19:24"
            },
            "scope": 13899,
            "src": "5268:85:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13851,
              "nodeType": "Block",
              "src": "5422:459:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 13790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 13784,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "5436:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 13785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "5436:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 13788,
                              "name": "_config",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13731,
                              "src": "5458:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            ],
                            "id": 13787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5450:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 13786,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5450:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 13789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5450:16:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5436:30:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e206368616e67652061737365744d616e61676572",
                        "id": 13791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5468:51:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_288bc4daf56fc7b9b3a7d6ee529886d2cac285db54cbd4d7440933a7c771b79e",
                          "typeString": "literal_string \"Only the PolicyPoolConfig can change assetManager\""
                        },
                        "value": "Only the PolicyPoolConfig can change assetManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_288bc4daf56fc7b9b3a7d6ee529886d2cac285db54cbd4d7440933a7c771b79e",
                          "typeString": "literal_string \"Only the PolicyPoolConfig can change assetManager\""
                        }
                      ],
                      "id": 13783,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5428:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5428:92:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13793,
                  "nodeType": "ExpressionStatement",
                  "src": "5428:92:24"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 13796,
                              "name": "_config",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13731,
                              "src": "5538:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                "typeString": "contract IPolicyPoolConfig"
                              }
                            },
                            "id": 13797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "assetManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14756,
                            "src": "5538:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                              "typeString": "function () view external returns (contract IAssetManager)"
                            }
                          },
                          "id": 13798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5538:22:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        ],
                        "id": 13795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5530:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5530:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5530:31:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5573:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 13801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5565:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5565:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5565:10:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5530:45:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13825,
                  "nodeType": "IfStatement",
                  "src": "5526:225:24",
                  "trueBody": {
                    "id": 13824,
                    "nodeType": "Block",
                    "src": "5577:174:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 13805,
                                  "name": "_config",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13731,
                                  "src": "5585:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                    "typeString": "contract IPolicyPoolConfig"
                                  }
                                },
                                "id": 13807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "assetManager",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14756,
                                "src": "5585:20:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                                  "typeString": "function () view external returns (contract IAssetManager)"
                                }
                              },
                              "id": 13808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5585:22:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                "typeString": "contract IAssetManager"
                              }
                            },
                            "id": 13809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deinvestAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16508,
                            "src": "5585:34:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 13810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5585:36:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13811,
                        "nodeType": "ExpressionStatement",
                        "src": "5585:36:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 13817,
                                      "name": "_config",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13731,
                                      "src": "5678:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPolicyPoolConfig_$14792",
                                        "typeString": "contract IPolicyPoolConfig"
                                      }
                                    },
                                    "id": 13818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "assetManager",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14756,
                                    "src": "5678:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAssetManager_$16509_$",
                                      "typeString": "function () view external returns (contract IAssetManager)"
                                    }
                                  },
                                  "id": 13819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5678:22:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                ],
                                "id": 13816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5670:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13815,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5670:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5670:31:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 13821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5703:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 13812,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13728,
                              "src": "5652:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                                "typeString": "contract IERC20Metadata"
                              }
                            },
                            "id": 13814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16675,
                            "src": "5652:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 13822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5652:53:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13823,
                        "nodeType": "ExpressionStatement",
                        "src": "5652:53:24"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 13828,
                          "name": "newAssetManager",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13780,
                          "src": "5768:15:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IAssetManager_$16509",
                            "typeString": "contract IAssetManager"
                          }
                        ],
                        "id": 13827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5760:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5760:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5760:24:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 13832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5796:1:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 13831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5788:7:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 13830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5788:7:24",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 13833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5788:10:24",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5760:38:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13850,
                  "nodeType": "IfStatement",
                  "src": "5756:121:24",
                  "trueBody": {
                    "id": 13849,
                    "nodeType": "Block",
                    "src": "5800:77:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 13840,
                                  "name": "newAssetManager",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13780,
                                  "src": "5834:15:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                                    "typeString": "contract IAssetManager"
                                  }
                                ],
                                "id": 13839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5826:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 13838,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5826:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5826:24:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5857:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 13843,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5857:7:24",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 13842,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "5852:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5852:13:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 13846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "5852:17:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 13835,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13728,
                              "src": "5808:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                                "typeString": "contract IERC20Metadata"
                              }
                            },
                            "id": 13837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16675,
                            "src": "5808:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 13847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5808:62:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13848,
                        "nodeType": "ExpressionStatement",
                        "src": "5808:62:24"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "43060237",
            "id": 13852,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAssetManager",
            "nameLocation": "5366:15:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13780,
                  "mutability": "mutable",
                  "name": "newAssetManager",
                  "nameLocation": "5396:15:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13852,
                  "src": "5382:29:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetManager_$16509",
                    "typeString": "contract IAssetManager"
                  },
                  "typeName": {
                    "id": 13779,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13778,
                      "name": "IAssetManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16509,
                      "src": "5382:13:24"
                    },
                    "referencedDeclaration": 16509,
                    "src": "5382:13:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetManager_$16509",
                      "typeString": "contract IAssetManager"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5381:31:24"
            },
            "returnParameters": {
              "id": 13782,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5422:0:24"
            },
            "scope": 13899,
            "src": "5357:524:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13859,
              "nodeType": "Block",
              "src": "5995:2:24",
              "statements": []
            },
            "functionSelector": "ab600169",
            "id": 13860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "assetEarnings",
            "nameLocation": "5941:13:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13854,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "5963:6:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13860,
                  "src": "5955:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5955:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13856,
                  "mutability": "mutable",
                  "name": "positive",
                  "nameLocation": "5976:8:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 13860,
                  "src": "5971:13:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13855,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5971:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5954:31:24"
            },
            "returnParameters": {
              "id": 13858,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5995:0:24"
            },
            "scope": 13899,
            "src": "5932:65:24",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13873,
              "nodeType": "Block",
              "src": "6058:52:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 13869,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "6099:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PolicyPoolMockForward_$13899",
                              "typeString": "contract PolicyPoolMockForward"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PolicyPoolMockForward_$13899",
                              "typeString": "contract PolicyPoolMockForward"
                            }
                          ],
                          "id": 13868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6091:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13867,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6091:7:24",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6091:13:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 13865,
                        "name": "_currency",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13728,
                        "src": "6071:9:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Metadata_$16271",
                          "typeString": "contract IERC20Metadata"
                        }
                      },
                      "id": 13866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16645,
                      "src": "6071:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 13871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6071:34:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13864,
                  "id": 13872,
                  "nodeType": "Return",
                  "src": "6064:41:24"
                }
              ]
            },
            "functionSelector": "65e29c7e",
            "id": 13874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInvestable",
            "nameLocation": "6010:13:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13861,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6023:2:24"
            },
            "returnParameters": {
              "id": 13864,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13863,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13874,
                  "src": "6049:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13862,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6049:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6048:9:24"
            },
            "scope": 13899,
            "src": "6001:109:24",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13881,
              "nodeType": "Block",
              "src": "6172:19:24",
              "statements": [
                {
                  "expression": {
                    "hexValue": "30",
                    "id": 13879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6185:1:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 13878,
                  "id": 13880,
                  "nodeType": "Return",
                  "src": "6178:8:24"
                }
              ]
            },
            "functionSelector": "dea167d5",
            "id": 13882,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getETokenCount",
            "nameLocation": "6123:14:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6137:2:24"
            },
            "returnParameters": {
              "id": 13878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13877,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13882,
                  "src": "6163:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6163:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6162:9:24"
            },
            "scope": 13899,
            "src": "6114:77:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13897,
              "nodeType": "Block",
              "src": "6257:37:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 13893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6286:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 13892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6278:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13891,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6278:7:24",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 13894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6278:10:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13890,
                      "name": "IEToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16628,
                      "src": "6270:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEToken_$16628_$",
                        "typeString": "type(contract IEToken)"
                      }
                    },
                    "id": 13895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6270:19:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "functionReturnParameters": 13889,
                  "id": 13896,
                  "nodeType": "Return",
                  "src": "6263:26:24"
                }
              ]
            },
            "functionSelector": "b0ec4bcf",
            "id": 13898,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getETokenAt",
            "nameLocation": "6204:11:24",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13884,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13898,
                  "src": "6216:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13883,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6216:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6215:9:24"
            },
            "returnParameters": {
              "id": 13889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13888,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13898,
                  "src": "6248:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEToken_$16628",
                    "typeString": "contract IEToken"
                  },
                  "typeName": {
                    "id": 13887,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 13886,
                      "name": "IEToken",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16628,
                      "src": "6248:7:24"
                    },
                    "referencedDeclaration": 16628,
                    "src": "6248:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEToken_$16628",
                      "typeString": "contract IEToken"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6247:9:24"
            },
            "scope": 13899,
            "src": "6195:99:24",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 13900,
        "src": "4736:1560:24",
        "usedErrors": []
      }
    ],
    "src": "39:6258:24"
  },
  "bytecode": "60806040523480156200001157600080fd5b5060405162000fa138038062000fa18339810160408190526200003491620001f7565b600080546001600160a01b038085166001600160a01b0319928316178355600180549185169190921681179091556040805163948cb71960e01b81529051919263948cb7199260048084019382900301818387803b1580156200009657600080fd5b505af1158015620000ab573d6000803e3d6000fd5b5050600154604080516394217ad160e01b81529051600094506001600160a01b0390921692506394217ad1916004808301926020929190829003018186803b158015620000f757600080fd5b505afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001329190620001d0565b6001600160a01b031614620001b35760405162461bcd60e51b815260206004820152603a60248201527f41737365744d616e616765722063616e277420626520736574206265666f726560448201527f20506f6c696379506f6f6c20696e697469616c697a6174696f6e000000000000606482015260840160405180910390fd5b5050701d6329f1c35ca4bfabb9f56100000000006002556200024f565b600060208284031215620001e357600080fd5b8151620001f08162000236565b9392505050565b600080604083850312156200020b57600080fd5b8251620002188162000236565b60208401519092506200022b8162000236565b809150509250929050565b6001600160a01b03811681146200024c57600080fd5b50565b610d42806200025f6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806381ced71f116100a2578063b0ec4bcf11610071578063b0ec4bcf146101f4578063b77ddfea14610208578063dea167d51461018d578063e5a6b10f14610210578063f3fef3a31461022157600080fd5b806381ced71f146101b95780639e556b2b146101cc578063ab600169146101df578063af02808a146101ed57600080fd5b806343060237116100de578063430602371461016757806347e7ef241461017a57806365e29c7e1461018d57806379502c551461019457600080fd5b8063066dda0e14610110578063098d3228146101255780631440912b1461014157806319704a3a14610154575b600080fd5b61012361011e366004610ac5565b610234565b005b61012e60001981565b6040519081526020015b60405180910390f35b61012361014f366004610ba7565b600255565b61012e610162366004610b49565b610260565b610123610175366004610a5f565b6102f0565b610123610188366004610a99565b610671565b600061012e565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610138565b6101236101c7366004610ba7565b6106b9565b6101236101da366004610aff565b6106f3565b6101236101c7366004610bc0565b60006101a1565b6101a1610202366004610ba7565b50600090565b60025461012e565b6000546001600160a01b03166101a1565b61012e61022f366004610a99565b61070b565b61025c61024636849003840184610b2c565b82610252576000610756565b8360200135610756565b5050565b6000816bffffffffffffffffffffffff1660608561012001516001600160a01b0316901b61028e9190610cc3565b84526102998461091e565b845160009081526004602052604090819020919091555133907ff8da20dc84e4c9850943fcd1a0587142b2bac3fef70840ccee41f5edd22bc477906102df908790610be5565b60405180910390a250509051919050565b6001546001600160a01b031633146103695760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e20636860448201527030b733b29030b9b9b2ba26b0b730b3b2b960791b60648201526084015b60405180910390fd5b600154604080516394217ad160e01b815290516000926001600160a01b0316916394217ad1916004808301926020929190829003018186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e69190610a7c565b6001600160a01b0316146105d857600160009054906101000a90046001600160a01b03166001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a9190610a7c565b6001600160a01b031663cec16f3f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b5050600054600154604080516394217ad160e01b815290516001600160a01b03938416955063095ea7b3945091909216916394217ad1916004808301926020929190829003018186803b15801561051e57600080fd5b505afa158015610532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105569190610a7c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401602060405180830381600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d69190610a3b565b505b6001600160a01b0381161561066e5760005460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025c9190610a3b565b50565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f7369740000000000000000006044820152606401610360565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd08125b5c1b195b595b9d1959608a1b6044820152606401610360565b61025c61070536849003840184610b2c565b82610756565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e74656420776974686472617700000000000000006044820152600090606401610360565b81516107975760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610360565b81516000908152600460205260409020546107b18361091e565b146107f35760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b6044820152606401610360565b8161012001516001600160a01b0316336001600160a01b0316146108755760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b6064820152608401610360565b815160009081526003602081815260408084208481556001810185905560028101859055928301849055600480840185905560058401859055600684018590556007840185905560088401859055600990930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b6000816040516020016109319190610be5565b604051602081830303815290604052805190602001209050919050565b803561095981610ce9565b919050565b6000610180828403121561097157600080fd5b50919050565b6000610180828403121561098a57600080fd5b610992610c8b565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206109f881840161094e565b90820152610140610a0a838201610a26565b90820152610160610a1c838201610a26565b9082015292915050565b803564ffffffffff8116811461095957600080fd5b600060208284031215610a4d57600080fd5b8151610a5881610cfe565b9392505050565b600060208284031215610a7157600080fd5b8135610a5881610ce9565b600060208284031215610a8e57600080fd5b8151610a5881610ce9565b60008060408385031215610aac57600080fd5b8235610ab781610ce9565b946020939093013593505050565b6000806101a08385031215610ad957600080fd5b610ae3848461095e565b9150610180830135610af481610cfe565b809150509250929050565b6000806101a08385031215610b1357600080fd5b610b1d848461095e565b94610180939093013593505050565b60006101808284031215610b3f57600080fd5b610a588383610977565b60008060006101c08486031215610b5f57600080fd5b610b698585610977565b9250610180840135610b7a81610ce9565b91506101a08401356bffffffffffffffffffffffff81168114610b9c57600080fd5b809150509250925092565b600060208284031215610bb957600080fd5b5035919050565b60008060408385031215610bd357600080fd5b823591506020830135610af481610cfe565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151610c5f828501826001600160a01b03169052565b50506101408381015164ffffffffff908116918401919091526101609384015116929091019190915290565b604051610180810167ffffffffffffffff81118282101715610cbd57634e487b7160e01b600052604160045260246000fd5b60405290565b60008219821115610ce457634e487b7160e01b600052601160045260246000fd5b500190565b6001600160a01b038116811461066e57600080fd5b801515811461066e57600080fdfea2646970667358221220134aa1050ab082e50c87e318c35b7964d9b581285dce7c03a461b3427d7ef35964736f6c63430008060033",
  "bytecodeSha1": "a67e3d851e888d5041991e2d917bedb7165e37bc",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "PolicyPoolMock",
  "coverageMap": {
    "branches": {
      "14": {},
      "24": {
        "PolicyPoolMock._resolvePolicy": {
          "28": [
            3310,
            3350,
            true
          ],
          "29": [
            3394,
            3434,
            true
          ]
        },
        "PolicyPoolMock.resolvePolicyFullPayout": {
          "24": [
            4028,
            4039,
            true
          ]
        },
        "PolicyPoolMock.setAssetManager": {
          "25": [
            1965,
            1995,
            true
          ],
          "26": [
            2059,
            2104,
            false
          ],
          "27": [
            2289,
            2327,
            false
          ]
        }
      },
      "31": {},
      "32": {},
      "33": {},
      "34": {},
      "35": {},
      "37": {},
      "39": {},
      "40": {},
      "7": {},
      "98": {}
    },
    "statements": {
      "14": {},
      "24": {
        "PolicyPoolMock._resolvePolicy": {
          "17": [
            3253,
            3296
          ],
          "18": [
            3302,
            3373
          ],
          "19": [
            3379,
            3501
          ],
          "20": [
            3507,
            3533
          ],
          "21": [
            3539,
            3569
          ],
          "22": [
            3575,
            3638
          ]
        },
        "PolicyPoolMock.config": {
          "1": [
            1760,
            1774
          ]
        },
        "PolicyPoolMock.currency": {
          "3": [
            1660,
            1676
          ]
        },
        "PolicyPoolMock.deposit": {
          "13": [
            4133,
            4166
          ]
        },
        "PolicyPoolMock.newPolicy": {
          "5": [
            2959,
            3036
          ],
          "6": [
            3042,
            3081
          ],
          "7": [
            3087,
            3134
          ],
          "8": [
            3140,
            3156
          ]
        },
        "PolicyPoolMock.receiveGrant": {
          "14": [
            3707,
            3732
          ]
        },
        "PolicyPoolMock.resolvePolicy": {
          "15": [
            3839,
            3869
          ]
        },
        "PolicyPoolMock.resolvePolicyFullPayout": {
          "4": [
            3998,
            4060
          ]
        },
        "PolicyPoolMock.setAssetManager": {
          "9": [
            1957,
            2049
          ],
          "10": [
            2114,
            2150
          ],
          "11": [
            2181,
            2234
          ],
          "12": [
            2337,
            2399
          ]
        },
        "PolicyPoolMock.setTotalETokenSupply": {
          "0": [
            4361,
            4387
          ]
        },
        "PolicyPoolMock.totalETokenSupply": {
          "2": [
            4472,
            4497
          ]
        },
        "PolicyPoolMock.withdraw": {
          "16": [
            4258,
            4292
          ]
        }
      },
      "31": {},
      "32": {},
      "33": {},
      "34": {},
      "35": {},
      "37": {},
      "39": {},
      "40": {},
      "7": {
        "Policy.hash": {
          "23": [
            3629,
            3665
          ]
        }
      },
      "98": {}
    }
  },
  "dependencies": [
    "IAssetManager",
    "IERC20Metadata",
    "IEToken",
    "IExchange",
    "IInsolvencyHook",
    "ILPWhitelist",
    "IPolicyPool",
    "IPolicyPoolConfig",
    "IPriceOracle",
    "IRiskModule",
    "Policy",
    "WadRayMath"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b506004361061010b5760003560e01c806381ced71f116100a2578063b0ec4bcf11610071578063b0ec4bcf146101f4578063b77ddfea14610208578063dea167d51461018d578063e5a6b10f14610210578063f3fef3a31461022157600080fd5b806381ced71f146101b95780639e556b2b146101cc578063ab600169146101df578063af02808a146101ed57600080fd5b806343060237116100de578063430602371461016757806347e7ef241461017a57806365e29c7e1461018d57806379502c551461019457600080fd5b8063066dda0e14610110578063098d3228146101255780631440912b1461014157806319704a3a14610154575b600080fd5b61012361011e366004610ac5565b610234565b005b61012e60001981565b6040519081526020015b60405180910390f35b61012361014f366004610ba7565b600255565b61012e610162366004610b49565b610260565b610123610175366004610a5f565b6102f0565b610123610188366004610a99565b610671565b600061012e565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610138565b6101236101c7366004610ba7565b6106b9565b6101236101da366004610aff565b6106f3565b6101236101c7366004610bc0565b60006101a1565b6101a1610202366004610ba7565b50600090565b60025461012e565b6000546001600160a01b03166101a1565b61012e61022f366004610a99565b61070b565b61025c61024636849003840184610b2c565b82610252576000610756565b8360200135610756565b5050565b6000816bffffffffffffffffffffffff1660608561012001516001600160a01b0316901b61028e9190610cc3565b84526102998461091e565b845160009081526004602052604090819020919091555133907ff8da20dc84e4c9850943fcd1a0587142b2bac3fef70840ccee41f5edd22bc477906102df908790610be5565b60405180910390a250509051919050565b6001546001600160a01b031633146103695760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e20636860448201527030b733b29030b9b9b2ba26b0b730b3b2b960791b60648201526084015b60405180910390fd5b600154604080516394217ad160e01b815290516000926001600160a01b0316916394217ad1916004808301926020929190829003018186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e69190610a7c565b6001600160a01b0316146105d857600160009054906101000a90046001600160a01b03166001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a9190610a7c565b6001600160a01b031663cec16f3f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104b457600080fd5b505af11580156104c8573d6000803e3d6000fd5b5050600054600154604080516394217ad160e01b815290516001600160a01b03938416955063095ea7b3945091909216916394217ad1916004808301926020929190829003018186803b15801561051e57600080fd5b505afa158015610532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105569190610a7c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401602060405180830381600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d69190610a3b565b505b6001600160a01b0381161561066e5760005460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b390604401602060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025c9190610a3b565b50565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f7369740000000000000000006044820152606401610360565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd08125b5c1b195b595b9d1959608a1b6044820152606401610360565b61025c61070536849003840184610b2c565b82610756565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e74656420776974686472617700000000000000006044820152600090606401610360565b81516107975760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610360565b81516000908152600460205260409020546107b18361091e565b146107f35760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b6044820152606401610360565b8161012001516001600160a01b0316336001600160a01b0316146108755760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b6064820152608401610360565b815160009081526003602081815260408084208481556001810185905560028101859055928301849055600480840185905560058401859055600684018590556007840185905560088401859055600990930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b6000816040516020016109319190610be5565b604051602081830303815290604052805190602001209050919050565b803561095981610ce9565b919050565b6000610180828403121561097157600080fd5b50919050565b6000610180828403121561098a57600080fd5b610992610c8b565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206109f881840161094e565b90820152610140610a0a838201610a26565b90820152610160610a1c838201610a26565b9082015292915050565b803564ffffffffff8116811461095957600080fd5b600060208284031215610a4d57600080fd5b8151610a5881610cfe565b9392505050565b600060208284031215610a7157600080fd5b8135610a5881610ce9565b600060208284031215610a8e57600080fd5b8151610a5881610ce9565b60008060408385031215610aac57600080fd5b8235610ab781610ce9565b946020939093013593505050565b6000806101a08385031215610ad957600080fd5b610ae3848461095e565b9150610180830135610af481610cfe565b809150509250929050565b6000806101a08385031215610b1357600080fd5b610b1d848461095e565b94610180939093013593505050565b60006101808284031215610b3f57600080fd5b610a588383610977565b60008060006101c08486031215610b5f57600080fd5b610b698585610977565b9250610180840135610b7a81610ce9565b91506101a08401356bffffffffffffffffffffffff81168114610b9c57600080fd5b809150509250925092565b600060208284031215610bb957600080fd5b5035919050565b60008060408385031215610bd357600080fd5b823591506020830135610af481610cfe565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151610c5f828501826001600160a01b03169052565b50506101408381015164ffffffffff908116918401919091526101609384015116929091019190915290565b604051610180810167ffffffffffffffff81118282101715610cbd57634e487b7160e01b600052604160045260246000fd5b60405290565b60008219821115610ce457634e487b7160e01b600052601160045260246000fd5b500190565b6001600160a01b038116811461066e57600080fd5b801515811461066e57600080fdfea2646970667358221220134aa1050ab082e50c87e318c35b7964d9b581285dce7c03a461b3427d7ef35964736f6c63430008060033",
  "deployedSourceMap": "648:3856:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:187;;;;;;:::i;:::-;;:::i;:::-;;730:104;;-1:-1:-1;;730:104:24;;;;;10325:25:114;;;10313:2;10298:18;730:104:24;;;;;;;;4301:91;;;;;;:::i;:::-;4361:18;:26;4301:91;2806:355;;;;;;:::i;:::-;;:::i;1877:533::-;;;;;;:::i;:::-;;:::i;4069:102::-;;;;;;:::i;:::-;;:::i;2414:85::-;2471:7;2414:85;;1685:94;1767:7;;-1:-1:-1;;;;;1767:7:24;1685:94;;;-1:-1:-1;;;;;5094:32:114;;;5076:51;;5064:2;5049:18;1685:94:24;5031:102:114;3647:90:24;;;;;;:::i;:::-;;:::i;3741:133::-;;;;;;:::i;:::-;;:::i;2705:97::-;;;;;;:::i;1783:90::-;2471:7;1783:90;2414:85;2593:108;;;;;;:::i;:::-;-1:-1:-1;2655:7:24;;2593:108;4396:106;4479:18;;4396:106;;1586:95;1638:14;1667:9;-1:-1:-1;;;;;1667:9:24;1586:95;;4175:122;;;;;;:::i;:::-;;:::i;3878:187::-;4005:55;;;;;;;;4020:6;4005:55;:::i;:::-;4028:11;:31;;4058:1;4005:14;:55::i;4028:31::-;4042:6;:13;;;4005:14;:55::i;:::-;3878:187;;:::o;2806:355::-;2944:7;3026:10;2971:65;;3020:2;2996:6;:17;;;-1:-1:-1;;;;;2972:44:24;:50;;2971:65;;;;:::i;:::-;2959:77;;3068:13;2959:6;3068:11;:13::i;:::-;3055:9;;3042:23;;;;:12;:23;;;;;;;:39;;;;3092:42;3114:10;;3092:42;;;;3055:6;;3092:42;:::i;:::-;;;;;;;;-1:-1:-1;;3147:9:24;;;2806:355;-1:-1:-1;2806:355:24:o;1877:533::-;1987:7;;-1:-1:-1;;;;;1987:7:24;1965:10;:30;1957:92;;;;-1:-1:-1;;;1957:92:24;;6942:2:114;1957:92:24;;;6924:21:114;6981:2;6961:18;;;6954:30;7020:34;7000:18;;;6993:62;-1:-1:-1;;;7071:18:114;;;7064:47;7128:19;;1957:92:24;;;;;;;;;2067:7;;:22;;;-1:-1:-1;;;2067:22:24;;;;2102:1;;-1:-1:-1;;;;;2067:7:24;;:20;;:22;;;;;;;;;;;;;;:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2059:45:24;;2055:225;;2114:7;;;;;;;;;-1:-1:-1;;;;;2114:7:24;-1:-1:-1;;;;;2114:20:24;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2114:34:24;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2181:9:24;;;2207:7;:22;;;-1:-1:-1;;;2207:22:24;;;;-1:-1:-1;;;;;2181:9:24;;;;-1:-1:-1;2181:17:24;;-1:-1:-1;2207:7:24;;;;;:20;;:22;;;;;;;;;;;;;;:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2181:53;;-1:-1:-1;;;;;;2181:53:24;;;;;;;-1:-1:-1;;;;;5338:32:114;;;2181:53:24;;;5320:51:114;2232:1:24;5387:18:114;;;5380:34;5293:18;;2181:53:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2055:225;-1:-1:-1;;;;;2289:38:24;;;2285:121;;2337:9;;:62;;-1:-1:-1;;;2337:62:24;;-1:-1:-1;;;;;5338:32:114;;;2337:62:24;;;5320:51:114;-1:-1:-1;;5387:18:114;;;5380:34;2337:9:24;;;;:17;;5293:18:114;;2337:62:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2285:121::-;1877:533;:::o;4069:102::-;4133:33;;-1:-1:-1;;;4133:33:24;;7360:2:114;4133:33:24;;;7342:21:114;7399:2;7379:18;;;7372:30;7438:25;7418:18;;;7411:53;7481:18;;4133:33:24;7332:173:114;3647:90:24;3707:25;;-1:-1:-1;;;3707:25:24;;6598:2:114;3707:25:24;;;6580:21:114;6637:2;6617:18;;;6610:30;-1:-1:-1;;;6656:18:114;;;6649:45;6711:18;;3707:25:24;6570:165:114;3741:133:24;3839:30;;;;;;;;3854:6;3839:30;:::i;:::-;3862:6;3839:14;:30::i;4175:122::-;4258:34;;-1:-1:-1;;;4258:34:24;;8477:2:114;4258:34:24;;;8459:21:114;8516:2;8496:18;;;8489:30;8555:26;8535:18;;;8528:54;4243:7:24;;8599:18:114;;4258:34:24;8449:174:114;3165:478:24;3261:9;;3253:43;;;;-1:-1:-1;;;3253:43:24;;7712:2:114;3253:43:24;;;7694:21:114;7751:2;7731:18;;;7724:30;-1:-1:-1;;;7770:18:114;;;7763:46;7826:18;;3253:43:24;7684:166:114;3253:43:24;3340:9;;3327:23;;;;:12;:23;;;;;;3310:13;3340:6;3310:11;:13::i;:::-;:40;3302:71;;;;-1:-1:-1;;;3302:71:24;;8830:2:114;3302:71:24;;;8812:21:114;8869:2;8849:18;;;8842:30;-1:-1:-1;;;8888:18:114;;;8881:48;8946:18;;3302:71:24;8802:168:114;3302:71:24;3416:6;:17;;;-1:-1:-1;;;;;3394:40:24;:10;-1:-1:-1;;;;;3394:40:24;;3379:122;;;;-1:-1:-1;;;3379:122:24;;8057:2:114;3379:122:24;;;8039:21:114;8096:2;8076:18;;;8069:30;8135:34;8115:18;;;8108:62;-1:-1:-1;;;8186:18:114;;;8179:49;8245:19;;3379:122:24;8029:241:114;3379:122:24;3523:9;;3514:19;;;;:8;:19;;;;;;;;3507:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3507:26:24;;;3559:9;;3546:23;;;;;;;;3539:30;;;;3620:9;;3580:58;;10325:25:114;;;3620:9:24;;3607:10;;3580:58;;10298:18:114;3580:58:24;;;;;;;3165:478;;:::o;3551:119:7:-;3614:7;3657:6;3646:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;3636:29;;;;;;3629:36;;3551:119;;;:::o;14:147:114:-;95:20;;124:31;95:20;124:31;:::i;:::-;76:85;;;:::o;166:159::-;229:5;274:3;265:6;260:3;256:16;252:26;249:2;;;291:1;288;281:12;249:2;-1:-1:-1;313:6:114;239:86;-1:-1:-1;239:86:114:o;330:1057::-;387:5;435:6;423:9;418:3;414:19;410:32;407:2;;;455:1;452;445:12;407:2;477:17;;:::i;:::-;468:26;;530:9;517:23;510:5;503:38;601:2;590:9;586:18;573:32;568:2;561:5;557:14;550:56;666:2;655:9;651:18;638:32;633:2;626:5;622:14;615:56;731:2;720:9;716:18;703:32;698:2;691:5;687:14;680:56;797:3;786:9;782:19;769:33;763:3;756:5;752:15;745:58;864:3;853:9;849:19;836:33;830:3;823:5;819:15;812:58;931:3;920:9;916:19;903:33;897:3;890:5;886:15;879:58;998:3;987:9;983:19;970:33;964:3;957:5;953:15;946:58;1023:3;1086:2;1075:9;1071:18;1058:32;1053:2;1046:5;1042:14;1035:56;;1110:3;1145:51;1192:2;1181:9;1177:18;1145:51;:::i;:::-;1129:14;;;1122:75;1216:3;1251:37;1269:18;;;1251:37;:::i;:::-;1235:14;;;1228:61;1308:3;1343:37;1361:18;;;1343:37;:::i;:::-;1327:14;;;1320:61;1331:5;397:990;-1:-1:-1;;397:990:114:o;1392:165::-;1459:20;;1519:12;1508:24;;1498:35;;1488:2;;1547:1;1544;1537:12;1562:245;1629:6;1682:2;1670:9;1661:7;1657:23;1653:32;1650:2;;;1698:1;1695;1688:12;1650:2;1730:9;1724:16;1749:28;1771:5;1749:28;:::i;:::-;1796:5;1640:167;-1:-1:-1;;;1640:167:114:o;1812:270::-;1894:6;1947:2;1935:9;1926:7;1922:23;1918:32;1915:2;;;1963:1;1960;1953:12;1915:2;2002:9;1989:23;2021:31;2046:5;2021:31;:::i;2087:274::-;2180:6;2233:2;2221:9;2212:7;2208:23;2204:32;2201:2;;;2249:1;2246;2239:12;2201:2;2281:9;2275:16;2300:31;2325:5;2300:31;:::i;2366:332::-;2451:6;2459;2512:2;2500:9;2491:7;2487:23;2483:32;2480:2;;;2528:1;2525;2518:12;2480:2;2567:9;2554:23;2586:31;2611:5;2586:31;:::i;:::-;2636:5;2688:2;2673:18;;;;2660:32;;-1:-1:-1;;;2470:228:114:o;2703:375::-;2798:6;2806;2859:3;2847:9;2838:7;2834:23;2830:33;2827:2;;;2876:1;2873;2866:12;2827:2;2899:57;2948:7;2937:9;2899:57;:::i;:::-;2889:67;;3006:3;2995:9;2991:19;2978:33;3020:28;3042:5;3020:28;:::i;:::-;3067:5;3057:15;;;2817:261;;;;;:::o;3083:314::-;3181:6;3189;3242:3;3230:9;3221:7;3217:23;3213:33;3210:2;;;3259:1;3256;3249:12;3210:2;3282:57;3331:7;3320:9;3282:57;:::i;:::-;3272:67;3386:3;3371:19;;;;3358:33;;-1:-1:-1;;;3200:197:114:o;3402:234::-;3489:6;3542:3;3530:9;3521:7;3517:23;3513:33;3510:2;;;3559:1;3556;3549:12;3510:2;3582:48;3622:7;3611:9;3582:48;:::i;3641:559::-;3745:6;3753;3761;3814:3;3802:9;3793:7;3789:23;3785:33;3782:2;;;3831:1;3828;3821:12;3782:2;3854:48;3894:7;3883:9;3854:48;:::i;:::-;3844:58;;3952:3;3941:9;3937:19;3924:33;3966:31;3991:5;3966:31;:::i;:::-;4016:5;-1:-1:-1;4073:3:114;4058:19;;4045:33;4122:26;4109:40;;4097:53;;4087:2;;4164:1;4161;4154:12;4087:2;4187:7;4177:17;;;3772:428;;;;;:::o;4205:180::-;4264:6;4317:2;4305:9;4296:7;4292:23;4288:32;4285:2;;;4333:1;4330;4323:12;4285:2;-1:-1:-1;4356:23:114;;4275:110;-1:-1:-1;4275:110:114:o;4390:309::-;4455:6;4463;4516:2;4504:9;4495:7;4491:23;4487:32;4484:2;;;4532:1;4529;4522:12;4484:2;4568:9;4555:23;4545:33;;4628:2;4617:9;4613:18;4600:32;4641:28;4663:5;4641:28;:::i;8975:1199::-;9123:4;9165:3;9154:9;9150:19;9142:27;;9202:6;9196:13;9185:9;9178:32;9266:4;9258:6;9254:17;9248:24;9241:4;9230:9;9226:20;9219:54;9329:4;9321:6;9317:17;9311:24;9304:4;9293:9;9289:20;9282:54;9392:4;9384:6;9380:17;9374:24;9367:4;9356:9;9352:20;9345:54;9455:4;9447:6;9443:17;9437:24;9430:4;9419:9;9415:20;9408:54;9518:4;9510:6;9506:17;9500:24;9493:4;9482:9;9478:20;9471:54;9581:4;9573:6;9569:17;9563:24;9556:4;9545:9;9541:20;9534:54;9644:4;9636:6;9632:17;9626:24;9619:4;9608:9;9604:20;9597:54;9670:6;9730:2;9722:6;9718:15;9712:22;9707:2;9696:9;9692:18;9685:50;;9754:6;9807:2;9799:6;9795:15;9789:22;9820:68;9884:2;9873:9;9869:18;9855:12;-1:-1:-1;;;;;4786:31:114;4774:44;;4764:60;9820:68;-1:-1:-1;;9907:6:114;9950:15;;;9944:22;4905:12;4894:24;;;10009:18;;;4882:37;;;;10047:6;10090:15;;;10084:22;4894:24;10149:18;;;;4882:37;;;;9132:1042;:::o;10361:347::-;10428:2;10422:9;10470:6;10458:19;;10507:18;10492:34;;10528:22;;;10489:62;10486:2;;;10593:10;10588:3;10584:20;10581:1;10574:31;10628:4;10625:1;10618:15;10656:4;10653:1;10646:15;10486:2;10687;10680:22;10402:306;:::o;10713:225::-;10753:3;10784:1;10780:6;10777:1;10774:13;10771:2;;;10829:10;10824:3;10820:20;10817:1;10810:31;10864:4;10861:1;10854:15;10892:4;10889:1;10882:15;10771:2;-1:-1:-1;10923:9:114;;10761:177::o;10943:131::-;-1:-1:-1;;;;;11018:31:114;;11008:42;;10998:2;;11064:1;11061;11054:12;11079:118;11165:5;11158:13;11151:21;11144:5;11141:32;11131:2;;11187:1;11184;11177:12",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    648,
    4504
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x81CED71F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xB0EC4BCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB0EC4BCF EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0xB77DDFEA EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xDEA167D5 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xE5A6B10F EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x81CED71F EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x9E556B2B EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xAB600169 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAF02808A EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x43060237 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x43060237 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x47E7EF24 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x65E29C7E EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x79502C55 EQ PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x66DDA0E EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x98D3228 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x1440912B EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x19704A3A EQ PUSH2 0x154 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0xAC5 JUMP JUMPDEST PUSH2 0x234 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12E PUSH1 0x0 NOT DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH2 0x12E PUSH2 0x162 CALLDATASIZE PUSH1 0x4 PUSH2 0xB49 JUMP JUMPDEST PUSH2 0x260 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0xA5F JUMP JUMPDEST PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0xA99 JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x138 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x6B9 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0xAFF JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A1 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0xBA7 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x12E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A1 JUMP JUMPDEST PUSH2 0x12E PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0xA99 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST PUSH2 0x25C PUSH2 0x246 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xB2C JUMP JUMPDEST DUP3 PUSH2 0x252 JUMPI PUSH1 0x0 PUSH2 0x756 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x756 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 DUP6 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 SHL PUSH2 0x28E SWAP2 SWAP1 PUSH2 0xCC3 JUMP JUMPDEST DUP5 MSTORE PUSH2 0x299 DUP5 PUSH2 0x91E JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE MLOAD CALLER SWAP1 PUSH32 0xF8DA20DC84E4C9850943FCD1A0587142B2BAC3FEF70840CCEE41F5EDD22BC477 SWAP1 PUSH2 0x2DF SWAP1 DUP8 SWAP1 PUSH2 0xBE5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP SWAP1 MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x369 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792074686520506F6C696379506F6F6C436F6E6669672063616E206368 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x30B733B29030B9B9B2BA26B0B730B3B2B9 PUSH1 0x79 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x94217AD1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x94217AD1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3E6 SWAP2 SWAP1 PUSH2 0xA7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5D8 JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x94217AD1 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x456 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47A SWAP2 SWAP1 PUSH2 0xA7C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCEC16F3F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x94217AD1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP6 POP PUSH4 0x95EA7B3 SWAP5 POP SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x94217AD1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x532 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x556 SWAP2 SWAP1 PUSH2 0xA7C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5D6 SWAP2 SWAP1 PUSH2 0xA3B JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x64A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25C SWAP2 SWAP1 PUSH2 0xA3B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420496D706C656D656E746564206465706F736974000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x139BDD08125B5C1B195B595B9D1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x360 JUMP JUMPDEST PUSH2 0x25C PUSH2 0x705 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0xB2C JUMP JUMPDEST DUP3 PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420496D706C656D656E7465642077697468647261770000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x64 ADD PUSH2 0x360 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x797 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x141BDB1A58DE481B9BDD08199BDD5B99 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x360 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x7B1 DUP4 PUSH2 0x91E JUMP JUMPDEST EQ PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x90C2E6D040C8DECAE6DC4EE840DAC2E8C6D PUSH1 0x73 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x360 JUMP JUMPDEST DUP2 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x875 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79207269736B4D6F64756C6520697320617574686F72697A656420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x207265736F6C76652074686520706F6C696379 PUSH1 0x68 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x360 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP6 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP6 SWAP1 SSTORE SWAP3 DUP4 ADD DUP5 SWAP1 SSTORE PUSH1 0x4 DUP1 DUP5 ADD DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 ADD DUP6 SWAP1 SSTORE PUSH1 0x6 DUP5 ADD DUP6 SWAP1 SSTORE PUSH1 0x7 DUP5 ADD DUP6 SWAP1 SSTORE PUSH1 0x8 DUP5 ADD DUP6 SWAP1 SSTORE PUSH1 0x9 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF0 SHL SUB NOT AND SWAP1 SSTORE DUP6 MLOAD DUP5 MSTORE SWAP2 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE DUP4 MLOAD SWAP1 MLOAD DUP4 DUP2 MSTORE SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x54F4A270EA08F88DC23B2520D6B063FECB24D956C4496F447926D736338F545E SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x931 SWAP2 SWAP1 PUSH2 0xBE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x959 DUP2 PUSH2 0xCE9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x98A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x992 PUSH2 0xC8B JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x9F8 DUP2 DUP5 ADD PUSH2 0x94E JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0xA0A DUP4 DUP3 ADD PUSH2 0xA26 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0xA1C DUP4 DUP3 ADD PUSH2 0xA26 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x959 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA58 DUP2 PUSH2 0xCFE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA58 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA58 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xAB7 DUP2 PUSH2 0xCE9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAE3 DUP5 DUP5 PUSH2 0x95E JUMP JUMPDEST SWAP2 POP PUSH2 0x180 DUP4 ADD CALLDATALOAD PUSH2 0xAF4 DUP2 PUSH2 0xCFE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB1D DUP5 DUP5 PUSH2 0x95E JUMP JUMPDEST SWAP5 PUSH2 0x180 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA58 DUP4 DUP4 PUSH2 0x977 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB69 DUP6 DUP6 PUSH2 0x977 JUMP JUMPDEST SWAP3 POP PUSH2 0x180 DUP5 ADD CALLDATALOAD PUSH2 0xB7A DUP2 PUSH2 0xCE9 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A0 DUP5 ADD CALLDATALOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xAF4 DUP2 PUSH2 0xCFE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD DUP2 DUP5 ADD MSTORE POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0xC5F DUP3 DUP6 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP POP PUSH2 0x140 DUP4 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x160 SWAP4 DUP5 ADD MLOAD AND SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x180 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xCBD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xCE4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0x4A LOG1 SDIV EXP 0xB0 DUP3 0xE5 0xC DUP8 0xE3 XOR 0xC3 JUMPDEST PUSH26 0x64D9B581285DCE7C03A461B3427D7EF35964736F6C6343000806 STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "5": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "CALLVALUE",
      "path": "24"
    },
    "6": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "7": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "8": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "12": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "REVERT",
      "path": "24"
    },
    "16": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "17": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "POP",
      "path": "24"
    },
    "18": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "21": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "LT",
      "path": "24"
    },
    "22": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x10B"
    },
    "25": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "26": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "CALLDATALOAD",
      "path": "24"
    },
    "29": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "SHR",
      "path": "24"
    },
    "32": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "33": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x81CED71F"
    },
    "38": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "GT",
      "path": "24"
    },
    "39": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA2"
    },
    "42": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "43": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "44": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xB0EC4BCF"
    },
    "49": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "GT",
      "path": "24"
    },
    "50": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x71"
    },
    "53": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "54": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "55": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xB0EC4BCF"
    },
    "60": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "61": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1F4"
    },
    "64": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "65": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "66": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xB77DDFEA"
    },
    "71": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "72": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x208"
    },
    "75": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "76": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "77": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xDEA167D5"
    },
    "82": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "83": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x18D"
    },
    "86": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "87": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "88": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xE5A6B10F"
    },
    "93": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "94": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x210"
    },
    "97": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "98": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "99": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xF3FEF3A3"
    },
    "104": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "105": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x221"
    },
    "108": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "109": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "111": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "112": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "REVERT",
      "path": "24"
    },
    "113": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "114": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "115": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x81CED71F"
    },
    "120": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "121": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1B9"
    },
    "124": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "125": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "126": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x9E556B2B"
    },
    "131": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "132": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1CC"
    },
    "135": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "136": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "137": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xAB600169"
    },
    "142": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "143": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1DF"
    },
    "146": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "147": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "148": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xAF02808A"
    },
    "153": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "154": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1ED"
    },
    "157": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "158": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "160": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "161": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "REVERT",
      "path": "24"
    },
    "162": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "163": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "164": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x43060237"
    },
    "169": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "GT",
      "path": "24"
    },
    "170": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xDE"
    },
    "173": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "174": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "175": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x43060237"
    },
    "180": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "181": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x167"
    },
    "184": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "185": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "186": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x47E7EF24"
    },
    "191": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "192": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x17A"
    },
    "195": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "196": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "197": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x65E29C7E"
    },
    "202": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "203": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x18D"
    },
    "206": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "207": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "208": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x79502C55"
    },
    "213": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "214": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x194"
    },
    "217": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "218": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "220": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "221": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "REVERT",
      "path": "24"
    },
    "222": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "223": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "224": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x66DDA0E"
    },
    "229": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "230": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x110"
    },
    "233": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "234": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "235": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x98D3228"
    },
    "240": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "241": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x125"
    },
    "244": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "245": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "246": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x1440912B"
    },
    "251": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "252": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x141"
    },
    "255": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "256": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "257": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x19704A3A"
    },
    "262": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "EQ",
      "path": "24"
    },
    "263": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x154"
    },
    "266": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "267": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "268": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "270": {
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "DUP1",
      "path": "24"
    },
    "271": {
      "first_revert": true,
      "fn": null,
      "offset": [
        648,
        4504
      ],
      "op": "REVERT",
      "path": "24"
    },
    "272": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "273": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "276": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x11E"
    },
    "279": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "280": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "282": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xAC5"
    },
    "285": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "i",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMP",
      "path": "24"
    },
    "286": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "287": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x234"
    },
    "290": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "i",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMP",
      "path": "24"
    },
    "291": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "292": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "STOP",
      "path": "24"
    },
    "293": {
      "offset": [
        730,
        834
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "294": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x12E"
    },
    "297": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "299": {
      "op": "NOT"
    },
    "300": {
      "offset": [
        730,
        834
      ],
      "op": "DUP2",
      "path": "24"
    },
    "301": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "JUMP",
      "path": "24"
    },
    "302": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "303": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "305": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "306": {
      "op": "SWAP1"
    },
    "307": {
      "op": "DUP2"
    },
    "308": {
      "op": "MSTORE"
    },
    "309": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "311": {
      "op": "ADD"
    },
    "312": {
      "offset": [
        730,
        834
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "313": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "315": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "316": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "DUP1",
      "path": "24"
    },
    "317": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "318": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "SUB",
      "path": "24"
    },
    "319": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "320": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        730,
        834
      ],
      "op": "RETURN",
      "path": "24"
    },
    "321": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "322": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "325": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x14F"
    },
    "328": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "329": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "331": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xBA7"
    },
    "334": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "jump": "i",
      "offset": [
        4301,
        4392
      ],
      "op": "JUMP",
      "path": "24"
    },
    "335": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "336": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4361,
        4379
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 0,
      "value": "0x2"
    },
    "338": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4361,
        4387
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "339": {
      "fn": "PolicyPoolMock.setTotalETokenSupply",
      "offset": [
        4301,
        4392
      ],
      "op": "JUMP",
      "path": "24"
    },
    "340": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "341": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x12E"
    },
    "344": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x162"
    },
    "347": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "348": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "350": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xB49"
    },
    "353": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "i",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMP",
      "path": "24"
    },
    "354": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "355": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x260"
    },
    "358": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "i",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMP",
      "path": "24"
    },
    "359": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "360": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "363": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x175"
    },
    "366": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "367": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "369": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA5F"
    },
    "372": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMP",
      "path": "24"
    },
    "373": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "374": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x2F0"
    },
    "377": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMP",
      "path": "24"
    },
    "378": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "379": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "382": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x188"
    },
    "385": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "386": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "388": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA99"
    },
    "391": {
      "fn": "PolicyPoolMock.deposit",
      "jump": "i",
      "offset": [
        4069,
        4171
      ],
      "op": "JUMP",
      "path": "24"
    },
    "392": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "393": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x671"
    },
    "396": {
      "fn": "PolicyPoolMock.deposit",
      "jump": "i",
      "offset": [
        4069,
        4171
      ],
      "op": "JUMP",
      "path": "24"
    },
    "397": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2414,
        2499
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "398": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2471,
        2478
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "400": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2414,
        2499
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x12E"
    },
    "403": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2414,
        2499
      ],
      "op": "JUMP",
      "path": "24"
    },
    "404": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1685,
        1779
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "405": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1767,
        1774
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 1,
      "value": "0x1"
    },
    "407": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1767,
        1774
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "408": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "410": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "412": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "414": {
      "op": "SHL"
    },
    "415": {
      "op": "SUB"
    },
    "416": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1767,
        1774
      ],
      "op": "AND",
      "path": "24"
    },
    "417": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1685,
        1779
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "418": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1685,
        1779
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "420": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1685,
        1779
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "421": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "423": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "425": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "427": {
      "op": "SHL"
    },
    "428": {
      "op": "SUB"
    },
    "429": {
      "op": "SWAP1"
    },
    "430": {
      "op": "SWAP2"
    },
    "431": {
      "op": "AND"
    },
    "432": {
      "op": "DUP2"
    },
    "433": {
      "op": "MSTORE"
    },
    "434": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "436": {
      "op": "ADD"
    },
    "437": {
      "fn": "PolicyPoolMock.config",
      "offset": [
        1685,
        1779
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x138"
    },
    "440": {
      "op": "JUMP"
    },
    "441": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "442": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "445": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1C7"
    },
    "448": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "449": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "451": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xBA7"
    },
    "454": {
      "fn": "PolicyPoolMock.receiveGrant",
      "jump": "i",
      "offset": [
        3647,
        3737
      ],
      "op": "JUMP",
      "path": "24"
    },
    "455": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "456": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x6B9"
    },
    "459": {
      "fn": "PolicyPoolMock.receiveGrant",
      "jump": "i",
      "offset": [
        3647,
        3737
      ],
      "op": "JUMP",
      "path": "24"
    },
    "460": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "461": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "464": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1DA"
    },
    "467": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "468": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "470": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xAFF"
    },
    "473": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "jump": "i",
      "offset": [
        3741,
        3874
      ],
      "op": "JUMP",
      "path": "24"
    },
    "474": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "475": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x6F3"
    },
    "478": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "jump": "i",
      "offset": [
        3741,
        3874
      ],
      "op": "JUMP",
      "path": "24"
    },
    "479": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "480": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x123"
    },
    "483": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1C7"
    },
    "486": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "487": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "489": {
      "fn": "PolicyPoolMock.assetEarnings",
      "offset": [
        2705,
        2802
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xBC0"
    },
    "492": {
      "fn": "PolicyPoolMock.assetEarnings",
      "jump": "i",
      "offset": [
        2705,
        2802
      ],
      "op": "JUMP",
      "path": "24"
    },
    "493": {
      "fn": "PolicyPoolMock.policyNFT",
      "offset": [
        1783,
        1873
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "494": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2471,
        2478
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "496": {
      "fn": "PolicyPoolMock.policyNFT",
      "offset": [
        1783,
        1873
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1A1"
    },
    "499": {
      "fn": "PolicyPoolMock.getInvestable",
      "offset": [
        2414,
        2499
      ],
      "op": "JUMP",
      "path": "24"
    },
    "500": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "501": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1A1"
    },
    "504": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x202"
    },
    "507": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "508": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "510": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xBA7"
    },
    "513": {
      "fn": "PolicyPoolMock.getETokenAt",
      "jump": "i",
      "offset": [
        2593,
        2701
      ],
      "op": "JUMP",
      "path": "24"
    },
    "514": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "515": {
      "op": "POP"
    },
    "516": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2655,
        2662
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "518": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2655,
        2662
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "519": {
      "fn": "PolicyPoolMock.getETokenAt",
      "offset": [
        2593,
        2701
      ],
      "op": "JUMP",
      "path": "24"
    },
    "520": {
      "fn": "PolicyPoolMock.totalETokenSupply",
      "offset": [
        4396,
        4502
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "521": {
      "fn": "PolicyPoolMock.totalETokenSupply",
      "offset": [
        4479,
        4497
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 2,
      "value": "0x2"
    },
    "523": {
      "fn": "PolicyPoolMock.totalETokenSupply",
      "offset": [
        4479,
        4497
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "524": {
      "fn": "PolicyPoolMock.totalETokenSupply",
      "offset": [
        4396,
        4502
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x12E"
    },
    "527": {
      "fn": "PolicyPoolMock.totalETokenSupply",
      "offset": [
        4396,
        4502
      ],
      "op": "JUMP",
      "path": "24"
    },
    "528": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1586,
        1681
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "529": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1638,
        1652
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "531": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1667,
        1676
      ],
      "op": "SLOAD",
      "path": "24",
      "statement": 3
    },
    "532": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "534": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "536": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "538": {
      "op": "SHL"
    },
    "539": {
      "op": "SUB"
    },
    "540": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1667,
        1676
      ],
      "op": "AND",
      "path": "24"
    },
    "541": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1586,
        1681
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1A1"
    },
    "544": {
      "fn": "PolicyPoolMock.currency",
      "offset": [
        1586,
        1681
      ],
      "op": "JUMP",
      "path": "24"
    },
    "545": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "546": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x12E"
    },
    "549": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x22F"
    },
    "552": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "553": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "555": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA99"
    },
    "558": {
      "fn": "PolicyPoolMock.withdraw",
      "jump": "i",
      "offset": [
        4175,
        4297
      ],
      "op": "JUMP",
      "path": "24"
    },
    "559": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "560": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x70B"
    },
    "563": {
      "fn": "PolicyPoolMock.withdraw",
      "jump": "i",
      "offset": [
        4175,
        4297
      ],
      "op": "JUMP",
      "path": "24"
    },
    "564": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "565": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "PUSH2",
      "path": "24",
      "statement": 4,
      "value": "0x25C"
    },
    "568": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x246"
    },
    "571": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "572": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "DUP5",
      "path": "24"
    },
    "573": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "574": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "SUB",
      "path": "24"
    },
    "575": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "DUP5",
      "path": "24"
    },
    "576": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "ADD",
      "path": "24"
    },
    "577": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4020,
        4026
      ],
      "op": "DUP5",
      "path": "24"
    },
    "578": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xB2C"
    },
    "581": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "i",
      "offset": [
        4005,
        4060
      ],
      "op": "JUMP",
      "path": "24"
    },
    "582": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "583": {
      "branch": 24,
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4028,
        4039
      ],
      "op": "DUP3",
      "path": "24"
    },
    "584": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4028,
        4059
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x252"
    },
    "587": {
      "branch": 24,
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4028,
        4059
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "588": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4058,
        4059
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "590": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4019
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x756"
    },
    "593": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "i",
      "offset": [
        4005,
        4060
      ],
      "op": "JUMP",
      "path": "24"
    },
    "594": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4028,
        4059
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "595": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4042,
        4048
      ],
      "op": "DUP4",
      "path": "24"
    },
    "596": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4042,
        4055
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "598": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4042,
        4055
      ],
      "op": "ADD",
      "path": "24"
    },
    "599": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4042,
        4055
      ],
      "op": "CALLDATALOAD",
      "path": "24"
    },
    "600": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4019
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x756"
    },
    "603": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "i",
      "offset": [
        4005,
        4060
      ],
      "op": "JUMP",
      "path": "24"
    },
    "604": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        4005,
        4060
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "605": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "POP",
      "path": "24"
    },
    "606": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "offset": [
        3878,
        4065
      ],
      "op": "POP",
      "path": "24"
    },
    "607": {
      "fn": "PolicyPoolMock.resolvePolicyFullPayout",
      "jump": "o",
      "offset": [
        3878,
        4065
      ],
      "op": "JUMP",
      "path": "24"
    },
    "608": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "609": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2944,
        2951
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "611": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3026,
        3036
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 5
    },
    "612": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "PUSH12",
      "path": "24",
      "value": "0xFFFFFFFFFFFFFFFFFFFFFFFF"
    },
    "625": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "AND",
      "path": "24"
    },
    "626": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3020,
        3022
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x60"
    },
    "628": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2996,
        3002
      ],
      "op": "DUP6",
      "path": "24"
    },
    "629": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2996,
        3013
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x120"
    },
    "632": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2996,
        3013
      ],
      "op": "ADD",
      "path": "24"
    },
    "633": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2996,
        3013
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "634": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "636": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "638": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "640": {
      "op": "SHL"
    },
    "641": {
      "op": "SUB"
    },
    "642": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2972,
        3016
      ],
      "op": "AND",
      "path": "24"
    },
    "643": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2972,
        3022
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "644": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2972,
        3022
      ],
      "op": "SHL",
      "path": "24"
    },
    "645": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x28E"
    },
    "648": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "649": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "650": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xCC3"
    },
    "653": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "i",
      "offset": [
        2971,
        3036
      ],
      "op": "JUMP",
      "path": "24"
    },
    "654": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2971,
        3036
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "655": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2959,
        3036
      ],
      "op": "DUP5",
      "path": "24"
    },
    "656": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2959,
        3036
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "657": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3068,
        3081
      ],
      "op": "PUSH2",
      "path": "24",
      "statement": 6,
      "value": "0x299"
    },
    "660": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2959,
        2965
      ],
      "op": "DUP5",
      "path": "24"
    },
    "661": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3068,
        3079
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x91E"
    },
    "664": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "i",
      "offset": [
        3068,
        3081
      ],
      "op": "JUMP",
      "path": "24"
    },
    "665": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3068,
        3081
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "666": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3055,
        3064
      ],
      "op": "DUP5",
      "path": "24"
    },
    "667": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3055,
        3064
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "668": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "670": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "671": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "DUP2",
      "path": "24"
    },
    "672": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "673": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3054
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "675": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "677": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "678": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "680": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "681": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "DUP2",
      "path": "24"
    },
    "682": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "683": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3065
      ],
      "op": "KECCAK256",
      "path": "24"
    },
    "684": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3081
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "685": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3081
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "686": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3081
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "687": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3042,
        3081
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "688": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "MLOAD",
      "path": "24",
      "statement": 7
    },
    "689": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3114,
        3124
      ],
      "op": "CALLER",
      "path": "24"
    },
    "690": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3114,
        3124
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "691": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "PUSH32",
      "path": "24",
      "value": "0xF8DA20DC84E4C9850943FCD1A0587142B2BAC3FEF70840CCEE41F5EDD22BC477"
    },
    "724": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "725": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x2DF"
    },
    "728": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "729": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3055,
        3061
      ],
      "op": "DUP8",
      "path": "24"
    },
    "730": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3055,
        3061
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "731": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xBE5"
    },
    "734": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "i",
      "offset": [
        3092,
        3134
      ],
      "op": "JUMP",
      "path": "24"
    },
    "735": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "736": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "738": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "739": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "DUP1",
      "path": "24"
    },
    "740": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "741": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "SUB",
      "path": "24"
    },
    "742": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "743": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3092,
        3134
      ],
      "op": "LOG2",
      "path": "24"
    },
    "744": {
      "op": "POP"
    },
    "745": {
      "op": "POP"
    },
    "746": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3147,
        3156
      ],
      "op": "SWAP1",
      "path": "24",
      "statement": 8
    },
    "747": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3147,
        3156
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "748": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        3147,
        3156
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "749": {
      "fn": "PolicyPoolMock.newPolicy",
      "offset": [
        2806,
        3161
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "750": {
      "op": "POP"
    },
    "751": {
      "fn": "PolicyPoolMock.newPolicy",
      "jump": "o",
      "offset": [
        2806,
        3161
      ],
      "op": "JUMP",
      "path": "24"
    },
    "752": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "753": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1987,
        1994
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 9,
      "value": "0x1"
    },
    "755": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1987,
        1994
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "756": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "758": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "760": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "762": {
      "op": "SHL"
    },
    "763": {
      "op": "SUB"
    },
    "764": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1987,
        1994
      ],
      "op": "AND",
      "path": "24"
    },
    "765": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1965,
        1975
      ],
      "op": "CALLER",
      "path": "24"
    },
    "766": {
      "branch": 25,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1965,
        1995
      ],
      "op": "EQ",
      "path": "24"
    },
    "767": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x369"
    },
    "770": {
      "branch": 25,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "771": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "773": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "774": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "778": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "780": {
      "op": "SHL"
    },
    "781": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "DUP2",
      "path": "24"
    },
    "782": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "783": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "785": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "787": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "DUP3",
      "path": "24"
    },
    "788": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "ADD",
      "path": "24"
    },
    "789": {
      "op": "MSTORE"
    },
    "790": {
      "op": "PUSH1",
      "value": "0x31"
    },
    "792": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "794": {
      "op": "DUP3"
    },
    "795": {
      "op": "ADD"
    },
    "796": {
      "op": "MSTORE"
    },
    "797": {
      "op": "PUSH32",
      "value": "0x4F6E6C792074686520506F6C696379506F6F6C436F6E6669672063616E206368"
    },
    "830": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "832": {
      "op": "DUP3"
    },
    "833": {
      "op": "ADD"
    },
    "834": {
      "op": "MSTORE"
    },
    "835": {
      "op": "PUSH17",
      "value": "0x30B733B29030B9B9B2BA26B0B730B3B2B9"
    },
    "853": {
      "op": "PUSH1",
      "value": "0x79"
    },
    "855": {
      "op": "SHL"
    },
    "856": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "858": {
      "op": "DUP3"
    },
    "859": {
      "op": "ADD"
    },
    "860": {
      "op": "MSTORE"
    },
    "861": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "863": {
      "op": "ADD"
    },
    "864": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "865": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "867": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "868": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "DUP1",
      "path": "24"
    },
    "869": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "870": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "SUB",
      "path": "24"
    },
    "871": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "872": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "24"
    },
    "873": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1957,
        2049
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "874": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2074
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "876": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2074
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "877": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "879": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "880": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "881": {
      "op": "PUSH4",
      "value": "0x94217AD1"
    },
    "886": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "888": {
      "op": "SHL"
    },
    "889": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP2",
      "path": "24"
    },
    "890": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "891": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "892": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "893": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2102,
        2103
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "895": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2102,
        2103
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "896": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "898": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "900": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "902": {
      "op": "SHL"
    },
    "903": {
      "op": "SUB"
    },
    "904": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2074
      ],
      "op": "AND",
      "path": "24"
    },
    "905": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2074
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "906": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2087
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x94217AD1"
    },
    "911": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2087
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "912": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "914": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "915": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP4",
      "path": "24"
    },
    "916": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ADD",
      "path": "24"
    },
    "917": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "918": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "920": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "921": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "922": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "923": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP3",
      "path": "24"
    },
    "924": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "925": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SUB",
      "path": "24"
    },
    "926": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ADD",
      "path": "24"
    },
    "927": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP2",
      "path": "24"
    },
    "928": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2074
      ],
      "op": "DUP7",
      "path": "24"
    },
    "929": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "930": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "931": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "932": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "933": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "934": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x3AE"
    },
    "937": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "938": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "940": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "941": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "REVERT",
      "path": "24"
    },
    "942": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "943": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "944": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "GAS",
      "path": "24"
    },
    "945": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "STATICCALL",
      "path": "24"
    },
    "946": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "947": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "948": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "949": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x3C2"
    },
    "952": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "953": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "954": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "956": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "957": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "958": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "959": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "961": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "REVERT",
      "path": "24"
    },
    "962": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "963": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "964": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "965": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "966": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "967": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "969": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "970": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "971": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "973": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "NOT",
      "path": "24"
    },
    "974": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "976": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP3",
      "path": "24"
    },
    "977": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ADD",
      "path": "24"
    },
    "978": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "AND",
      "path": "24"
    },
    "979": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP3",
      "path": "24"
    },
    "980": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ADD",
      "path": "24"
    },
    "981": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP1",
      "path": "24"
    },
    "982": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "984": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "985": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "POP",
      "path": "24"
    },
    "986": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "DUP2",
      "path": "24"
    },
    "987": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "ADD",
      "path": "24"
    },
    "988": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "989": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x3E6"
    },
    "992": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "993": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "994": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA7C"
    },
    "997": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMP",
      "path": "24"
    },
    "998": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2067,
        2089
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "999": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1001": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1003": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1005": {
      "op": "SHL"
    },
    "1006": {
      "op": "SUB"
    },
    "1007": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2059,
        2104
      ],
      "op": "AND",
      "path": "24"
    },
    "1008": {
      "branch": 26,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2059,
        2104
      ],
      "op": "EQ",
      "path": "24"
    },
    "1009": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2055,
        2280
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x5D8"
    },
    "1012": {
      "branch": 26,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2055,
        2280
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1013": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 10,
      "value": "0x1"
    },
    "1015": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1017": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1018": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "1019": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1020": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x100"
    },
    "1023": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "EXP",
      "path": "24"
    },
    "1024": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1025": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "DIV",
      "path": "24"
    },
    "1026": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1028": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1030": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1032": {
      "op": "SHL"
    },
    "1033": {
      "op": "SUB"
    },
    "1034": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2121
      ],
      "op": "AND",
      "path": "24"
    },
    "1035": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1037": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1039": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1041": {
      "op": "SHL"
    },
    "1042": {
      "op": "SUB"
    },
    "1043": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2134
      ],
      "op": "AND",
      "path": "24"
    },
    "1044": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2134
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x94217AD1"
    },
    "1049": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1051": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1052": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1053": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xFFFFFFFF"
    },
    "1058": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "AND",
      "path": "24"
    },
    "1059": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xE0"
    },
    "1061": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "SHL",
      "path": "24"
    },
    "1062": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1063": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1064": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1066": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ADD",
      "path": "24"
    },
    "1067": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "1069": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1071": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1072": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1073": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1074": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "SUB",
      "path": "24"
    },
    "1075": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1076": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP7",
      "path": "24"
    },
    "1077": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1078": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "1079": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1080": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1081": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1082": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x442"
    },
    "1085": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1086": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1088": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1089": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1090": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1091": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1092": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "GAS",
      "path": "24"
    },
    "1093": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "STATICCALL",
      "path": "24"
    },
    "1094": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1095": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1096": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1097": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x456"
    },
    "1100": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1101": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1102": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1104": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1105": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "1106": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1107": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1109": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1110": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1111": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1112": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1113": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1114": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1115": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1117": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1118": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1119": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1121": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "NOT",
      "path": "24"
    },
    "1122": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1124": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1125": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ADD",
      "path": "24"
    },
    "1126": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "AND",
      "path": "24"
    },
    "1127": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1128": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ADD",
      "path": "24"
    },
    "1129": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1130": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1132": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1133": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "POP",
      "path": "24"
    },
    "1134": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1135": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "ADD",
      "path": "24"
    },
    "1136": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1137": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x47A"
    },
    "1140": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1141": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1142": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA7C"
    },
    "1145": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1146": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2136
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1147": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1149": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1151": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1153": {
      "op": "SHL"
    },
    "1154": {
      "op": "SUB"
    },
    "1155": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2148
      ],
      "op": "AND",
      "path": "24"
    },
    "1156": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2148
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xCEC16F3F"
    },
    "1161": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1163": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1164": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1165": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0xFFFFFFFF"
    },
    "1170": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "AND",
      "path": "24"
    },
    "1171": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xE0"
    },
    "1173": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "SHL",
      "path": "24"
    },
    "1174": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1175": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1176": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1178": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "ADD",
      "path": "24"
    },
    "1179": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1181": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1183": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1184": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1185": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1186": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "SUB",
      "path": "24"
    },
    "1187": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1188": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1190": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP8",
      "path": "24"
    },
    "1191": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1192": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "1193": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1194": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1195": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1196": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x4B4"
    },
    "1199": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1200": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1202": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1203": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1204": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1205": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "POP",
      "path": "24"
    },
    "1206": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "GAS",
      "path": "24"
    },
    "1207": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "CALL",
      "path": "24"
    },
    "1208": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1209": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1210": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1211": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x4C8"
    },
    "1214": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1215": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1216": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1218": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1219": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "1220": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1221": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1223": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1224": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2114,
        2150
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1225": {
      "op": "POP"
    },
    "1226": {
      "op": "POP"
    },
    "1227": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 11,
      "value": "0x0"
    },
    "1229": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "1230": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "1232": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "1233": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1235": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1236": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1237": {
      "op": "PUSH4",
      "value": "0x94217AD1"
    },
    "1242": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1244": {
      "op": "SHL"
    },
    "1245": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1246": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1247": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1248": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1249": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1251": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1253": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1255": {
      "op": "SHL"
    },
    "1256": {
      "op": "SUB"
    },
    "1257": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "SWAP4",
      "path": "24"
    },
    "1258": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "DUP5",
      "path": "24"
    },
    "1259": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "AND",
      "path": "24"
    },
    "1260": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2190
      ],
      "op": "SWAP6",
      "path": "24"
    },
    "1261": {
      "op": "POP"
    },
    "1262": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2198
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x95EA7B3"
    },
    "1267": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2198
      ],
      "op": "SWAP5",
      "path": "24"
    },
    "1268": {
      "op": "POP"
    },
    "1269": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1270": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1271": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "1272": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "AND",
      "path": "24"
    },
    "1273": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1274": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2227
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x94217AD1"
    },
    "1279": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2227
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1280": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1282": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1283": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1284": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ADD",
      "path": "24"
    },
    "1285": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "1286": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "1288": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "1289": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1290": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1291": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1292": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1293": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SUB",
      "path": "24"
    },
    "1294": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ADD",
      "path": "24"
    },
    "1295": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1296": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2214
      ],
      "op": "DUP7",
      "path": "24"
    },
    "1297": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1298": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "1299": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1300": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1301": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1302": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x51E"
    },
    "1305": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1306": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1308": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1309": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1310": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1311": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1312": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "GAS",
      "path": "24"
    },
    "1313": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "STATICCALL",
      "path": "24"
    },
    "1314": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1315": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1316": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1317": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x532"
    },
    "1320": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1321": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1322": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1324": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1325": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "1326": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1327": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1329": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1330": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1331": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1332": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1333": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1334": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1335": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1337": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1338": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1339": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1341": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "NOT",
      "path": "24"
    },
    "1342": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1344": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1345": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ADD",
      "path": "24"
    },
    "1346": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "AND",
      "path": "24"
    },
    "1347": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1348": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ADD",
      "path": "24"
    },
    "1349": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1350": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1352": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1353": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "POP",
      "path": "24"
    },
    "1354": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1355": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "ADD",
      "path": "24"
    },
    "1356": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1357": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x556"
    },
    "1360": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1361": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1362": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA7C"
    },
    "1365": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1366": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2207,
        2229
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1367": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1369": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1370": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1372": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1374": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1376": {
      "op": "SHL"
    },
    "1377": {
      "op": "SUB"
    },
    "1378": {
      "op": "NOT"
    },
    "1379": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xE0"
    },
    "1381": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP5",
      "path": "24"
    },
    "1382": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1383": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SHL",
      "path": "24"
    },
    "1384": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "AND",
      "path": "24"
    },
    "1385": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1386": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1387": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1389": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1391": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1393": {
      "op": "SHL"
    },
    "1394": {
      "op": "SUB"
    },
    "1395": {
      "op": "SWAP1"
    },
    "1396": {
      "op": "SWAP2"
    },
    "1397": {
      "op": "AND"
    },
    "1398": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1400": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1401": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ADD",
      "path": "24"
    },
    "1402": {
      "op": "MSTORE"
    },
    "1403": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2232,
        2233
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1405": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1407": {
      "op": "DUP3"
    },
    "1408": {
      "op": "ADD"
    },
    "1409": {
      "op": "MSTORE"
    },
    "1410": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1412": {
      "op": "ADD"
    },
    "1413": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "1415": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1417": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1418": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1419": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1420": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SUB",
      "path": "24"
    },
    "1421": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1422": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1424": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP8",
      "path": "24"
    },
    "1425": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1426": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "1427": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1428": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1429": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1430": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x59E"
    },
    "1433": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1434": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1436": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1437": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1438": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1439": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1440": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "GAS",
      "path": "24"
    },
    "1441": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "CALL",
      "path": "24"
    },
    "1442": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1443": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1444": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1445": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x5B2"
    },
    "1448": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1449": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1450": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1452": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1453": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "1454": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1455": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1457": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1458": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1459": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1460": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1461": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1462": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1463": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1465": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1466": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1467": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1469": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "NOT",
      "path": "24"
    },
    "1470": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1472": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1473": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ADD",
      "path": "24"
    },
    "1474": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "AND",
      "path": "24"
    },
    "1475": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1476": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ADD",
      "path": "24"
    },
    "1477": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1478": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1480": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1481": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1482": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1483": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "ADD",
      "path": "24"
    },
    "1484": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1485": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x5D6"
    },
    "1488": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1489": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1490": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA3B"
    },
    "1493": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1494": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1495": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2181,
        2234
      ],
      "op": "POP",
      "path": "24"
    },
    "1496": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2055,
        2280
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1497": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1499": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1501": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1503": {
      "op": "SHL"
    },
    "1504": {
      "op": "SUB"
    },
    "1505": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2289,
        2327
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1506": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2289,
        2327
      ],
      "op": "AND",
      "path": "24"
    },
    "1507": {
      "branch": 27,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2289,
        2327
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1508": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2285,
        2406
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x66E"
    },
    "1511": {
      "branch": 27,
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2285,
        2406
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1512": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 12,
      "value": "0x0"
    },
    "1514": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "1515": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1517": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1518": {
      "op": "PUSH4",
      "value": "0x95EA7B3"
    },
    "1523": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1525": {
      "op": "SHL"
    },
    "1526": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1527": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1528": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1530": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1532": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1534": {
      "op": "SHL"
    },
    "1535": {
      "op": "SUB"
    },
    "1536": {
      "op": "DUP4"
    },
    "1537": {
      "op": "DUP2"
    },
    "1538": {
      "op": "AND"
    },
    "1539": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1541": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1542": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ADD",
      "path": "24"
    },
    "1543": {
      "op": "MSTORE"
    },
    "1544": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1546": {
      "op": "NOT"
    },
    "1547": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1549": {
      "op": "DUP4"
    },
    "1550": {
      "op": "ADD"
    },
    "1551": {
      "op": "MSTORE"
    },
    "1552": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1553": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1554": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "AND",
      "path": "24"
    },
    "1555": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2346
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1556": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2354
      ],
      "op": "PUSH4",
      "path": "24",
      "value": "0x95EA7B3"
    },
    "1561": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2354
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1562": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1564": {
      "op": "ADD"
    },
    "1565": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "1567": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1569": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1570": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1571": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1572": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "SUB",
      "path": "24"
    },
    "1573": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1574": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1576": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP8",
      "path": "24"
    },
    "1577": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1578": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "EXTCODESIZE",
      "path": "24"
    },
    "1579": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1580": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1581": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1582": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x636"
    },
    "1585": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1586": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1588": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1589": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1590": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1591": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1592": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "GAS",
      "path": "24"
    },
    "1593": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "CALL",
      "path": "24"
    },
    "1594": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1595": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1596": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "1597": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x64A"
    },
    "1600": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1601": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1602": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1604": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1605": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "RETURNDATACOPY",
      "path": "24"
    },
    "1606": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1607": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1609": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "REVERT",
      "path": "24"
    },
    "1610": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1611": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1612": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1613": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1614": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1615": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1617": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1618": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "RETURNDATASIZE",
      "path": "24"
    },
    "1619": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1621": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "NOT",
      "path": "24"
    },
    "1622": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "1624": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1625": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ADD",
      "path": "24"
    },
    "1626": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "AND",
      "path": "24"
    },
    "1627": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1628": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ADD",
      "path": "24"
    },
    "1629": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP1",
      "path": "24"
    },
    "1630": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1632": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1633": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "POP",
      "path": "24"
    },
    "1634": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1635": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "ADD",
      "path": "24"
    },
    "1636": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1637": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x25C"
    },
    "1640": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "1641": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1642": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2337,
        2399
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xA3B"
    },
    "1645": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "i",
      "offset": [
        2337,
        2399
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1646": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        2285,
        2406
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1647": {
      "fn": "PolicyPoolMock.setAssetManager",
      "offset": [
        1877,
        2410
      ],
      "op": "POP",
      "path": "24"
    },
    "1648": {
      "fn": "PolicyPoolMock.setAssetManager",
      "jump": "o",
      "offset": [
        1877,
        2410
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1649": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4069,
        4171
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1650": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 13,
      "value": "0x40"
    },
    "1652": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1653": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1657": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1659": {
      "op": "SHL"
    },
    "1660": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1661": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1662": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1664": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1666": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1667": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "ADD",
      "path": "24"
    },
    "1668": {
      "op": "MSTORE"
    },
    "1669": {
      "op": "PUSH1",
      "value": "0x17"
    },
    "1671": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1673": {
      "op": "DUP3"
    },
    "1674": {
      "op": "ADD"
    },
    "1675": {
      "op": "MSTORE"
    },
    "1676": {
      "op": "PUSH32",
      "value": "0x4E6F7420496D706C656D656E746564206465706F736974000000000000000000"
    },
    "1709": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1711": {
      "op": "DUP3"
    },
    "1712": {
      "op": "ADD"
    },
    "1713": {
      "op": "MSTORE"
    },
    "1714": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1716": {
      "op": "ADD"
    },
    "1717": {
      "fn": "PolicyPoolMock.deposit",
      "offset": [
        4133,
        4166
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "1720": {
      "op": "JUMP"
    },
    "1721": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3647,
        3737
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1722": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 14,
      "value": "0x40"
    },
    "1724": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1725": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1729": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1731": {
      "op": "SHL"
    },
    "1732": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1733": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1734": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1736": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1738": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1739": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "ADD",
      "path": "24"
    },
    "1740": {
      "op": "MSTORE"
    },
    "1741": {
      "op": "PUSH1",
      "value": "0xF"
    },
    "1743": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1745": {
      "op": "DUP3"
    },
    "1746": {
      "op": "ADD"
    },
    "1747": {
      "op": "MSTORE"
    },
    "1748": {
      "op": "PUSH15",
      "value": "0x139BDD08125B5C1B195B595B9D1959"
    },
    "1764": {
      "op": "PUSH1",
      "value": "0x8A"
    },
    "1766": {
      "op": "SHL"
    },
    "1767": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1769": {
      "op": "DUP3"
    },
    "1770": {
      "op": "ADD"
    },
    "1771": {
      "op": "MSTORE"
    },
    "1772": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1774": {
      "op": "ADD"
    },
    "1775": {
      "fn": "PolicyPoolMock.receiveGrant",
      "offset": [
        3707,
        3732
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "1778": {
      "op": "JUMP"
    },
    "1779": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3741,
        3874
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1780": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "PUSH2",
      "path": "24",
      "statement": 15,
      "value": "0x25C"
    },
    "1783": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x705"
    },
    "1786": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "1787": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "DUP5",
      "path": "24"
    },
    "1788": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1789": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "SUB",
      "path": "24"
    },
    "1790": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "DUP5",
      "path": "24"
    },
    "1791": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "ADD",
      "path": "24"
    },
    "1792": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3854,
        3860
      ],
      "op": "DUP5",
      "path": "24"
    },
    "1793": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xB2C"
    },
    "1796": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "jump": "i",
      "offset": [
        3839,
        3869
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1797": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3869
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1798": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3862,
        3868
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1799": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "offset": [
        3839,
        3853
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x756"
    },
    "1802": {
      "fn": "PolicyPoolMock.resolvePolicy",
      "jump": "i",
      "offset": [
        3839,
        3869
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1803": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4175,
        4297
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1804": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 16,
      "value": "0x40"
    },
    "1806": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1807": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1811": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1813": {
      "op": "SHL"
    },
    "1814": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1815": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1816": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1818": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1820": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1821": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "ADD",
      "path": "24"
    },
    "1822": {
      "op": "MSTORE"
    },
    "1823": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "1825": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1827": {
      "op": "DUP3"
    },
    "1828": {
      "op": "ADD"
    },
    "1829": {
      "op": "MSTORE"
    },
    "1830": {
      "op": "PUSH32",
      "value": "0x4E6F7420496D706C656D656E7465642077697468647261770000000000000000"
    },
    "1863": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1865": {
      "op": "DUP3"
    },
    "1866": {
      "op": "ADD"
    },
    "1867": {
      "op": "MSTORE"
    },
    "1868": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4243,
        4250
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1870": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4243,
        4250
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1871": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1873": {
      "op": "ADD"
    },
    "1874": {
      "fn": "PolicyPoolMock.withdraw",
      "offset": [
        4258,
        4292
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "1877": {
      "op": "JUMP"
    },
    "1878": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3165,
        3643
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1879": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3261,
        3270
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 17
    },
    "1880": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3261,
        3270
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1881": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x797"
    },
    "1884": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1885": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1887": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1888": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1892": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1894": {
      "op": "SHL"
    },
    "1895": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1896": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1897": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1899": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1901": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1902": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "ADD",
      "path": "24"
    },
    "1903": {
      "op": "MSTORE"
    },
    "1904": {
      "op": "PUSH1",
      "value": "0x10"
    },
    "1906": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1908": {
      "op": "DUP3"
    },
    "1909": {
      "op": "ADD"
    },
    "1910": {
      "op": "MSTORE"
    },
    "1911": {
      "op": "PUSH16",
      "value": "0x141BDB1A58DE481B9BDD08199BDD5B99"
    },
    "1928": {
      "op": "PUSH1",
      "value": "0x82"
    },
    "1930": {
      "op": "SHL"
    },
    "1931": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1933": {
      "op": "DUP3"
    },
    "1934": {
      "op": "ADD"
    },
    "1935": {
      "op": "MSTORE"
    },
    "1936": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1938": {
      "op": "ADD"
    },
    "1939": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "1942": {
      "op": "JUMP"
    },
    "1943": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3253,
        3296
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1944": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3340,
        3349
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 18
    },
    "1945": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3340,
        3349
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1946": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "1948": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1949": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1950": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1951": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3339
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1953": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "1955": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1956": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1958": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "1959": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "KECCAK256",
      "path": "24"
    },
    "1960": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3327,
        3350
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "1961": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3310,
        3323
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x7B1"
    },
    "1964": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3340,
        3346
      ],
      "op": "DUP4",
      "path": "24"
    },
    "1965": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3310,
        3321
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x91E"
    },
    "1968": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "jump": "i",
      "offset": [
        3310,
        3323
      ],
      "op": "JUMP",
      "path": "24"
    },
    "1969": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3310,
        3323
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "1970": {
      "branch": 28,
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3310,
        3350
      ],
      "op": "EQ",
      "path": "24"
    },
    "1971": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x7F3"
    },
    "1974": {
      "branch": 28,
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "1975": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "1977": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "1978": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1982": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1984": {
      "op": "SHL"
    },
    "1985": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "DUP2",
      "path": "24"
    },
    "1986": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "1987": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1989": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "1991": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "DUP3",
      "path": "24"
    },
    "1992": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "ADD",
      "path": "24"
    },
    "1993": {
      "op": "MSTORE"
    },
    "1994": {
      "op": "PUSH1",
      "value": "0x12"
    },
    "1996": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1998": {
      "op": "DUP3"
    },
    "1999": {
      "op": "ADD"
    },
    "2000": {
      "op": "MSTORE"
    },
    "2001": {
      "op": "PUSH18",
      "value": "0x90C2E6D040C8DECAE6DC4EE840DAC2E8C6D"
    },
    "2020": {
      "op": "PUSH1",
      "value": "0x73"
    },
    "2022": {
      "op": "SHL"
    },
    "2023": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2025": {
      "op": "DUP3"
    },
    "2026": {
      "op": "ADD"
    },
    "2027": {
      "op": "MSTORE"
    },
    "2028": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2030": {
      "op": "ADD"
    },
    "2031": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "2034": {
      "op": "JUMP"
    },
    "2035": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3302,
        3373
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "2036": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3416,
        3422
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 19
    },
    "2037": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3416,
        3433
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x120"
    },
    "2040": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3416,
        3433
      ],
      "op": "ADD",
      "path": "24"
    },
    "2041": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3416,
        3433
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2042": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2044": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2046": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2048": {
      "op": "SHL"
    },
    "2049": {
      "op": "SUB"
    },
    "2050": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3394,
        3434
      ],
      "op": "AND",
      "path": "24"
    },
    "2051": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3394,
        3404
      ],
      "op": "CALLER",
      "path": "24"
    },
    "2052": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2054": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2056": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2058": {
      "op": "SHL"
    },
    "2059": {
      "op": "SUB"
    },
    "2060": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3394,
        3434
      ],
      "op": "AND",
      "path": "24"
    },
    "2061": {
      "branch": 29,
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3394,
        3434
      ],
      "op": "EQ",
      "path": "24"
    },
    "2062": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x875"
    },
    "2065": {
      "branch": 29,
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "2066": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "2068": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2069": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2073": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2075": {
      "op": "SHL"
    },
    "2076": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2077": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "2078": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2080": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "2082": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "DUP3",
      "path": "24"
    },
    "2083": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "ADD",
      "path": "24"
    },
    "2084": {
      "op": "MSTORE"
    },
    "2085": {
      "op": "PUSH1",
      "value": "0x33"
    },
    "2087": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2089": {
      "op": "DUP3"
    },
    "2090": {
      "op": "ADD"
    },
    "2091": {
      "op": "MSTORE"
    },
    "2092": {
      "op": "PUSH32",
      "value": "0x4F6E6C79207269736B4D6F64756C6520697320617574686F72697A656420746F"
    },
    "2125": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2127": {
      "op": "DUP3"
    },
    "2128": {
      "op": "ADD"
    },
    "2129": {
      "op": "MSTORE"
    },
    "2130": {
      "op": "PUSH19",
      "value": "0x207265736F6C76652074686520706F6C696379"
    },
    "2150": {
      "op": "PUSH1",
      "value": "0x68"
    },
    "2152": {
      "op": "SHL"
    },
    "2153": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2155": {
      "op": "DUP3"
    },
    "2156": {
      "op": "ADD"
    },
    "2157": {
      "op": "MSTORE"
    },
    "2158": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2160": {
      "op": "ADD"
    },
    "2161": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x360"
    },
    "2164": {
      "op": "JUMP"
    },
    "2165": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3379,
        3501
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "2166": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3523,
        3532
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 20
    },
    "2167": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3523,
        3532
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2168": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "2170": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2171": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2172": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "2173": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3522
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x3"
    },
    "2175": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "2177": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2178": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2179": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "2180": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "2182": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "DUP1",
      "path": "24"
    },
    "2183": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2184": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3514,
        3533
      ],
      "op": "KECCAK256",
      "path": "24"
    },
    "2185": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2186": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2187": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2188": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "2190": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2191": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2192": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2193": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2194": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2195": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x2"
    },
    "2197": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2198": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2199": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2200": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2201": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2202": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "2203": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP4",
      "path": "24"
    },
    "2204": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2205": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2206": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2207": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2208": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "2210": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP1",
      "path": "24"
    },
    "2211": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2212": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2213": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2214": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2215": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2216": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x5"
    },
    "2218": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2219": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2220": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2221": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2222": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2223": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x6"
    },
    "2225": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2226": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2227": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2228": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2229": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2230": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x7"
    },
    "2232": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2233": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2234": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2235": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2236": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2237": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x8"
    },
    "2239": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2240": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2241": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP6",
      "path": "24"
    },
    "2242": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2243": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2244": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x9"
    },
    "2246": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2247": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP4",
      "path": "24"
    },
    "2248": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "ADD",
      "path": "24"
    },
    "2249": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "DUP1",
      "path": "24"
    },
    "2250": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SLOAD",
      "path": "24"
    },
    "2251": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2253": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2255": {
      "op": "PUSH1",
      "value": "0xF0"
    },
    "2257": {
      "op": "SHL"
    },
    "2258": {
      "op": "SUB"
    },
    "2259": {
      "op": "NOT"
    },
    "2260": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "AND",
      "path": "24"
    },
    "2261": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2262": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3507,
        3533
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2263": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3559,
        3568
      ],
      "op": "DUP6",
      "path": "24",
      "statement": 21
    },
    "2264": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3559,
        3568
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2265": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "DUP5",
      "path": "24"
    },
    "2266": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "2267": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "2268": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2269": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "2270": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "DUP2",
      "path": "24"
    },
    "2271": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "DUP4",
      "path": "24"
    },
    "2272": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3546,
        3569
      ],
      "op": "KECCAK256",
      "path": "24"
    },
    "2273": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3539,
        3569
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "2274": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3539,
        3569
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2275": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3539,
        3569
      ],
      "op": "SWAP3",
      "path": "24"
    },
    "2276": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3539,
        3569
      ],
      "op": "SSTORE",
      "path": "24"
    },
    "2277": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3620,
        3629
      ],
      "op": "DUP4",
      "path": "24",
      "statement": 22
    },
    "2278": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3620,
        3629
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2279": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2280": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2281": {
      "op": "DUP4"
    },
    "2282": {
      "op": "DUP2"
    },
    "2283": {
      "op": "MSTORE"
    },
    "2284": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3620,
        3629
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2285": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3620,
        3629
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "2286": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3607,
        3617
      ],
      "op": "CALLER",
      "path": "24"
    },
    "2287": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3607,
        3617
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "2288": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "PUSH32",
      "path": "24",
      "value": "0x54F4A270EA08F88DC23B2520D6B063FECB24D956C4496F447926D736338F545E"
    },
    "2321": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "2322": {
      "op": "ADD"
    },
    "2323": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "2325": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "2326": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "DUP1",
      "path": "24"
    },
    "2327": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "SWAP2",
      "path": "24"
    },
    "2328": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "SUB",
      "path": "24"
    },
    "2329": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "2330": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3580,
        3638
      ],
      "op": "LOG3",
      "path": "24"
    },
    "2331": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3165,
        3643
      ],
      "op": "POP",
      "path": "24"
    },
    "2332": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "offset": [
        3165,
        3643
      ],
      "op": "POP",
      "path": "24"
    },
    "2333": {
      "fn": "PolicyPoolMock._resolvePolicy",
      "jump": "o",
      "offset": [
        3165,
        3643
      ],
      "op": "JUMP",
      "path": "24"
    },
    "2334": {
      "fn": "Policy.hash",
      "offset": [
        3551,
        3670
      ],
      "op": "JUMPDEST",
      "path": "7"
    },
    "2335": {
      "fn": "Policy.hash",
      "offset": [
        3614,
        3621
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x0"
    },
    "2337": {
      "fn": "Policy.hash",
      "offset": [
        3657,
        3663
      ],
      "op": "DUP2",
      "path": "7",
      "statement": 23
    },
    "2338": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x40"
    },
    "2340": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "MLOAD",
      "path": "7"
    },
    "2341": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x20"
    },
    "2343": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "ADD",
      "path": "7"
    },
    "2344": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH2",
      "path": "7",
      "value": "0x931"
    },
    "2347": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "SWAP2",
      "path": "7"
    },
    "2348": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "SWAP1",
      "path": "7"
    },
    "2349": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH2",
      "path": "7",
      "value": "0xBE5"
    },
    "2352": {
      "fn": "Policy.hash",
      "jump": "i",
      "offset": [
        3646,
        3664
      ],
      "op": "JUMP",
      "path": "7"
    },
    "2353": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "JUMPDEST",
      "path": "7"
    },
    "2354": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x40"
    },
    "2356": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "MLOAD",
      "path": "7"
    },
    "2357": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x20"
    },
    "2359": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "DUP2",
      "path": "7"
    },
    "2360": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "DUP4",
      "path": "7"
    },
    "2361": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "SUB",
      "path": "7"
    },
    "2362": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "SUB",
      "path": "7"
    },
    "2363": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "DUP2",
      "path": "7"
    },
    "2364": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "MSTORE",
      "path": "7"
    },
    "2365": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "SWAP1",
      "path": "7"
    },
    "2366": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x40"
    },
    "2368": {
      "fn": "Policy.hash",
      "offset": [
        3646,
        3664
      ],
      "op": "MSTORE",
      "path": "7"
    },
    "2369": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "DUP1",
      "path": "7"
    },
    "2370": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "MLOAD",
      "path": "7"
    },
    "2371": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "SWAP1",
      "path": "7"
    },
    "2372": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "PUSH1",
      "path": "7",
      "value": "0x20"
    },
    "2374": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "ADD",
      "path": "7"
    },
    "2375": {
      "fn": "Policy.hash",
      "offset": [
        3636,
        3665
      ],
      "op": "KECCAK256",
      "path": "7"
    },
    "2376": {
      "fn": "Policy.hash",
      "offset": [
        3629,
        3665
      ],
      "op": "SWAP1",
      "path": "7"
    },
    "2377": {
      "fn": "Policy.hash",
      "offset": [
        3629,
        3665
      ],
      "op": "POP",
      "path": "7"
    },
    "2378": {
      "fn": "Policy.hash",
      "offset": [
        3551,
        3670
      ],
      "op": "SWAP2",
      "path": "7"
    },
    "2379": {
      "fn": "Policy.hash",
      "offset": [
        3551,
        3670
      ],
      "op": "SWAP1",
      "path": "7"
    },
    "2380": {
      "fn": "Policy.hash",
      "offset": [
        3551,
        3670
      ],
      "op": "POP",
      "path": "7"
    },
    "2381": {
      "fn": "Policy.hash",
      "jump": "o",
      "offset": [
        3551,
        3670
      ],
      "op": "JUMP",
      "path": "7"
    },
    "2382": {
      "op": "JUMPDEST"
    },
    "2383": {
      "op": "DUP1"
    },
    "2384": {
      "op": "CALLDATALOAD"
    },
    "2385": {
      "op": "PUSH2",
      "value": "0x959"
    },
    "2388": {
      "op": "DUP2"
    },
    "2389": {
      "op": "PUSH2",
      "value": "0xCE9"
    },
    "2392": {
      "jump": "i",
      "op": "JUMP"
    },
    "2393": {
      "op": "JUMPDEST"
    },
    "2394": {
      "op": "SWAP2"
    },
    "2395": {
      "op": "SWAP1"
    },
    "2396": {
      "op": "POP"
    },
    "2397": {
      "jump": "o",
      "op": "JUMP"
    },
    "2398": {
      "op": "JUMPDEST"
    },
    "2399": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2401": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2404": {
      "op": "DUP3"
    },
    "2405": {
      "op": "DUP5"
    },
    "2406": {
      "op": "SUB"
    },
    "2407": {
      "op": "SLT"
    },
    "2408": {
      "op": "ISZERO"
    },
    "2409": {
      "op": "PUSH2",
      "value": "0x971"
    },
    "2412": {
      "op": "JUMPI"
    },
    "2413": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2415": {
      "op": "DUP1"
    },
    "2416": {
      "op": "REVERT"
    },
    "2417": {
      "op": "JUMPDEST"
    },
    "2418": {
      "op": "POP"
    },
    "2419": {
      "op": "SWAP2"
    },
    "2420": {
      "op": "SWAP1"
    },
    "2421": {
      "op": "POP"
    },
    "2422": {
      "jump": "o",
      "op": "JUMP"
    },
    "2423": {
      "op": "JUMPDEST"
    },
    "2424": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2426": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2429": {
      "op": "DUP3"
    },
    "2430": {
      "op": "DUP5"
    },
    "2431": {
      "op": "SUB"
    },
    "2432": {
      "op": "SLT"
    },
    "2433": {
      "op": "ISZERO"
    },
    "2434": {
      "op": "PUSH2",
      "value": "0x98A"
    },
    "2437": {
      "op": "JUMPI"
    },
    "2438": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2440": {
      "op": "DUP1"
    },
    "2441": {
      "op": "REVERT"
    },
    "2442": {
      "op": "JUMPDEST"
    },
    "2443": {
      "op": "PUSH2",
      "value": "0x992"
    },
    "2446": {
      "op": "PUSH2",
      "value": "0xC8B"
    },
    "2449": {
      "jump": "i",
      "op": "JUMP"
    },
    "2450": {
      "op": "JUMPDEST"
    },
    "2451": {
      "op": "SWAP1"
    },
    "2452": {
      "op": "POP"
    },
    "2453": {
      "op": "DUP2"
    },
    "2454": {
      "op": "CALLDATALOAD"
    },
    "2455": {
      "op": "DUP2"
    },
    "2456": {
      "op": "MSTORE"
    },
    "2457": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2459": {
      "op": "DUP3"
    },
    "2460": {
      "op": "ADD"
    },
    "2461": {
      "op": "CALLDATALOAD"
    },
    "2462": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2464": {
      "op": "DUP3"
    },
    "2465": {
      "op": "ADD"
    },
    "2466": {
      "op": "MSTORE"
    },
    "2467": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2469": {
      "op": "DUP3"
    },
    "2470": {
      "op": "ADD"
    },
    "2471": {
      "op": "CALLDATALOAD"
    },
    "2472": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2474": {
      "op": "DUP3"
    },
    "2475": {
      "op": "ADD"
    },
    "2476": {
      "op": "MSTORE"
    },
    "2477": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "2479": {
      "op": "DUP3"
    },
    "2480": {
      "op": "ADD"
    },
    "2481": {
      "op": "CALLDATALOAD"
    },
    "2482": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "2484": {
      "op": "DUP3"
    },
    "2485": {
      "op": "ADD"
    },
    "2486": {
      "op": "MSTORE"
    },
    "2487": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "2489": {
      "op": "DUP3"
    },
    "2490": {
      "op": "ADD"
    },
    "2491": {
      "op": "CALLDATALOAD"
    },
    "2492": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "2494": {
      "op": "DUP3"
    },
    "2495": {
      "op": "ADD"
    },
    "2496": {
      "op": "MSTORE"
    },
    "2497": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2499": {
      "op": "DUP3"
    },
    "2500": {
      "op": "ADD"
    },
    "2501": {
      "op": "CALLDATALOAD"
    },
    "2502": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2504": {
      "op": "DUP3"
    },
    "2505": {
      "op": "ADD"
    },
    "2506": {
      "op": "MSTORE"
    },
    "2507": {
      "op": "PUSH1",
      "value": "0xC0"
    },
    "2509": {
      "op": "DUP3"
    },
    "2510": {
      "op": "ADD"
    },
    "2511": {
      "op": "CALLDATALOAD"
    },
    "2512": {
      "op": "PUSH1",
      "value": "0xC0"
    },
    "2514": {
      "op": "DUP3"
    },
    "2515": {
      "op": "ADD"
    },
    "2516": {
      "op": "MSTORE"
    },
    "2517": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2519": {
      "op": "DUP3"
    },
    "2520": {
      "op": "ADD"
    },
    "2521": {
      "op": "CALLDATALOAD"
    },
    "2522": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2524": {
      "op": "DUP3"
    },
    "2525": {
      "op": "ADD"
    },
    "2526": {
      "op": "MSTORE"
    },
    "2527": {
      "op": "PUSH2",
      "value": "0x100"
    },
    "2530": {
      "op": "DUP1"
    },
    "2531": {
      "op": "DUP4"
    },
    "2532": {
      "op": "ADD"
    },
    "2533": {
      "op": "CALLDATALOAD"
    },
    "2534": {
      "op": "DUP2"
    },
    "2535": {
      "op": "DUP4"
    },
    "2536": {
      "op": "ADD"
    },
    "2537": {
      "op": "MSTORE"
    },
    "2538": {
      "op": "POP"
    },
    "2539": {
      "op": "PUSH2",
      "value": "0x120"
    },
    "2542": {
      "op": "PUSH2",
      "value": "0x9F8"
    },
    "2545": {
      "op": "DUP2"
    },
    "2546": {
      "op": "DUP5"
    },
    "2547": {
      "op": "ADD"
    },
    "2548": {
      "op": "PUSH2",
      "value": "0x94E"
    },
    "2551": {
      "jump": "i",
      "op": "JUMP"
    },
    "2552": {
      "op": "JUMPDEST"
    },
    "2553": {
      "op": "SWAP1"
    },
    "2554": {
      "op": "DUP3"
    },
    "2555": {
      "op": "ADD"
    },
    "2556": {
      "op": "MSTORE"
    },
    "2557": {
      "op": "PUSH2",
      "value": "0x140"
    },
    "2560": {
      "op": "PUSH2",
      "value": "0xA0A"
    },
    "2563": {
      "op": "DUP4"
    },
    "2564": {
      "op": "DUP3"
    },
    "2565": {
      "op": "ADD"
    },
    "2566": {
      "op": "PUSH2",
      "value": "0xA26"
    },
    "2569": {
      "jump": "i",
      "op": "JUMP"
    },
    "2570": {
      "op": "JUMPDEST"
    },
    "2571": {
      "op": "SWAP1"
    },
    "2572": {
      "op": "DUP3"
    },
    "2573": {
      "op": "ADD"
    },
    "2574": {
      "op": "MSTORE"
    },
    "2575": {
      "op": "PUSH2",
      "value": "0x160"
    },
    "2578": {
      "op": "PUSH2",
      "value": "0xA1C"
    },
    "2581": {
      "op": "DUP4"
    },
    "2582": {
      "op": "DUP3"
    },
    "2583": {
      "op": "ADD"
    },
    "2584": {
      "op": "PUSH2",
      "value": "0xA26"
    },
    "2587": {
      "jump": "i",
      "op": "JUMP"
    },
    "2588": {
      "op": "JUMPDEST"
    },
    "2589": {
      "op": "SWAP1"
    },
    "2590": {
      "op": "DUP3"
    },
    "2591": {
      "op": "ADD"
    },
    "2592": {
      "op": "MSTORE"
    },
    "2593": {
      "op": "SWAP3"
    },
    "2594": {
      "op": "SWAP2"
    },
    "2595": {
      "op": "POP"
    },
    "2596": {
      "op": "POP"
    },
    "2597": {
      "jump": "o",
      "op": "JUMP"
    },
    "2598": {
      "op": "JUMPDEST"
    },
    "2599": {
      "op": "DUP1"
    },
    "2600": {
      "op": "CALLDATALOAD"
    },
    "2601": {
      "op": "PUSH5",
      "value": "0xFFFFFFFFFF"
    },
    "2607": {
      "op": "DUP2"
    },
    "2608": {
      "op": "AND"
    },
    "2609": {
      "op": "DUP2"
    },
    "2610": {
      "op": "EQ"
    },
    "2611": {
      "op": "PUSH2",
      "value": "0x959"
    },
    "2614": {
      "op": "JUMPI"
    },
    "2615": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2617": {
      "op": "DUP1"
    },
    "2618": {
      "op": "REVERT"
    },
    "2619": {
      "op": "JUMPDEST"
    },
    "2620": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2622": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2624": {
      "op": "DUP3"
    },
    "2625": {
      "op": "DUP5"
    },
    "2626": {
      "op": "SUB"
    },
    "2627": {
      "op": "SLT"
    },
    "2628": {
      "op": "ISZERO"
    },
    "2629": {
      "op": "PUSH2",
      "value": "0xA4D"
    },
    "2632": {
      "op": "JUMPI"
    },
    "2633": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2635": {
      "op": "DUP1"
    },
    "2636": {
      "op": "REVERT"
    },
    "2637": {
      "op": "JUMPDEST"
    },
    "2638": {
      "op": "DUP2"
    },
    "2639": {
      "op": "MLOAD"
    },
    "2640": {
      "op": "PUSH2",
      "value": "0xA58"
    },
    "2643": {
      "op": "DUP2"
    },
    "2644": {
      "op": "PUSH2",
      "value": "0xCFE"
    },
    "2647": {
      "jump": "i",
      "op": "JUMP"
    },
    "2648": {
      "op": "JUMPDEST"
    },
    "2649": {
      "op": "SWAP4"
    },
    "2650": {
      "op": "SWAP3"
    },
    "2651": {
      "op": "POP"
    },
    "2652": {
      "op": "POP"
    },
    "2653": {
      "op": "POP"
    },
    "2654": {
      "jump": "o",
      "op": "JUMP"
    },
    "2655": {
      "op": "JUMPDEST"
    },
    "2656": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2658": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2660": {
      "op": "DUP3"
    },
    "2661": {
      "op": "DUP5"
    },
    "2662": {
      "op": "SUB"
    },
    "2663": {
      "op": "SLT"
    },
    "2664": {
      "op": "ISZERO"
    },
    "2665": {
      "op": "PUSH2",
      "value": "0xA71"
    },
    "2668": {
      "op": "JUMPI"
    },
    "2669": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2671": {
      "op": "DUP1"
    },
    "2672": {
      "op": "REVERT"
    },
    "2673": {
      "op": "JUMPDEST"
    },
    "2674": {
      "op": "DUP2"
    },
    "2675": {
      "op": "CALLDATALOAD"
    },
    "2676": {
      "op": "PUSH2",
      "value": "0xA58"
    },
    "2679": {
      "op": "DUP2"
    },
    "2680": {
      "op": "PUSH2",
      "value": "0xCE9"
    },
    "2683": {
      "jump": "i",
      "op": "JUMP"
    },
    "2684": {
      "op": "JUMPDEST"
    },
    "2685": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2687": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2689": {
      "op": "DUP3"
    },
    "2690": {
      "op": "DUP5"
    },
    "2691": {
      "op": "SUB"
    },
    "2692": {
      "op": "SLT"
    },
    "2693": {
      "op": "ISZERO"
    },
    "2694": {
      "op": "PUSH2",
      "value": "0xA8E"
    },
    "2697": {
      "op": "JUMPI"
    },
    "2698": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2700": {
      "op": "DUP1"
    },
    "2701": {
      "op": "REVERT"
    },
    "2702": {
      "op": "JUMPDEST"
    },
    "2703": {
      "op": "DUP2"
    },
    "2704": {
      "op": "MLOAD"
    },
    "2705": {
      "op": "PUSH2",
      "value": "0xA58"
    },
    "2708": {
      "op": "DUP2"
    },
    "2709": {
      "op": "PUSH2",
      "value": "0xCE9"
    },
    "2712": {
      "jump": "i",
      "op": "JUMP"
    },
    "2713": {
      "op": "JUMPDEST"
    },
    "2714": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2716": {
      "op": "DUP1"
    },
    "2717": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2719": {
      "op": "DUP4"
    },
    "2720": {
      "op": "DUP6"
    },
    "2721": {
      "op": "SUB"
    },
    "2722": {
      "op": "SLT"
    },
    "2723": {
      "op": "ISZERO"
    },
    "2724": {
      "op": "PUSH2",
      "value": "0xAAC"
    },
    "2727": {
      "op": "JUMPI"
    },
    "2728": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2730": {
      "op": "DUP1"
    },
    "2731": {
      "op": "REVERT"
    },
    "2732": {
      "op": "JUMPDEST"
    },
    "2733": {
      "op": "DUP3"
    },
    "2734": {
      "op": "CALLDATALOAD"
    },
    "2735": {
      "op": "PUSH2",
      "value": "0xAB7"
    },
    "2738": {
      "op": "DUP2"
    },
    "2739": {
      "op": "PUSH2",
      "value": "0xCE9"
    },
    "2742": {
      "jump": "i",
      "op": "JUMP"
    },
    "2743": {
      "op": "JUMPDEST"
    },
    "2744": {
      "op": "SWAP5"
    },
    "2745": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2747": {
      "op": "SWAP4"
    },
    "2748": {
      "op": "SWAP1"
    },
    "2749": {
      "op": "SWAP4"
    },
    "2750": {
      "op": "ADD"
    },
    "2751": {
      "op": "CALLDATALOAD"
    },
    "2752": {
      "op": "SWAP4"
    },
    "2753": {
      "op": "POP"
    },
    "2754": {
      "op": "POP"
    },
    "2755": {
      "op": "POP"
    },
    "2756": {
      "jump": "o",
      "op": "JUMP"
    },
    "2757": {
      "op": "JUMPDEST"
    },
    "2758": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2760": {
      "op": "DUP1"
    },
    "2761": {
      "op": "PUSH2",
      "value": "0x1A0"
    },
    "2764": {
      "op": "DUP4"
    },
    "2765": {
      "op": "DUP6"
    },
    "2766": {
      "op": "SUB"
    },
    "2767": {
      "op": "SLT"
    },
    "2768": {
      "op": "ISZERO"
    },
    "2769": {
      "op": "PUSH2",
      "value": "0xAD9"
    },
    "2772": {
      "op": "JUMPI"
    },
    "2773": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2775": {
      "op": "DUP1"
    },
    "2776": {
      "op": "REVERT"
    },
    "2777": {
      "op": "JUMPDEST"
    },
    "2778": {
      "op": "PUSH2",
      "value": "0xAE3"
    },
    "2781": {
      "op": "DUP5"
    },
    "2782": {
      "op": "DUP5"
    },
    "2783": {
      "op": "PUSH2",
      "value": "0x95E"
    },
    "2786": {
      "jump": "i",
      "op": "JUMP"
    },
    "2787": {
      "op": "JUMPDEST"
    },
    "2788": {
      "op": "SWAP2"
    },
    "2789": {
      "op": "POP"
    },
    "2790": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2793": {
      "op": "DUP4"
    },
    "2794": {
      "op": "ADD"
    },
    "2795": {
      "op": "CALLDATALOAD"
    },
    "2796": {
      "op": "PUSH2",
      "value": "0xAF4"
    },
    "2799": {
      "op": "DUP2"
    },
    "2800": {
      "op": "PUSH2",
      "value": "0xCFE"
    },
    "2803": {
      "jump": "i",
      "op": "JUMP"
    },
    "2804": {
      "op": "JUMPDEST"
    },
    "2805": {
      "op": "DUP1"
    },
    "2806": {
      "op": "SWAP2"
    },
    "2807": {
      "op": "POP"
    },
    "2808": {
      "op": "POP"
    },
    "2809": {
      "op": "SWAP3"
    },
    "2810": {
      "op": "POP"
    },
    "2811": {
      "op": "SWAP3"
    },
    "2812": {
      "op": "SWAP1"
    },
    "2813": {
      "op": "POP"
    },
    "2814": {
      "jump": "o",
      "op": "JUMP"
    },
    "2815": {
      "op": "JUMPDEST"
    },
    "2816": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2818": {
      "op": "DUP1"
    },
    "2819": {
      "op": "PUSH2",
      "value": "0x1A0"
    },
    "2822": {
      "op": "DUP4"
    },
    "2823": {
      "op": "DUP6"
    },
    "2824": {
      "op": "SUB"
    },
    "2825": {
      "op": "SLT"
    },
    "2826": {
      "op": "ISZERO"
    },
    "2827": {
      "op": "PUSH2",
      "value": "0xB13"
    },
    "2830": {
      "op": "JUMPI"
    },
    "2831": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2833": {
      "op": "DUP1"
    },
    "2834": {
      "op": "REVERT"
    },
    "2835": {
      "op": "JUMPDEST"
    },
    "2836": {
      "op": "PUSH2",
      "value": "0xB1D"
    },
    "2839": {
      "op": "DUP5"
    },
    "2840": {
      "op": "DUP5"
    },
    "2841": {
      "op": "PUSH2",
      "value": "0x95E"
    },
    "2844": {
      "jump": "i",
      "op": "JUMP"
    },
    "2845": {
      "op": "JUMPDEST"
    },
    "2846": {
      "op": "SWAP5"
    },
    "2847": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2850": {
      "op": "SWAP4"
    },
    "2851": {
      "op": "SWAP1"
    },
    "2852": {
      "op": "SWAP4"
    },
    "2853": {
      "op": "ADD"
    },
    "2854": {
      "op": "CALLDATALOAD"
    },
    "2855": {
      "op": "SWAP4"
    },
    "2856": {
      "op": "POP"
    },
    "2857": {
      "op": "POP"
    },
    "2858": {
      "op": "POP"
    },
    "2859": {
      "jump": "o",
      "op": "JUMP"
    },
    "2860": {
      "op": "JUMPDEST"
    },
    "2861": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2863": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2866": {
      "op": "DUP3"
    },
    "2867": {
      "op": "DUP5"
    },
    "2868": {
      "op": "SUB"
    },
    "2869": {
      "op": "SLT"
    },
    "2870": {
      "op": "ISZERO"
    },
    "2871": {
      "op": "PUSH2",
      "value": "0xB3F"
    },
    "2874": {
      "op": "JUMPI"
    },
    "2875": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2877": {
      "op": "DUP1"
    },
    "2878": {
      "op": "REVERT"
    },
    "2879": {
      "op": "JUMPDEST"
    },
    "2880": {
      "op": "PUSH2",
      "value": "0xA58"
    },
    "2883": {
      "op": "DUP4"
    },
    "2884": {
      "op": "DUP4"
    },
    "2885": {
      "op": "PUSH2",
      "value": "0x977"
    },
    "2888": {
      "jump": "i",
      "op": "JUMP"
    },
    "2889": {
      "op": "JUMPDEST"
    },
    "2890": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2892": {
      "op": "DUP1"
    },
    "2893": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2895": {
      "op": "PUSH2",
      "value": "0x1C0"
    },
    "2898": {
      "op": "DUP5"
    },
    "2899": {
      "op": "DUP7"
    },
    "2900": {
      "op": "SUB"
    },
    "2901": {
      "op": "SLT"
    },
    "2902": {
      "op": "ISZERO"
    },
    "2903": {
      "op": "PUSH2",
      "value": "0xB5F"
    },
    "2906": {
      "op": "JUMPI"
    },
    "2907": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2909": {
      "op": "DUP1"
    },
    "2910": {
      "op": "REVERT"
    },
    "2911": {
      "op": "JUMPDEST"
    },
    "2912": {
      "op": "PUSH2",
      "value": "0xB69"
    },
    "2915": {
      "op": "DUP6"
    },
    "2916": {
      "op": "DUP6"
    },
    "2917": {
      "op": "PUSH2",
      "value": "0x977"
    },
    "2920": {
      "jump": "i",
      "op": "JUMP"
    },
    "2921": {
      "op": "JUMPDEST"
    },
    "2922": {
      "op": "SWAP3"
    },
    "2923": {
      "op": "POP"
    },
    "2924": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "2927": {
      "op": "DUP5"
    },
    "2928": {
      "op": "ADD"
    },
    "2929": {
      "op": "CALLDATALOAD"
    },
    "2930": {
      "op": "PUSH2",
      "value": "0xB7A"
    },
    "2933": {
      "op": "DUP2"
    },
    "2934": {
      "op": "PUSH2",
      "value": "0xCE9"
    },
    "2937": {
      "jump": "i",
      "op": "JUMP"
    },
    "2938": {
      "op": "JUMPDEST"
    },
    "2939": {
      "op": "SWAP2"
    },
    "2940": {
      "op": "POP"
    },
    "2941": {
      "op": "PUSH2",
      "value": "0x1A0"
    },
    "2944": {
      "op": "DUP5"
    },
    "2945": {
      "op": "ADD"
    },
    "2946": {
      "op": "CALLDATALOAD"
    },
    "2947": {
      "op": "PUSH12",
      "value": "0xFFFFFFFFFFFFFFFFFFFFFFFF"
    },
    "2960": {
      "op": "DUP2"
    },
    "2961": {
      "op": "AND"
    },
    "2962": {
      "op": "DUP2"
    },
    "2963": {
      "op": "EQ"
    },
    "2964": {
      "op": "PUSH2",
      "value": "0xB9C"
    },
    "2967": {
      "op": "JUMPI"
    },
    "2968": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2970": {
      "op": "DUP1"
    },
    "2971": {
      "op": "REVERT"
    },
    "2972": {
      "op": "JUMPDEST"
    },
    "2973": {
      "op": "DUP1"
    },
    "2974": {
      "op": "SWAP2"
    },
    "2975": {
      "op": "POP"
    },
    "2976": {
      "op": "POP"
    },
    "2977": {
      "op": "SWAP3"
    },
    "2978": {
      "op": "POP"
    },
    "2979": {
      "op": "SWAP3"
    },
    "2980": {
      "op": "POP"
    },
    "2981": {
      "op": "SWAP3"
    },
    "2982": {
      "jump": "o",
      "op": "JUMP"
    },
    "2983": {
      "op": "JUMPDEST"
    },
    "2984": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2986": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2988": {
      "op": "DUP3"
    },
    "2989": {
      "op": "DUP5"
    },
    "2990": {
      "op": "SUB"
    },
    "2991": {
      "op": "SLT"
    },
    "2992": {
      "op": "ISZERO"
    },
    "2993": {
      "op": "PUSH2",
      "value": "0xBB9"
    },
    "2996": {
      "op": "JUMPI"
    },
    "2997": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2999": {
      "op": "DUP1"
    },
    "3000": {
      "op": "REVERT"
    },
    "3001": {
      "op": "JUMPDEST"
    },
    "3002": {
      "op": "POP"
    },
    "3003": {
      "op": "CALLDATALOAD"
    },
    "3004": {
      "op": "SWAP2"
    },
    "3005": {
      "op": "SWAP1"
    },
    "3006": {
      "op": "POP"
    },
    "3007": {
      "jump": "o",
      "op": "JUMP"
    },
    "3008": {
      "op": "JUMPDEST"
    },
    "3009": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3011": {
      "op": "DUP1"
    },
    "3012": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3014": {
      "op": "DUP4"
    },
    "3015": {
      "op": "DUP6"
    },
    "3016": {
      "op": "SUB"
    },
    "3017": {
      "op": "SLT"
    },
    "3018": {
      "op": "ISZERO"
    },
    "3019": {
      "op": "PUSH2",
      "value": "0xBD3"
    },
    "3022": {
      "op": "JUMPI"
    },
    "3023": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3025": {
      "op": "DUP1"
    },
    "3026": {
      "op": "REVERT"
    },
    "3027": {
      "op": "JUMPDEST"
    },
    "3028": {
      "op": "DUP3"
    },
    "3029": {
      "op": "CALLDATALOAD"
    },
    "3030": {
      "op": "SWAP2"
    },
    "3031": {
      "op": "POP"
    },
    "3032": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3034": {
      "op": "DUP4"
    },
    "3035": {
      "op": "ADD"
    },
    "3036": {
      "op": "CALLDATALOAD"
    },
    "3037": {
      "op": "PUSH2",
      "value": "0xAF4"
    },
    "3040": {
      "op": "DUP2"
    },
    "3041": {
      "op": "PUSH2",
      "value": "0xCFE"
    },
    "3044": {
      "jump": "i",
      "op": "JUMP"
    },
    "3045": {
      "op": "JUMPDEST"
    },
    "3046": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3048": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "3051": {
      "op": "DUP3"
    },
    "3052": {
      "op": "ADD"
    },
    "3053": {
      "op": "SWAP1"
    },
    "3054": {
      "op": "POP"
    },
    "3055": {
      "op": "DUP3"
    },
    "3056": {
      "op": "MLOAD"
    },
    "3057": {
      "op": "DUP3"
    },
    "3058": {
      "op": "MSTORE"
    },
    "3059": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3061": {
      "op": "DUP4"
    },
    "3062": {
      "op": "ADD"
    },
    "3063": {
      "op": "MLOAD"
    },
    "3064": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3066": {
      "op": "DUP4"
    },
    "3067": {
      "op": "ADD"
    },
    "3068": {
      "op": "MSTORE"
    },
    "3069": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3071": {
      "op": "DUP4"
    },
    "3072": {
      "op": "ADD"
    },
    "3073": {
      "op": "MLOAD"
    },
    "3074": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3076": {
      "op": "DUP4"
    },
    "3077": {
      "op": "ADD"
    },
    "3078": {
      "op": "MSTORE"
    },
    "3079": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3081": {
      "op": "DUP4"
    },
    "3082": {
      "op": "ADD"
    },
    "3083": {
      "op": "MLOAD"
    },
    "3084": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3086": {
      "op": "DUP4"
    },
    "3087": {
      "op": "ADD"
    },
    "3088": {
      "op": "MSTORE"
    },
    "3089": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3091": {
      "op": "DUP4"
    },
    "3092": {
      "op": "ADD"
    },
    "3093": {
      "op": "MLOAD"
    },
    "3094": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3096": {
      "op": "DUP4"
    },
    "3097": {
      "op": "ADD"
    },
    "3098": {
      "op": "MSTORE"
    },
    "3099": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3101": {
      "op": "DUP4"
    },
    "3102": {
      "op": "ADD"
    },
    "3103": {
      "op": "MLOAD"
    },
    "3104": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3106": {
      "op": "DUP4"
    },
    "3107": {
      "op": "ADD"
    },
    "3108": {
      "op": "MSTORE"
    },
    "3109": {
      "op": "PUSH1",
      "value": "0xC0"
    },
    "3111": {
      "op": "DUP4"
    },
    "3112": {
      "op": "ADD"
    },
    "3113": {
      "op": "MLOAD"
    },
    "3114": {
      "op": "PUSH1",
      "value": "0xC0"
    },
    "3116": {
      "op": "DUP4"
    },
    "3117": {
      "op": "ADD"
    },
    "3118": {
      "op": "MSTORE"
    },
    "3119": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3121": {
      "op": "DUP4"
    },
    "3122": {
      "op": "ADD"
    },
    "3123": {
      "op": "MLOAD"
    },
    "3124": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3126": {
      "op": "DUP4"
    },
    "3127": {
      "op": "ADD"
    },
    "3128": {
      "op": "MSTORE"
    },
    "3129": {
      "op": "PUSH2",
      "value": "0x100"
    },
    "3132": {
      "op": "DUP1"
    },
    "3133": {
      "op": "DUP5"
    },
    "3134": {
      "op": "ADD"
    },
    "3135": {
      "op": "MLOAD"
    },
    "3136": {
      "op": "DUP2"
    },
    "3137": {
      "op": "DUP5"
    },
    "3138": {
      "op": "ADD"
    },
    "3139": {
      "op": "MSTORE"
    },
    "3140": {
      "op": "POP"
    },
    "3141": {
      "op": "PUSH2",
      "value": "0x120"
    },
    "3144": {
      "op": "DUP1"
    },
    "3145": {
      "op": "DUP5"
    },
    "3146": {
      "op": "ADD"
    },
    "3147": {
      "op": "MLOAD"
    },
    "3148": {
      "op": "PUSH2",
      "value": "0xC5F"
    },
    "3151": {
      "op": "DUP3"
    },
    "3152": {
      "op": "DUP6"
    },
    "3153": {
      "op": "ADD"
    },
    "3154": {
      "op": "DUP3"
    },
    "3155": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3157": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3159": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3161": {
      "op": "SHL"
    },
    "3162": {
      "op": "SUB"
    },
    "3163": {
      "op": "AND"
    },
    "3164": {
      "op": "SWAP1"
    },
    "3165": {
      "op": "MSTORE"
    },
    "3166": {
      "op": "JUMP"
    },
    "3167": {
      "op": "JUMPDEST"
    },
    "3168": {
      "op": "POP"
    },
    "3169": {
      "op": "POP"
    },
    "3170": {
      "op": "PUSH2",
      "value": "0x140"
    },
    "3173": {
      "op": "DUP4"
    },
    "3174": {
      "op": "DUP2"
    },
    "3175": {
      "op": "ADD"
    },
    "3176": {
      "op": "MLOAD"
    },
    "3177": {
      "op": "PUSH5",
      "value": "0xFFFFFFFFFF"
    },
    "3183": {
      "op": "SWAP1"
    },
    "3184": {
      "op": "DUP2"
    },
    "3185": {
      "op": "AND"
    },
    "3186": {
      "op": "SWAP2"
    },
    "3187": {
      "op": "DUP5"
    },
    "3188": {
      "op": "ADD"
    },
    "3189": {
      "op": "SWAP2"
    },
    "3190": {
      "op": "SWAP1"
    },
    "3191": {
      "op": "SWAP2"
    },
    "3192": {
      "op": "MSTORE"
    },
    "3193": {
      "op": "PUSH2",
      "value": "0x160"
    },
    "3196": {
      "op": "SWAP4"
    },
    "3197": {
      "op": "DUP5"
    },
    "3198": {
      "op": "ADD"
    },
    "3199": {
      "op": "MLOAD"
    },
    "3200": {
      "op": "AND"
    },
    "3201": {
      "op": "SWAP3"
    },
    "3202": {
      "op": "SWAP1"
    },
    "3203": {
      "op": "SWAP2"
    },
    "3204": {
      "op": "ADD"
    },
    "3205": {
      "op": "SWAP2"
    },
    "3206": {
      "op": "SWAP1"
    },
    "3207": {
      "op": "SWAP2"
    },
    "3208": {
      "op": "MSTORE"
    },
    "3209": {
      "op": "SWAP1"
    },
    "3210": {
      "jump": "o",
      "op": "JUMP"
    },
    "3211": {
      "op": "JUMPDEST"
    },
    "3212": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3214": {
      "op": "MLOAD"
    },
    "3215": {
      "op": "PUSH2",
      "value": "0x180"
    },
    "3218": {
      "op": "DUP2"
    },
    "3219": {
      "op": "ADD"
    },
    "3220": {
      "op": "PUSH8",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "3229": {
      "op": "DUP2"
    },
    "3230": {
      "op": "GT"
    },
    "3231": {
      "op": "DUP3"
    },
    "3232": {
      "op": "DUP3"
    },
    "3233": {
      "op": "LT"
    },
    "3234": {
      "op": "OR"
    },
    "3235": {
      "op": "ISZERO"
    },
    "3236": {
      "op": "PUSH2",
      "value": "0xCBD"
    },
    "3239": {
      "op": "JUMPI"
    },
    "3240": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3245": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3247": {
      "op": "SHL"
    },
    "3248": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3250": {
      "op": "MSTORE"
    },
    "3251": {
      "op": "PUSH1",
      "value": "0x41"
    },
    "3253": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "3255": {
      "op": "MSTORE"
    },
    "3256": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3258": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3260": {
      "op": "REVERT"
    },
    "3261": {
      "op": "JUMPDEST"
    },
    "3262": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3264": {
      "op": "MSTORE"
    },
    "3265": {
      "op": "SWAP1"
    },
    "3266": {
      "jump": "o",
      "op": "JUMP"
    },
    "3267": {
      "op": "JUMPDEST"
    },
    "3268": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3270": {
      "op": "DUP3"
    },
    "3271": {
      "op": "NOT"
    },
    "3272": {
      "op": "DUP3"
    },
    "3273": {
      "op": "GT"
    },
    "3274": {
      "op": "ISZERO"
    },
    "3275": {
      "op": "PUSH2",
      "value": "0xCE4"
    },
    "3278": {
      "op": "JUMPI"
    },
    "3279": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3284": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3286": {
      "op": "SHL"
    },
    "3287": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3289": {
      "op": "MSTORE"
    },
    "3290": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "3292": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "3294": {
      "op": "MSTORE"
    },
    "3295": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3297": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3299": {
      "op": "REVERT"
    },
    "3300": {
      "op": "JUMPDEST"
    },
    "3301": {
      "op": "POP"
    },
    "3302": {
      "op": "ADD"
    },
    "3303": {
      "op": "SWAP1"
    },
    "3304": {
      "jump": "o",
      "op": "JUMP"
    },
    "3305": {
      "op": "JUMPDEST"
    },
    "3306": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3308": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3310": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3312": {
      "op": "SHL"
    },
    "3313": {
      "op": "SUB"
    },
    "3314": {
      "op": "DUP2"
    },
    "3315": {
      "op": "AND"
    },
    "3316": {
      "op": "DUP2"
    },
    "3317": {
      "op": "EQ"
    },
    "3318": {
      "op": "PUSH2",
      "value": "0x66E"
    },
    "3321": {
      "op": "JUMPI"
    },
    "3322": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3324": {
      "op": "DUP1"
    },
    "3325": {
      "op": "REVERT"
    },
    "3326": {
      "op": "JUMPDEST"
    },
    "3327": {
      "op": "DUP1"
    },
    "3328": {
      "op": "ISZERO"
    },
    "3329": {
      "op": "ISZERO"
    },
    "3330": {
      "op": "DUP2"
    },
    "3331": {
      "op": "EQ"
    },
    "3332": {
      "op": "PUSH2",
      "value": "0x66E"
    },
    "3335": {
      "op": "JUMPI"
    },
    "3336": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3338": {
      "op": "DUP1"
    },
    "3339": {
      "op": "REVERT"
    }
  },
  "sha1": "9de0aa57f17b7f30b126a7d81a1bb97dd1ad982f",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IPolicyPool} from \"../../interfaces/IPolicyPool.sol\";\nimport {IRiskModule} from \"../../interfaces/IRiskModule.sol\";\nimport {IEToken} from \"../../interfaces/IEToken.sol\";\nimport {IAssetManager} from \"../../interfaces/IAssetManager.sol\";\nimport {IPolicyPoolConfig} from \"../../interfaces/IPolicyPoolConfig.sol\";\nimport {AccessControl} from \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {Policy} from \"../Policy.sol\";\nimport {ForwardProxy} from \"./ForwardProxy.sol\";\n\ncontract PolicyPoolMock is IPolicyPool {\n  using Policy for Policy.PolicyData;\n\n  uint256 public constant MAX_INT =\n    0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;\n\n  IERC20Metadata internal _currency;\n  IPolicyPoolConfig internal _config;\n\n  uint256 internal _totalETokenSupply;\n  mapping(uint256 => Policy.PolicyData) internal policies;\n  mapping(uint256 => bytes32) internal policyHashes;\n\n  event NewPolicy(IRiskModule indexed riskModule, Policy.PolicyData policy);\n  event PolicyResolved(IRiskModule indexed riskModule, uint256 indexed policyId, uint256 payout);\n\n  constructor(IERC20Metadata currency_, IPolicyPoolConfig config_) {\n    _currency = currency_;\n    _config = config_;\n    _config.connect();\n    require(\n      _config.assetManager() == IAssetManager(address(0)),\n      \"AssetManager can't be set before PolicyPool initialization\"\n    );\n    _totalETokenSupply = 1e40; // 1e22 = a lot...\n  }\n\n  function currency() external view override returns (IERC20Metadata) {\n    return _currency;\n  }\n\n  function config() external view override returns (IPolicyPoolConfig) {\n    return _config;\n  }\n\n  function policyNFT() external pure override returns (address) {\n    return address(0);\n  }\n\n  function setAssetManager(IAssetManager newAssetManager) external override {\n    require(msg.sender == address(_config), \"Only the PolicyPoolConfig can change assetManager\");\n    if (address(_config.assetManager()) != address(0)) {\n      _config.assetManager().deinvestAll(); // deInvest all assets\n      _currency.approve(address(_config.assetManager()), 0); // revoke currency management approval\n    }\n    if (address(newAssetManager) != address(0)) {\n      _currency.approve(address(newAssetManager), type(uint256).max);\n    }\n  }\n\n  function getInvestable() external pure override returns (uint256) {\n    return 0;\n  }\n\n  function getETokenCount() external pure override returns (uint256) {\n    return 0;\n  }\n\n  function getETokenAt(uint256) external pure override returns (IEToken) {\n    return IEToken(address(0));\n  }\n\n  function assetEarnings(uint256, bool) external pure override {\n    revert(\"Not Implemented\");\n  }\n\n  function newPolicy(\n    Policy.PolicyData memory policy,\n    address, /* customer */\n    uint96 internalId\n  ) external override returns (uint256) {\n    policy.id = (uint256(uint160(address(policy.riskModule))) << 96) + internalId;\n    policyHashes[policy.id] = policy.hash();\n    emit NewPolicy(IRiskModule(msg.sender), policy);\n    return policy.id;\n  }\n\n  function _resolvePolicy(Policy.PolicyData memory policy, uint256 payout) internal {\n    require(policy.id != 0, \"Policy not found\");\n    require(policy.hash() == policyHashes[policy.id], \"Hash doesn't match\");\n    require(\n      msg.sender == address(policy.riskModule),\n      \"Only riskModule is authorized to resolve the policy\"\n    );\n    delete policies[policy.id];\n    delete policyHashes[policy.id];\n    emit PolicyResolved(IRiskModule(msg.sender), policy.id, payout);\n  }\n\n  function receiveGrant(uint256) external pure override {\n    revert(\"Not Implemented\");\n  }\n\n  function resolvePolicy(Policy.PolicyData calldata policy, uint256 payout) external override {\n    _resolvePolicy(policy, payout);\n  }\n\n  function resolvePolicyFullPayout(Policy.PolicyData calldata policy, bool customerWon)\n    external\n    override\n  {\n    return _resolvePolicy(policy, customerWon ? policy.payout : 0);\n  }\n\n  function deposit(IEToken, uint256) external pure override {\n    revert(\"Not Implemented deposit\");\n  }\n\n  function withdraw(IEToken, uint256) external pure override returns (uint256) {\n    revert(\"Not Implemented withdraw\");\n  }\n\n  function setTotalETokenSupply(uint256 value) external {\n    _totalETokenSupply = value;\n  }\n\n  function totalETokenSupply() external view override returns (uint256) {\n    return _totalETokenSupply;\n  }\n}\n\n/**\n * @title PolicyPoolMockForward\n * @dev PolicyPool that forwards fallback calls to another contract. Used to simulate calls to EToken\n *      and other contracts that have functions that can be called only from PolicyPool\n */\ncontract PolicyPoolMockForward is ForwardProxy {\n  uint256 public constant MAX_INT =\n    0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;\n\n  IERC20Metadata internal _currency;\n  IPolicyPoolConfig internal _config;\n\n  constructor(\n    address forwardTo,\n    IERC20Metadata currency_,\n    IPolicyPoolConfig config_\n  ) ForwardProxy(forwardTo) {\n    _currency = currency_;\n    _config = config_;\n    _config.connect();\n  }\n\n  function currency() external view returns (IERC20Metadata) {\n    return _currency;\n  }\n\n  function config() external view returns (IPolicyPoolConfig) {\n    return _config;\n  }\n\n  function setAssetManager(IAssetManager newAssetManager) external {\n    require(msg.sender == address(_config), \"Only the PolicyPoolConfig can change assetManager\");\n    if (address(_config.assetManager()) != address(0)) {\n      _config.assetManager().deinvestAll(); // deInvest all assets\n      _currency.approve(address(_config.assetManager()), 0); // revoke currency management approval\n    }\n    if (address(newAssetManager) != address(0)) {\n      _currency.approve(address(newAssetManager), type(uint256).max);\n    }\n  }\n\n  // solhint-disable-next-line no-empty-blocks\n  function assetEarnings(uint256 amount, bool positive) external {}\n\n  function getInvestable() external view returns (uint256) {\n    return _currency.balanceOf(address(this));\n  }\n\n  function getETokenCount() external pure returns (uint256) {\n    return 0;\n  }\n\n  function getETokenAt(uint256) external pure returns (IEToken) {\n    return IEToken(address(0));\n  }\n}\n",
  "sourceMap": "648:3856:24:-:0;;;1243:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1314:9;:21;;-1:-1:-1;;;;;1314:21:24;;;-1:-1:-1;;;;;;1314:21:24;;;;;;;1341:17;;;;;;;;;;;;;;1364;;;-1:-1:-1;;;1364:17:24;;;;1341;;1364:15;;:17;;;;;;;;;;1314:9;1341:17;1364;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1402:7:24;;:22;;;-1:-1:-1;;;1402:22:24;;;;1450:1;;-1:-1:-1;;;;;;1402:7:24;;;;-1:-1:-1;1402:20:24;;:22;;;;;;;;;;;;;;:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1402:51:24;;1387:140;;;;-1:-1:-1;;;1387:140:24;;981:2:114;1387:140:24;;;963:21:114;1020:2;1000:18;;;993:30;1059:34;1039:18;;;1032:62;1130:28;1110:18;;;1103:56;1176:19;;1387:140:24;;;;;;;;-1:-1:-1;;1554:4:24;1533:18;:25;648:3856;;14:289:114;107:6;160:2;148:9;139:7;135:23;131:32;128:2;;;176:1;173;166:12;128:2;208:9;202:16;227:46;267:5;227:46;:::i;:::-;292:5;118:185;-1:-1:-1;;;118:185:114:o;308:466::-;438:6;446;499:2;487:9;478:7;474:23;470:32;467:2;;;515:1;512;505:12;467:2;547:9;541:16;566:46;606:5;566:46;:::i;:::-;681:2;666:18;;660:25;631:5;;-1:-1:-1;694:48:114;660:25;694:48;:::i;:::-;761:7;751:17;;;457:317;;;;;:::o;1206:146::-;-1:-1:-1;;;;;1296:31:114;;1286:42;;1276:2;;1342:1;1339;1332:12;1276:2;1266:86;:::o;:::-;648:3856:24;;;;;;",
  "sourcePath": "contracts/mocks/PolicyPoolMock.sol",
  "type": "contract"
}