{
  "contractName": "CEGActor",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "assetRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IDataRegistry",
          "name": "dataRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum ContractType",
          "name": "contractType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        }
      ],
      "name": "InitializedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "payoff",
          "type": "int256"
        }
      ],
      "name": "ProgressedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "statusMessage",
          "type": "bytes32"
        }
      ],
      "name": "Status",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "assetRegistry",
      "outputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataRegistry",
      "outputs": [
        {
          "internalType": "contract IDataRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "object",
          "type": "bytes32"
        }
      ],
      "name": "decodeCollateralObject",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "collateralToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        }
      ],
      "name": "encodeCollateralAsObject",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "progress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "progressWith",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CEGTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"assetRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IDataRegistry\",\"name\":\"dataRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"}],\"name\":\"InitializedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"payoff\",\"type\":\"int256\"}],\"name\":\"ProgressedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"statusMessage\",\"type\":\"bytes32\"}],\"name\":\"Status\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assetRegistry\",\"outputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataRegistry\",\"outputs\":[{\"internalType\":\"contract IDataRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"}],\"name\":\"decodeCollateralObject\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"encodeCollateralAsObject\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CEGTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"schedule\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"ownership\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"progressWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],(address,address,address,address),address,address)\":{\"params\":{\"admin\":\"address of the admin of the asset (optional)\",\"engine\":\"address of the ACTUS engine used for the spec. ContractType\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"terms\":\"asset specific terms\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"progress(bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"assetId\":\"id of the asset\"}},\"progressWith(bytes32,bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"_event\":\"the unscheduled event\",\"assetId\":\"id of the asset\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"CEGActor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],(address,address,address,address),address,address)\":{\"notice\":\"Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\"},\"progress(bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule.\"},\"progressWith(bytes32,bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events.\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"TODO\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGActor.sol\":\"CEGActor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol\":{\"keccak256\":\"0x92a8ff9c2c11b86fec0bc0ca7969bdf7860bbc5c4724522f9c55f06dc82d1c56\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://636bf06c13797d2217fa00ac597d8f22772645300e62b88cbefa341055bc33a0\",\"dweb:/ipfs/QmfNTGqmdXWQb1uZBggzURfDR5fzMSGGJqEk8PEq5JCSQ7\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol\":{\"keccak256\":\"0xe7607bac7335711a3aec25570695955cec318f24285291e1fda899389680ff92\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b26cc5b3081d8187958b3fc9b06aa6dfa46b5bea39f2c74f918a1e80263e4fc1\",\"dweb:/ipfs/QmSVLpWnLAjCMoThwi88ACGC8FnUMhiaw1zmnuDBGycTJH\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGActor.sol\":{\"keccak256\":\"0x27865b1ec76293474de13d8ac7294f6861733d56fa6bb3350367e22535addcaa\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://791300b565c92038e2853ffdee460705774fc6c9ec4c400358d9a84d3956ccb0\",\"dweb:/ipfs/QmNNTNSGW21qp3prNJChoBSMbJTJHdTWNYGx25A5D4TtEN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol\":{\"keccak256\":\"0xbb03daf61f217e6a9c241e5df143c094a8adfe2b0b77b739936d3c9ef0e1701d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0248df70c8c941a9961bdb2ace085223aeb6965680c3d7f4326397aa61a5f86\",\"dweb:/ipfs/QmWYTwGP1je7WhMNSmKm6NDbdVJzgz9CqgtRf7vYMXKu8M\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol\":{\"keccak256\":\"0xedc41629661d186ac7b0a91d13d1dec18f0a6b94596dca992e1a0c6fd2ef1456\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d88db090aa0494d8e8c33b93cd1f4eb96218b62b8d3afbc5fde945d78f8a898\",\"dweb:/ipfs/Qma6P3wHn4smrjRT79QXPGb5zjzkckgYC9ys7XFdKD23n3\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162004012380380620040128339810160408190526200003491620000ce565b818160006200004b6001600160e01b03620000ca16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550620001259050565b3390565b60008060408385031215620000e1578182fd5b8251620000ee816200010c565b602084015190925062000101816200010c565b809150509250929050565b6001600160a01b03811681146200012257600080fd5b50565b613edd80620001356000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638da5cb5b146101a8578063979d7e86146101bd578063a39c1d6b146101c5578063ce892c97146101cd576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612959565b61022c565b60405161011b929190613353565b60405180910390f35b610137610132366004612912565b610245565b60405161011b919061336c565b610157610152366004612989565b610270565b005b610157610525565b61017461016f366004612959565b6105a4565b60405161011b929190613637565b610157610190366004612959565b6105cd565b6101376101a33660046129e2565b61082b565b6101b0610839565b60405161011b9190613301565b6101b0610848565b6101b0610857565b6101576101db366004612ab2565b610866565b6101376101ee3660046129fe565b610ae8565b610137610201366004612e37565b610b06565b6101576102143660046128da565b610c5b565b610137610227366004612e37565b610d11565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a29085903390600401613375565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f4919061293d565b6103195760405162461bcd60e51b8152600401610310906138be565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a90869060040161336c565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612971565b146103b75760405162461bcd60e51b815260040161031090613acd565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e890869060040161336c565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612971565b146104555760405162461bcd60e51b815260040161031090613870565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c90879060040161336c565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612971565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b81526004016103109061372b565b61051f8484610d85565b50505050565b61052d61131c565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b8152600401610310906139ff565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd90849060040161336c565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d919061293d565b6106695760405162461bcd60e51b815260040161031090613909565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a90859060040161336c565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612971565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061072390859060040161336c565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612971565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab90859060040161336c565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612971565b90505b8061081d5760405162461bcd60e51b8152600401610310906137da565b6108278282610d85565b5050565b600081601c81111561026a57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b6001600160a01b038216158015906108f957506010826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec91906129c6565b60128111156108f757fe5b145b6109155760405162461bcd60e51b815260040161031090613671565b6000864260405160200161092a929190613bbc565b60408051601f1981840301815291905280516020909101209050600361095861046089016104408a016129aa565b600481111561096357fe5b141561098b576103e087013561098b5760405162461bcd60e51b8152600401610310906136ce565b610993612553565b6040516367b5811760e01b81526001600160a01b038516906367b58117906109bf908b90600401613bad565b6102806040518083038186803b1580156109d857600080fd5b505afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190612d3a565b6001546040516318d9c07160e21b81529192506001600160a01b03169063636701c490610a519085908c9086908d908d908d908d9030908e90600401613504565b600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a915060109050610ab760208901896128da565b610ac760608a0160408b016128da565b604051610ad69392919061360b565b60405180910390a25050505050505050565b60008160f884601c811115610af957fe5b60ff16901b179392505050565b600081851415610b17575083610c53565b6001846008811115610b2557fe5b1480610b3c57506003846008811115610b3a57fe5b145b15610b5257610b4b8584611320565b9050610c53565b6002846008811115610b6057fe5b1480610b7757506004846008811115610b7557fe5b145b15610bbb576000610b888685611320565b9050610b938661137c565b610b9c8261137c565b1415610ba9579050610c53565b610bb38685611394565b915050610c53565b6005846008811115610bc957fe5b1480610be057506007846008811115610bde57fe5b145b15610bef57610b4b8584611394565b6006846008811115610bfd57fe5b1480610c1457506008846008811115610c1257fe5b145b15610c50576000610c258685611394565b9050610c308661137c565b610c398261137c565b1415610c46579050610c53565b610bb38685611320565b50835b949350505050565b610c6361131c565b6000546001600160a01b03908116911614610c905760405162461bcd60e51b8152600401610310906139ff565b6001600160a01b038116610cb65760405162461bcd60e51b815260040161031090613776565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610d2157fe5b1480610d3857506004846008811115610d3657fe5b145b80610d4e57506007846008811115610d4c57fe5b145b80610d6457506008846008811115610d6257fe5b145b15610d70575083610c53565b610d7c85858585610b06565b95945050505050565b610d8d612553565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610dbd90869060040161336c565b6102806040518083038186803b158015610dd657600080fd5b505afa158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612d3a565b9050600081516005811115610e1f57fe5b1480610e375750600181516005811115610e3557fe5b145b80610e4e5750600281516005811115610e4c57fe5b145b610e6a5760405162461bcd60e51b815260040161031090613b18565b600081516005811115610e7957fe5b14610f0257600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610eae90869060040161336c565b6102806040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612d3a565b90505b600080610f0e846105a4565b60015460405163ecef557760e01b815292945090925042916110b89184916001600160a01b039091169063ecef557790610f4c908b9060040161345d565b60206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612e7e565b60ff166008811115610faa57fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610fda908c906004016134c5565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190612e7e565b60ff16600181111561103857fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d90611068908d90600401613484565b60206040518083038186803b15801561108057600080fd5b505afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612971565b11156110d65760405162461bcd60e51b815260040161031090613a7a565b6110de612553565b60006110eb8786886113e2565b9150915060006110fc888884611668565b9050806112005760008651600581111561111257fe5b141561117d5760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d709061114a908b908a906004016135f6565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e773906111af908b908b9060040161338c565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b5050505060006111ee600b86610ae8565b90506111fb8985836113e2565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd490611232908b9087906004016135f6565b600060405180830381600087803b15801561124c57600080fd5b505af1158015611260573d6000803e3d6000fd5b50505050801515600114156112d65760015460405163de07a17360e01b81526001600160a01b039091169063de07a173906112a3908b908b90879060040161339a565b600060405180830381600087803b1580156112bd57600080fd5b505af11580156112d1573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e960018315151461130957600b61130b565b865b8685604051610ad69392919061364f565b3390565b6000600182600181111561133057fe5b14156113755761133f83611a9e565b6006141561135957611352836002611ab1565b905061026a565b61136283611a9e565b6007141561137557611352836001611ab1565b5090919050565b600061138c620151808304611ac6565b509392505050565b600060018260018111156113a457fe5b1415611375576113b383611a9e565b600614156113c657611352836001611b5c565b6113cf83611a9e565b6007141561137557611352836002611b5c565b6113ea612553565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda19061141f90899060040161336c565b60206040518083038186803b15801561143757600080fd5b505afa15801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906128f6565b90506114796125ed565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda906114a9908a9060040161336c565b6104e06040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612b70565b9050600080611508876105a4565b915091506000846001600160a01b0316631f252723858b8b6115438f8961153e8a8d608001518e602001518f6101800151610d11565b611b71565b6040518563ffffffff1660e01b81526004016115629493929190613bd9565b60206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190612971565b9050846001600160a01b031663392aef8e858b8b6115e98f896115e48a8d608001518e602001518f6101800151610d11565b611d68565b6040518563ffffffff1660e01b81526004016116089493929190613bd9565b6102806040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190612d3a565b9a909950975050505050505050565b6000831580159061167857508215155b6116945760405162461bcd60e51b8152600401610310906139a2565b816116a157506001611a97565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb012559906116d29088906004016133d5565b60206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172291906128f6565b905061172c6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061175c9089906004016133b0565b60806040518083038186803b15801561177457600080fd5b505afa158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190612d1f565b90506004816060015160048111156117c057fe5b14156117d55780516117d19061022c565b5091505b6117dd612707565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef79061180d908a9060040161336c565b60806040518083038186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d9190612a4a565b9050600080600087131561188c575060408201516001600160a01b03821661188757826020015191505b6118a5565b5081516001600160a01b0382166118a557826060015191505b60008088136118b85787600019026118ba565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118eb929190613315565b60206040518083038186803b15801561190357600080fd5b505afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190612971565b10806119c257506040516370a0823160e01b815281906001600160a01b038816906370a0823190611970908690600401613301565b60206040518083038186803b15801561198857600080fd5b505afa15801561199c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c09190612971565b105b15611a0c57897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119f5906137bc565b60405180910390a260009650505050505050611a97565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd90611a3c9085908790869060040161332f565b602060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e919061293d565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611b1d57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611ba69088906004016133d5565b60206040518083038186803b158015611bbe57600080fd5b505afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906128f6565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611c2c908990600401613439565b60206040518083038186803b158015611c4457600080fd5b505afa158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c91906128f6565b9050806001600160a01b0316826001600160a01b031614611d5f5760025460405160009182916001600160a01b03909116906308a4ec1090611cc49087908790602001613315565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611cf892919061338c565b604080518083038186803b158015611d0f57600080fd5b505afa158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190612a1b565b915091508015611d5c57509250611a97915050565b50505b50509392505050565b6000600d83601c811115611d7857fe5b1415611e965760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611dc0908b9060040161340a565b60206040518083038186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e109190612971565b866040518363ffffffff1660e01b8152600401611e2e92919061338c565b604080518083038186803b158015611e4557600080fd5b505afa158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190612a1b565b915091508015611e8f57509050611a97565b505061248d565b600b83601c811115611ea457fe5b1415611eb1575042611a97565b601a83601c811115611ebf57fe5b14156121f257611ecd6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611efd9088906004016134df565b60806040518083038186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d9190612d1f565b9050600381606001516004811115611f6157fe5b14156120925780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f9a90859060040161336c565b60206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea919061293d565b151560011461200b5760405162461bcd60e51b81526004016103109061381b565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b906120379085906004016134a2565b60206040518083038186803b15801561204f57600080fd5b505afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190612971565b9350611a9792505050565b61209a6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906120ca9089906004016133b0565b60806040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211a9190612d1f565b905060028160400151600481111561212e57fe5b14801561214a575060008160600151600481111561214857fe5b145b15611e8f576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec1091612185918a9060040161338c565b604080518083038186803b15801561219c57600080fd5b505afa1580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d49190612a1b565b9150915080156121e957509250611a97915050565b5050505061248d565b601783601c81111561220057fe5b141561248d5761220e6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061223e9088906004016134df565b60806040518083038186803b15801561225657600080fd5b505afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190612d1f565b90506002816040015160048111156122a257fe5b1480156122be57506000816060015160048111156122bc57fe5b145b15612483576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122f991899060040161338c565b604080518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190612a1b565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612392908f906004016133ef565b60206040518083038186803b1580156123aa57600080fd5b505afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e29190612971565b6040518363ffffffff1660e01b81526004016123ff92919061338c565b604080518083038186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190612a1b565b9150915082801561245c5750805b1561247e57612471848363ffffffff61249716565b9550611a97945050505050565b505050505b5060009050611a97565b5060009392505050565b6000816124b65760405162461bcd60e51b815260040161031090613b69565b826124c35750600061026a565b670de0b6b3a7640000838102908482816124d957fe5b05146124f75760405162461bcd60e51b815260040161031090613a34565b8260001914801561250b5750600160ff1b84145b156125285760405162461bcd60e51b815260040161031090613a34565b600083828161253357fe5b05905080610c535760405162461bcd60e51b815260040161031090613951565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610340810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126a761272e565b81526020016126b461272e565b81526020016126c1612751565b81526020016126ce6126e0565b81526020016126db6126e0565b905290565b604080516080810182526000808252602082018190529091820190815260200160006126db565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081019091526000808252602082019081526020016000612744565b803561026a81613e29565b805161026a81613e29565b805161026a81613e4c565b805161026a81613e59565b805161026a81613e66565b805161026a81613e80565b803561026a81613e8d565b805161026a81613e8d565b6000608082840312156127db578081fd5b50919050565b6000608082840312156127f2578081fd5b6127fc6080613da0565b90508151815260208201516020820152604082015161281a81613e73565b6040820152606082015161282d81613e73565b606082015292915050565b600060808284031215612849578081fd5b6128536080613da0565b905081518152602082015161286781613e66565b6020820152604082015161287a81613e59565b6040820152606082015161282d81613e3e565b60006060828403121561289e578081fd5b6128a86060613da0565b90508151815260208201516128bc81613e66565b602082015260408201516128cf81613e3e565b604082015292915050565b6000602082840312156128eb578081fd5b8135611a9781613e29565b600060208284031215612907578081fd5b8151611a9781613e29565b60008060408385031215612924578081fd5b823561292f81613e29565b946020939093013593505050565b60006020828403121561294e578081fd5b8151611a9781613e3e565b60006020828403121561296a578081fd5b5035919050565b600060208284031215612982578081fd5b5051919050565b6000806040838503121561299b578182fd5b50508035926020909101359150565b6000602082840312156129bb578081fd5b8135611a9781613e73565b6000602082840312156129d7578081fd5b8151611a9781613e8d565b6000602082840312156129f3578081fd5b8135611a9781613e9a565b60008060408385031215612a10578182fd5b823561292f81613e9a565b60008060408385031215612a2d578182fd5b825191506020830151612a3f81613e3e565b809150509250929050565b600060808284031215612a5b578081fd5b612a656080613da0565b8251612a7081613e29565b81526020830151612a8081613e29565b60208201526040830151612a9381613e29565b60408201526060830151612aa681613e29565b60608201529392505050565b6000806000806000808688036105c0811215612acc578283fd5b6104e080821215612adb578384fd5b889750870135905067ffffffffffffffff80821115612af8578384fd5b8189018a601f820112612b09578485fd5b8035925081831115612b19578485fd5b8a60208085028301011115612b2c578485fd5b6020019650909450612b4490508861050089016127ca565b9250612b54886105808901612772565b9150612b64886105a08901612772565b90509295509295509295565b60006104e08284031215612b82578081fd5b612b8d610340613da0565b612b9784846127bf565b8152612ba68460208501612793565b6020820152612bb884604085016127a9565b6040820152612bca846060850161279e565b6060820152612bdc8460808501612788565b6080820152612bee8460a08501612793565b60a0820152612c008460c08501612793565b60c0820152612c128460e0850161279e565b60e0820152610100612c268582860161277d565b90820152610120612c398585830161277d565b908201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a0612cc58582860161288d565b90820152610300612cd88585830161288d565b6102c0830152612cec856103608601612838565b6102e0830152612d00856103e086016127e1565b90820152612d128461046085016127e1565b6103208201529392505050565b600060808284031215612d30578081fd5b611a9783836127e1565b6000610280808385031215612d4d578182fd5b612d5681613da0565b612d60858561279e565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612e4c578182fd5b843593506020850135612e5e81613e4c565b92506040850135612e6e81613e59565b9396929550929360600135925050565b600060208284031215612e8f578081fd5b815160ff81168114611a97578182fd5b6001600160a01b03169052565b60098110612eb657fe5b9052565b612eb681613e08565b612eb681613e15565b600d8110612eb657fe5b60138110612eb657fe5b60208101612ef783612ef283856127b4565b612ed6565b612f018183613de1565b612f0e6020850182612eba565b5050612f1d6040820182613dfb565b612f2a6040840182612ecc565b50612f386060820182613dee565b612f456060840182612ec3565b50612f536080820182613dd4565b612f606080840182612eac565b50612f6e60a0820182613de1565b612f7b60a0840182612eba565b50612f8960c0820182613de1565b612f9660c0840182612eba565b50612fa460e0820182613dee565b612fb160e0840182612ec3565b50610100612fc181830183613dc7565b612fcd82850182612e9f565b5050610120612fde81830183613dc7565b612fea82850182612e9f565b50506101408181013590830152610160808201359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a06130768184018284016131cc565b506103006130888184018284016131cc565b5061036061309a81840182840161313e565b506103e06130ac8184018284016130c3565b506104606130be8184018284016130c3565b505050565b803582526020810135602083015260408101356130df81613e73565b6130e881613e1f565b604083015260608101356130fb81613e73565b61310481613e1f565b806060840152505050565b8051825260208101516020830152604081015161312b81613e1f565b6040830152606081015161310481613e1f565b80358252602081013561315081613e66565b61315981613e15565b6020830152604081013561316c81613e59565b61317581613e08565b6040830152606081013561318881613e3e565b8015156060840152505050565b8051825260208101516131a781613e15565b602083015260408101516131ba81613e08565b60408301526060908101511515910152565b8035825260208101356131de81613e66565b6131e781613e15565b602083015260408101356131fa81613e3e565b8015156040840152505050565b80518252602081015161321981613e15565b60208301526040908101511515910152565b613236828251612ec3565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b60006108808b8352613519602084018c612ee0565b61352761050084018b61322b565b610780830181905282018790526108a06001600160fb1b0388111561354a578182fd5b60208802808a83860137830101908152853561356581613e29565b6001600160a01b039081166107a08401526040870190806135898360208b01612772565b166107c0850152606088018161359f8285612772565b166107e0860152816135b460808b0183612772565b166108008601525050506135cc610820830186612e9f565b6135da610840830185612e9f565b6135e8610860830184612e9f565b9a9950505050505050505050565b8281526102a08101611a97602083018461322b565b606081016013851061361957fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061364557fe5b9281526020015290565b60608101601d851061365d57fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b60208082526038908201527f4345474143746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f315f4f424a4543540000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6104e0810161026a8284612ee0565b6105008101613bcb8285612ee0565b826104e08301529392505050565b60006107a082019050613bed828751612ed6565b6020860151613bff6020840182612eba565b506040860151613c126040840182612ecc565b506060860151613c256060840182612ec3565b506080860151613c386080840182612eac565b5060a0860151613c4b60a0840182612eba565b5060c0860151613c5e60c0840182612eba565b5060e0860151613c7160e0840182612ec3565b5061010080870151613c8582850182612e9f565b505061012080870151613c9a82850182612e9f565b50506101408681015190830152610160808701519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151613d2882850182613207565b50506102c0860151610300613d3f81850183613207565b6102e08801519150613d55610360850183613195565b8701519050613d686103e084018261310f565b50610320860151613d7d61046084018261310f565b50613d8c6104e083018661322b565b610760820193909352610780015292915050565b60405181810167ffffffffffffffff81118282101715613dbf57600080fd5b604052919050565b60008235611a9781613e29565b60008235611a9781613e4c565b60008235611a9781613e59565b60008235611a9781613e66565b60008235611a9781613e80565b60028110613e1257fe5b50565b60068110613e1257fe5b60058110613e1257fe5b6001600160a01b0381168114613e1257600080fd5b8015158114613e1257600080fd5b60098110613e1257600080fd5b60028110613e1257600080fd5b60068110613e1257600080fd5b60058110613e1257600080fd5b600d8110613e1257600080fd5b60138110613e1257600080fd5b601d8110613e1257600080fdfea2646970667358221220fc7787883d4efe55f1fbbba42377f7594d4b8867e059e8e006e718ed38a0438364736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638da5cb5b146101a8578063979d7e86146101bd578063a39c1d6b146101c5578063ce892c97146101cd576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612959565b61022c565b60405161011b929190613353565b60405180910390f35b610137610132366004612912565b610245565b60405161011b919061336c565b610157610152366004612989565b610270565b005b610157610525565b61017461016f366004612959565b6105a4565b60405161011b929190613637565b610157610190366004612959565b6105cd565b6101376101a33660046129e2565b61082b565b6101b0610839565b60405161011b9190613301565b6101b0610848565b6101b0610857565b6101576101db366004612ab2565b610866565b6101376101ee3660046129fe565b610ae8565b610137610201366004612e37565b610b06565b6101576102143660046128da565b610c5b565b610137610227366004612e37565b610d11565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a29085903390600401613375565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f4919061293d565b6103195760405162461bcd60e51b8152600401610310906138be565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a90869060040161336c565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612971565b146103b75760405162461bcd60e51b815260040161031090613acd565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e890869060040161336c565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612971565b146104555760405162461bcd60e51b815260040161031090613870565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c90879060040161336c565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612971565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b81526004016103109061372b565b61051f8484610d85565b50505050565b61052d61131c565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b8152600401610310906139ff565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd90849060040161336c565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d919061293d565b6106695760405162461bcd60e51b815260040161031090613909565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a90859060040161336c565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612971565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061072390859060040161336c565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612971565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab90859060040161336c565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612971565b90505b8061081d5760405162461bcd60e51b8152600401610310906137da565b6108278282610d85565b5050565b600081601c81111561026a57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b6001600160a01b038216158015906108f957506010826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec91906129c6565b60128111156108f757fe5b145b6109155760405162461bcd60e51b815260040161031090613671565b6000864260405160200161092a929190613bbc565b60408051601f1981840301815291905280516020909101209050600361095861046089016104408a016129aa565b600481111561096357fe5b141561098b576103e087013561098b5760405162461bcd60e51b8152600401610310906136ce565b610993612553565b6040516367b5811760e01b81526001600160a01b038516906367b58117906109bf908b90600401613bad565b6102806040518083038186803b1580156109d857600080fd5b505afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190612d3a565b6001546040516318d9c07160e21b81529192506001600160a01b03169063636701c490610a519085908c9086908d908d908d908d9030908e90600401613504565b600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a915060109050610ab760208901896128da565b610ac760608a0160408b016128da565b604051610ad69392919061360b565b60405180910390a25050505050505050565b60008160f884601c811115610af957fe5b60ff16901b179392505050565b600081851415610b17575083610c53565b6001846008811115610b2557fe5b1480610b3c57506003846008811115610b3a57fe5b145b15610b5257610b4b8584611320565b9050610c53565b6002846008811115610b6057fe5b1480610b7757506004846008811115610b7557fe5b145b15610bbb576000610b888685611320565b9050610b938661137c565b610b9c8261137c565b1415610ba9579050610c53565b610bb38685611394565b915050610c53565b6005846008811115610bc957fe5b1480610be057506007846008811115610bde57fe5b145b15610bef57610b4b8584611394565b6006846008811115610bfd57fe5b1480610c1457506008846008811115610c1257fe5b145b15610c50576000610c258685611394565b9050610c308661137c565b610c398261137c565b1415610c46579050610c53565b610bb38685611320565b50835b949350505050565b610c6361131c565b6000546001600160a01b03908116911614610c905760405162461bcd60e51b8152600401610310906139ff565b6001600160a01b038116610cb65760405162461bcd60e51b815260040161031090613776565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610d2157fe5b1480610d3857506004846008811115610d3657fe5b145b80610d4e57506007846008811115610d4c57fe5b145b80610d6457506008846008811115610d6257fe5b145b15610d70575083610c53565b610d7c85858585610b06565b95945050505050565b610d8d612553565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610dbd90869060040161336c565b6102806040518083038186803b158015610dd657600080fd5b505afa158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612d3a565b9050600081516005811115610e1f57fe5b1480610e375750600181516005811115610e3557fe5b145b80610e4e5750600281516005811115610e4c57fe5b145b610e6a5760405162461bcd60e51b815260040161031090613b18565b600081516005811115610e7957fe5b14610f0257600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610eae90869060040161336c565b6102806040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612d3a565b90505b600080610f0e846105a4565b60015460405163ecef557760e01b815292945090925042916110b89184916001600160a01b039091169063ecef557790610f4c908b9060040161345d565b60206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612e7e565b60ff166008811115610faa57fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610fda908c906004016134c5565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190612e7e565b60ff16600181111561103857fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d90611068908d90600401613484565b60206040518083038186803b15801561108057600080fd5b505afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612971565b11156110d65760405162461bcd60e51b815260040161031090613a7a565b6110de612553565b60006110eb8786886113e2565b9150915060006110fc888884611668565b9050806112005760008651600581111561111257fe5b141561117d5760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d709061114a908b908a906004016135f6565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e773906111af908b908b9060040161338c565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b5050505060006111ee600b86610ae8565b90506111fb8985836113e2565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd490611232908b9087906004016135f6565b600060405180830381600087803b15801561124c57600080fd5b505af1158015611260573d6000803e3d6000fd5b50505050801515600114156112d65760015460405163de07a17360e01b81526001600160a01b039091169063de07a173906112a3908b908b90879060040161339a565b600060405180830381600087803b1580156112bd57600080fd5b505af11580156112d1573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e960018315151461130957600b61130b565b865b8685604051610ad69392919061364f565b3390565b6000600182600181111561133057fe5b14156113755761133f83611a9e565b6006141561135957611352836002611ab1565b905061026a565b61136283611a9e565b6007141561137557611352836001611ab1565b5090919050565b600061138c620151808304611ac6565b509392505050565b600060018260018111156113a457fe5b1415611375576113b383611a9e565b600614156113c657611352836001611b5c565b6113cf83611a9e565b6007141561137557611352836002611b5c565b6113ea612553565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda19061141f90899060040161336c565b60206040518083038186803b15801561143757600080fd5b505afa15801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906128f6565b90506114796125ed565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda906114a9908a9060040161336c565b6104e06040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612b70565b9050600080611508876105a4565b915091506000846001600160a01b0316631f252723858b8b6115438f8961153e8a8d608001518e602001518f6101800151610d11565b611b71565b6040518563ffffffff1660e01b81526004016115629493929190613bd9565b60206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190612971565b9050846001600160a01b031663392aef8e858b8b6115e98f896115e48a8d608001518e602001518f6101800151610d11565b611d68565b6040518563ffffffff1660e01b81526004016116089493929190613bd9565b6102806040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190612d3a565b9a909950975050505050505050565b6000831580159061167857508215155b6116945760405162461bcd60e51b8152600401610310906139a2565b816116a157506001611a97565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb012559906116d29088906004016133d5565b60206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172291906128f6565b905061172c6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061175c9089906004016133b0565b60806040518083038186803b15801561177457600080fd5b505afa158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190612d1f565b90506004816060015160048111156117c057fe5b14156117d55780516117d19061022c565b5091505b6117dd612707565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef79061180d908a9060040161336c565b60806040518083038186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d9190612a4a565b9050600080600087131561188c575060408201516001600160a01b03821661188757826020015191505b6118a5565b5081516001600160a01b0382166118a557826060015191505b60008088136118b85787600019026118ba565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118eb929190613315565b60206040518083038186803b15801561190357600080fd5b505afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190612971565b10806119c257506040516370a0823160e01b815281906001600160a01b038816906370a0823190611970908690600401613301565b60206040518083038186803b15801561198857600080fd5b505afa15801561199c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c09190612971565b105b15611a0c57897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119f5906137bc565b60405180910390a260009650505050505050611a97565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd90611a3c9085908790869060040161332f565b602060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e919061293d565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611b1d57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611ba69088906004016133d5565b60206040518083038186803b158015611bbe57600080fd5b505afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906128f6565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611c2c908990600401613439565b60206040518083038186803b158015611c4457600080fd5b505afa158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c91906128f6565b9050806001600160a01b0316826001600160a01b031614611d5f5760025460405160009182916001600160a01b03909116906308a4ec1090611cc49087908790602001613315565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611cf892919061338c565b604080518083038186803b158015611d0f57600080fd5b505afa158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190612a1b565b915091508015611d5c57509250611a97915050565b50505b50509392505050565b6000600d83601c811115611d7857fe5b1415611e965760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611dc0908b9060040161340a565b60206040518083038186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e109190612971565b866040518363ffffffff1660e01b8152600401611e2e92919061338c565b604080518083038186803b158015611e4557600080fd5b505afa158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190612a1b565b915091508015611e8f57509050611a97565b505061248d565b600b83601c811115611ea457fe5b1415611eb1575042611a97565b601a83601c811115611ebf57fe5b14156121f257611ecd6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611efd9088906004016134df565b60806040518083038186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d9190612d1f565b9050600381606001516004811115611f6157fe5b14156120925780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f9a90859060040161336c565b60206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea919061293d565b151560011461200b5760405162461bcd60e51b81526004016103109061381b565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b906120379085906004016134a2565b60206040518083038186803b15801561204f57600080fd5b505afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190612971565b9350611a9792505050565b61209a6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906120ca9089906004016133b0565b60806040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211a9190612d1f565b905060028160400151600481111561212e57fe5b14801561214a575060008160600151600481111561214857fe5b145b15611e8f576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec1091612185918a9060040161338c565b604080518083038186803b15801561219c57600080fd5b505afa1580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d49190612a1b565b9150915080156121e957509250611a97915050565b5050505061248d565b601783601c81111561220057fe5b141561248d5761220e6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061223e9088906004016134df565b60806040518083038186803b15801561225657600080fd5b505afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190612d1f565b90506002816040015160048111156122a257fe5b1480156122be57506000816060015160048111156122bc57fe5b145b15612483576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122f991899060040161338c565b604080518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190612a1b565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612392908f906004016133ef565b60206040518083038186803b1580156123aa57600080fd5b505afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e29190612971565b6040518363ffffffff1660e01b81526004016123ff92919061338c565b604080518083038186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190612a1b565b9150915082801561245c5750805b1561247e57612471848363ffffffff61249716565b9550611a97945050505050565b505050505b5060009050611a97565b5060009392505050565b6000816124b65760405162461bcd60e51b815260040161031090613b69565b826124c35750600061026a565b670de0b6b3a7640000838102908482816124d957fe5b05146124f75760405162461bcd60e51b815260040161031090613a34565b8260001914801561250b5750600160ff1b84145b156125285760405162461bcd60e51b815260040161031090613a34565b600083828161253357fe5b05905080610c535760405162461bcd60e51b815260040161031090613951565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610340810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126a761272e565b81526020016126b461272e565b81526020016126c1612751565b81526020016126ce6126e0565b81526020016126db6126e0565b905290565b604080516080810182526000808252602082018190529091820190815260200160006126db565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081019091526000808252602082019081526020016000612744565b803561026a81613e29565b805161026a81613e29565b805161026a81613e4c565b805161026a81613e59565b805161026a81613e66565b805161026a81613e80565b803561026a81613e8d565b805161026a81613e8d565b6000608082840312156127db578081fd5b50919050565b6000608082840312156127f2578081fd5b6127fc6080613da0565b90508151815260208201516020820152604082015161281a81613e73565b6040820152606082015161282d81613e73565b606082015292915050565b600060808284031215612849578081fd5b6128536080613da0565b905081518152602082015161286781613e66565b6020820152604082015161287a81613e59565b6040820152606082015161282d81613e3e565b60006060828403121561289e578081fd5b6128a86060613da0565b90508151815260208201516128bc81613e66565b602082015260408201516128cf81613e3e565b604082015292915050565b6000602082840312156128eb578081fd5b8135611a9781613e29565b600060208284031215612907578081fd5b8151611a9781613e29565b60008060408385031215612924578081fd5b823561292f81613e29565b946020939093013593505050565b60006020828403121561294e578081fd5b8151611a9781613e3e565b60006020828403121561296a578081fd5b5035919050565b600060208284031215612982578081fd5b5051919050565b6000806040838503121561299b578182fd5b50508035926020909101359150565b6000602082840312156129bb578081fd5b8135611a9781613e73565b6000602082840312156129d7578081fd5b8151611a9781613e8d565b6000602082840312156129f3578081fd5b8135611a9781613e9a565b60008060408385031215612a10578182fd5b823561292f81613e9a565b60008060408385031215612a2d578182fd5b825191506020830151612a3f81613e3e565b809150509250929050565b600060808284031215612a5b578081fd5b612a656080613da0565b8251612a7081613e29565b81526020830151612a8081613e29565b60208201526040830151612a9381613e29565b60408201526060830151612aa681613e29565b60608201529392505050565b6000806000806000808688036105c0811215612acc578283fd5b6104e080821215612adb578384fd5b889750870135905067ffffffffffffffff80821115612af8578384fd5b8189018a601f820112612b09578485fd5b8035925081831115612b19578485fd5b8a60208085028301011115612b2c578485fd5b6020019650909450612b4490508861050089016127ca565b9250612b54886105808901612772565b9150612b64886105a08901612772565b90509295509295509295565b60006104e08284031215612b82578081fd5b612b8d610340613da0565b612b9784846127bf565b8152612ba68460208501612793565b6020820152612bb884604085016127a9565b6040820152612bca846060850161279e565b6060820152612bdc8460808501612788565b6080820152612bee8460a08501612793565b60a0820152612c008460c08501612793565b60c0820152612c128460e0850161279e565b60e0820152610100612c268582860161277d565b90820152610120612c398585830161277d565b908201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a0612cc58582860161288d565b90820152610300612cd88585830161288d565b6102c0830152612cec856103608601612838565b6102e0830152612d00856103e086016127e1565b90820152612d128461046085016127e1565b6103208201529392505050565b600060808284031215612d30578081fd5b611a9783836127e1565b6000610280808385031215612d4d578182fd5b612d5681613da0565b612d60858561279e565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612e4c578182fd5b843593506020850135612e5e81613e4c565b92506040850135612e6e81613e59565b9396929550929360600135925050565b600060208284031215612e8f578081fd5b815160ff81168114611a97578182fd5b6001600160a01b03169052565b60098110612eb657fe5b9052565b612eb681613e08565b612eb681613e15565b600d8110612eb657fe5b60138110612eb657fe5b60208101612ef783612ef283856127b4565b612ed6565b612f018183613de1565b612f0e6020850182612eba565b5050612f1d6040820182613dfb565b612f2a6040840182612ecc565b50612f386060820182613dee565b612f456060840182612ec3565b50612f536080820182613dd4565b612f606080840182612eac565b50612f6e60a0820182613de1565b612f7b60a0840182612eba565b50612f8960c0820182613de1565b612f9660c0840182612eba565b50612fa460e0820182613dee565b612fb160e0840182612ec3565b50610100612fc181830183613dc7565b612fcd82850182612e9f565b5050610120612fde81830183613dc7565b612fea82850182612e9f565b50506101408181013590830152610160808201359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a06130768184018284016131cc565b506103006130888184018284016131cc565b5061036061309a81840182840161313e565b506103e06130ac8184018284016130c3565b506104606130be8184018284016130c3565b505050565b803582526020810135602083015260408101356130df81613e73565b6130e881613e1f565b604083015260608101356130fb81613e73565b61310481613e1f565b806060840152505050565b8051825260208101516020830152604081015161312b81613e1f565b6040830152606081015161310481613e1f565b80358252602081013561315081613e66565b61315981613e15565b6020830152604081013561316c81613e59565b61317581613e08565b6040830152606081013561318881613e3e565b8015156060840152505050565b8051825260208101516131a781613e15565b602083015260408101516131ba81613e08565b60408301526060908101511515910152565b8035825260208101356131de81613e66565b6131e781613e15565b602083015260408101356131fa81613e3e565b8015156040840152505050565b80518252602081015161321981613e15565b60208301526040908101511515910152565b613236828251612ec3565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b60006108808b8352613519602084018c612ee0565b61352761050084018b61322b565b610780830181905282018790526108a06001600160fb1b0388111561354a578182fd5b60208802808a83860137830101908152853561356581613e29565b6001600160a01b039081166107a08401526040870190806135898360208b01612772565b166107c0850152606088018161359f8285612772565b166107e0860152816135b460808b0183612772565b166108008601525050506135cc610820830186612e9f565b6135da610840830185612e9f565b6135e8610860830184612e9f565b9a9950505050505050505050565b8281526102a08101611a97602083018461322b565b606081016013851061361957fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061364557fe5b9281526020015290565b60608101601d851061365d57fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b60208082526038908201527f4345474143746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f315f4f424a4543540000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6104e0810161026a8284612ee0565b6105008101613bcb8285612ee0565b826104e08301529392505050565b60006107a082019050613bed828751612ed6565b6020860151613bff6020840182612eba565b506040860151613c126040840182612ecc565b506060860151613c256060840182612ec3565b506080860151613c386080840182612eac565b5060a0860151613c4b60a0840182612eba565b5060c0860151613c5e60c0840182612eba565b5060e0860151613c7160e0840182612ec3565b5061010080870151613c8582850182612e9f565b505061012080870151613c9a82850182612e9f565b50506101408681015190830152610160808701519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151613d2882850182613207565b50506102c0860151610300613d3f81850183613207565b6102e08801519150613d55610360850183613195565b8701519050613d686103e084018261310f565b50610320860151613d7d61046084018261310f565b50613d8c6104e083018661322b565b610760820193909352610780015292915050565b60405181810167ffffffffffffffff81118282101715613dbf57600080fd5b604052919050565b60008235611a9781613e29565b60008235611a9781613e4c565b60008235611a9781613e59565b60008235611a9781613e66565b60008235611a9781613e80565b60028110613e1257fe5b50565b60068110613e1257fe5b60058110613e1257fe5b6001600160a01b0381168114613e1257600080fd5b8015158114613e1257600080fd5b60098110613e1257600080fd5b60028110613e1257600080fd5b60068110613e1257600080fd5b60058110613e1257600080fd5b600d8110613e1257600080fd5b60138110613e1257600080fd5b601d8110613e1257600080fdfea2646970667358221220fc7787883d4efe55f1fbbba42377f7594d4b8867e059e8e006e718ed38a0438364736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "288:3280:34:-:0;;;326:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;429:13;444:12;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;940:43;;907:6;;940:43;-1:-1:-1;1902:13:4;:30;;-1:-1:-1;;;;;1902:30:4;;;-1:-1:-1;;;;;;1902:30:4;;;;;;;1942:12;:28;;;;;;;;;;;-1:-1:-1;288:3280:34;;-1:-1:-1;288:3280:34;768:104:115;855:10;768:104;:::o;377:489:-1:-;;;554:2;542:9;533:7;529:23;525:32;522:2;;;-1:-1;;560:12;522:2;112:6;106:13;124:56;174:5;124:56;:::i;:::-;746:2;818:22;;292:13;612:97;;-1:-1;310:55;292:13;310:55;:::i;:::-;754:96;;;;516:350;;;;;:::o;1340:163::-;-1:-1;;;;;1274:54;;1422:58;;1412:2;;1494:1;;1484:12;1412:2;1406:97;:::o;:::-;288:3280:34;;;;;;",
  "deployedSourceMap": "288:3280:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:248:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;159:260;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3805:1298:4:-;;;;;;:::i;:::-;;:::i;:::-;;1689:145:116;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2421:929:4:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1696:35:4:-;;;:::i;1737:33::-;;;:::i;954:1480:34:-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::i;:::-;;:::i;425:248:22:-;605:2;595:12;;;624:32;;;425:248;;;:::o;159:260::-;-1:-1:-1;;365:2:22;319:48;;;;378:33;;;319:93;159:260;;;;;:::o;3805:1298:4:-;3979:13;;:48;;-1:-1:-1;;;3979:48:4;;-1:-1:-1;;;;;3979:13:4;;;;:27;;:48;;4007:7;;4016:10;;3979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3958:138;;;;-1:-1:-1;;;3958:138:4;;;;;;;:::i;:::-;;;;;;;;;4292:13;;:38;;-1:-1:-1;;;4292:38:4;;4342:1;;-1:-1:-1;;;;;4292:13:4;;:29;;:38;;4322:7;;4292:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;4271:142;;;;-1:-1:-1;;;4271:142:4;;;;;;;:::i;:::-;4444:13;;:45;;-1:-1:-1;;;4444:45:4;;4501:1;;-1:-1:-1;;;;;4444:13:4;;:36;;:45;;4481:7;;4444:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;4423:152;;;;-1:-1:-1;;;4423:152:4;;;;;;;:::i;:::-;4751:13;;:44;;-1:-1:-1;;;4751:44:4;;4701:34;;4739:57;;-1:-1:-1;;;;;4751:13:4;;;;:35;;:44;;4787:7;;4751:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4739:57::-;4698:98;;;4809:33;4846:19;4858:6;4846:11;:19::i;:::-;4806:59;-1:-1:-1;;4896:31:4;;;:91;;;4960:26;4932:25;:54;4896:91;4875:181;;;;-1:-1:-1;;;4875:181:4;;;;;;;:::i;:::-;5067:29;5080:7;5089:6;5067:12;:29::i;:::-;3805:1298;;;;:::o;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:116;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;2421:929:4:-;2575:13;;:35;;-1:-1:-1;;;2575:35:4;;-1:-1:-1;;;;;2575:13:4;;;;:26;;:35;;2602:7;;2575:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2554:122;;;;-1:-1:-1;;;2554:122:4;;;;;;;:::i;:::-;2915:13;;:38;;-1:-1:-1;;;2915:38:4;;2898:14;;-1:-1:-1;;;;;2915:13:4;;:29;;:38;;2945:7;;2915:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2898:55;-1:-1:-1;2967:20:4;2963:80;;2998:13;;:45;;-1:-1:-1;;;2998:45:4;;-1:-1:-1;;;;;2998:13:4;;;;:36;;:45;;3035:7;;2998:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2989:54;;2963:80;3057:20;3053:79;;3088:13;;:44;;-1:-1:-1;;;3088:44:4;;-1:-1:-1;;;;;3088:13:4;;;;:35;;:44;;3124:7;;3088:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3079:53;;3053:79;3224:20;3203:100;;;;-1:-1:-1;;;3203:100:4;;;;;;;:::i;:::-;3314:29;3327:7;3336:6;3314:12;:29::i;:::-;2421:929;;:::o;956:145:82:-;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1696:35:4:-;;;-1:-1:-1;;;;;1696:35:4;;:::o;1737:33::-;;;-1:-1:-1;;;;;1737:33:4;;:::o;954:1480:34:-;-1:-1:-1;;;;;1192:20:34;;;;;;:74;;-1:-1:-1;1250:16:34;1224:6;-1:-1:-1;;;;;1216:28:34;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;;;;;;1192:74;1171:177;;;;-1:-1:-1;;;1171:177:34;;;;;;;:::i;:::-;1395:15;1434:5;1441:15;1423:34;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1423:34:34;;;;;;;;;1413:45;;1423:34;1413:45;;;;;-1:-1:-1;1592:26:34;1558:30;;;;;;;;:::i;:::-;:60;;;;;;;;;1554:252;;;1659:25;;;:32;1634:161;;;;-1:-1:-1;;;1634:161:34;;;;;;;:::i;:::-;1939:25;;:::i;:::-;1967:45;;-1:-1:-1;;;1967:45:34;;-1:-1:-1;;;;;1967:38:34;;;;;:45;;2006:5;;1967:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2095:13;;2074:237;;-1:-1:-1;;;2074:237:34;;1939:73;;-1:-1:-1;;;;;;2095:13:34;;2074:50;;:237;;2138:7;;2159:5;;1939:73;;2204:8;;;;2226:9;;2249:6;;2277:4;;2296:5;;2074:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2344:7:34;;-1:-1:-1;2327:100:34;;-1:-1:-1;2353:16:34;;-1:-1:-1;2371:24:34;;;;:9;:24;:::i;:::-;2397:29;;;;;;;;:::i;:::-;2327:100;;;;;;;;:::i;:::-;;;;;;;;954:1480;;;;;;;;:::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;1599:2214;;;;;;;:::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;648:583:75:-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;:::-;1156:68;648:583;-1:-1:-1;;;;;648:583:75:o;5173:3272:4:-;5247:18;;:::i;:::-;5268:13;;:31;;-1:-1:-1;;;5268:31:4;;-1:-1:-1;;;;;5268:13:4;;;;:22;;:31;;5291:7;;5268:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:52;-1:-1:-1;5447:22:4;5418:25;;:51;;;;;;;;;:118;;;-1:-1:-1;5514:22:4;5485:25;;:51;;;;;;;;;5418:118;:185;;;-1:-1:-1;5581:22:4;5552:25;;:51;;;;;;;;;5418:185;5397:281;;;;-1:-1:-1;;;5397:281:4;;;;;;;:::i;:::-;5780:22;5751:25;;:51;;;;;;;;;5747:130;;5826:13;;:40;;-1:-1:-1;;;5826:40:4;;-1:-1:-1;;;;;5826:13:4;;;;:31;;:40;;5858:7;;5826:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5818:48;;5747:130;5888:19;5909:20;5933:19;5945:6;5933:11;:19::i;:::-;6242:13;;:77;;-1:-1:-1;;;6242:77:4;;5887:65;;-1:-1:-1;5887:65:4;;-1:-1:-1;6516:15:4;;6158:354;;5887:65;;-1:-1:-1;;;;;6242:13:4;;;;:43;;:77;;6286:7;;6242:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6220:100;;;;;;;;;;6347:13;;:64;;-1:-1:-1;;;6347:64:4;;-1:-1:-1;;;;;6347:13:4;;;;:43;;:64;;6391:7;;6347:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6338:74;;;;;;;;;;6430:13;;:68;;-1:-1:-1;;;6430:68:4;;-1:-1:-1;;;;;6430:13:4;;;;:43;;:68;;6474:7;;6430:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6158:354::-;:373;;6097:511;;;;-1:-1:-1;;;6097:511:4;;;;;;;:::i;:::-;6756:22;;:::i;:::-;6780:13;6797:53;6827:7;6836:5;6843:6;6797:29;:53::i;:::-;6755:95;;;;6902:18;6923:45;6944:7;6953:6;6961;6923:20;:45::i;:::-;6902:66;-1:-1:-1;6983:22:4;6979:974;;7405:22;7376:25;;:51;;;;;;;;;7372:137;;;7447:13;;:47;;-1:-1:-1;;;7447:47:4;;-1:-1:-1;;;;;7447:13:4;;;;:31;;:47;;7479:7;;7488:5;;7447:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:137;7589:13;;:47;;-1:-1:-1;;;7589:47:4;;-1:-1:-1;;;;;7589:13:4;;;;:30;;:47;;7620:7;;7629:6;;7589:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:15;7703:39;7715:12;7729;7703:11;:39::i;:::-;7685:57;;7884:58;7914:7;7923:9;7934:7;7884:29;:58::i;:::-;-1:-1:-1;7868:74:4;-1:-1:-1;;6979:974:4;8000:13;;:42;;-1:-1:-1;;;8000:42:4;;-1:-1:-1;;;;;8000:13:4;;;;:22;;:42;;8023:7;;8032:9;;8000:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;8090:21:4;;;8107:4;8090:21;8086:109;;;8127:13;;:57;;-1:-1:-1;;;8127:57:4;;-1:-1:-1;;;;;8127:13:4;;;;:32;;:57;;8160:7;;8169:6;;8177;;8127:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8086:109;8239:7;8210:228;8350:4;8333:21;;;;8332:50;;8370:12;8332:50;;;8358:9;8332:50;8396:12;8422:6;8210:228;;;;;;;;:::i;768:104:115:-;855:10;768:104;:::o;3980:550:75:-;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;7310:11;:40::i;:::-;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;2440:1126:34:-;2596:12;;:::i;:::-;2649:13;;:32;;-1:-1:-1;;;2649:32:34;;2610:6;;;;-1:-1:-1;;;;;2649:13:34;;;;:23;;:32;;2673:7;;2649:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2632:49;;2691:21;;:::i;:::-;2736:13;;2715:54;;-1:-1:-1;;;2715:54:34;;-1:-1:-1;;;;;2736:13:34;;;;2715:45;;:54;;2761:7;;2715:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2691:78;;2780:19;2801:20;2825:19;2837:6;2825:11;:19::i;:::-;2779:65;;;;2855:13;2882:6;-1:-1:-1;;;;;2871:40:34;;2925:5;2944;2963:6;2983:197;3022:7;3047:9;3074:92;3088:12;3102:5;:27;;;3131:5;:14;;;3147:5;:18;;;3074:13;:92::i;:::-;2983:21;:197::i;:::-;2871:319;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2855:335;;3219:6;-1:-1:-1;;;;;3208:39:34;;3261:5;3280;3299:6;3319:197;3358:7;3383:9;3410:92;3424:12;3438:5;:27;;;3467:5;:14;;;3483:5;:18;;;3410:13;:92::i;:::-;3319:21;:197::i;:::-;3208:318;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3200:326;3552:6;;-1:-1:-1;2440:1126:34;-1:-1:-1;;;;;;;;2440:1126:34:o;8839:2407:4:-;8981:4;9022:21;;;;;:45;;-1:-1:-1;9047:20:4;;;9022:45;9001:151;;;;-1:-1:-1;;;9001:151:4;;;;;;;:::i;:::-;9211:11;9207:28;;-1:-1:-1;9231:4:4;9224:11;;9207:28;9364:13;;:67;;-1:-1:-1;;;9364:67:4;;9348:13;;-1:-1:-1;;;;;9364:13:4;;:46;;:67;;9411:7;;9364:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9348:83;;9441:44;;:::i;:::-;9488:13;;:122;;-1:-1:-1;;;9488:122:4;;-1:-1:-1;;;;;9488:13:4;;;;:56;;:122;;9558:7;;9488:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9441:169;-1:-1:-1;9652:26:4;9624:19;:24;;;:54;;;;;;;;;9620:147;;;9729:26;;9706:50;;:22;:50::i;:::-;-1:-1:-1;9694:62:4;-1:-1:-1;9620:147:4;9777:31;;:::i;:::-;9811:13;;:35;;-1:-1:-1;;;9811:35:4;;-1:-1:-1;;;;;9811:13:4;;;;:26;;:35;;9838:7;;9811:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9777:69;;9948:13;9971;10007:1;9998:6;:10;9994:674;;;-1:-1:-1;10096:29:4;;;;-1:-1:-1;;;;;10236:19:4;;10232:94;;10283:9;:28;;;10275:36;;10232:94;9994:674;;;-1:-1:-1;10428:24:4;;-1:-1:-1;;;;;10563:19:4;;10559:99;;10610:9;:33;;;10602:41;;10559:99;10727:14;10754:1;10745:6;:10;10744:53;;10785:6;-1:-1:-1;;10785:11:4;10744:53;;;10767:6;10744:53;10727:70;;10970:6;10929:5;-1:-1:-1;;;;;10922:23:4;;10946:5;10961:4;10922:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;:97;;;-1:-1:-1;10980:30:4;;-1:-1:-1;;;10980:30:4;;11013:6;;-1:-1:-1;;;;;10980:23:4;;;;;:30;;11004:5;;10980:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;10922:97;10918:196;;;11047:7;11040:37;;;;;;:::i;:::-;;;;;;;;11098:5;11091:12;;;;;;;;;;10918:196;11191:48;;-1:-1:-1;;;11191:48:4;;-1:-1:-1;;;;;11191:26:4;;;;;:48;;11218:5;;11225;;11232:6;;11191:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11184:55;;;;;;;;8839:2407;;;;;;:::o;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;3309:605;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;15178:713:4;15391:13;;:67;;-1:-1:-1;;;15391:67:4;;15349:7;;;;-1:-1:-1;;;;;15391:13:4;;;;:46;;:67;;15438:7;;15391:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15497:13;;:77;;-1:-1:-1;;;15497:77:4;;15372:86;;-1:-1:-1;15468:26:4;;-1:-1:-1;;;;;15497:13:4;;;;:46;;:77;;15544:7;;15497:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15468:106;;15601:18;-1:-1:-1;;;;;15589:30:4;:8;-1:-1:-1;;;;;15589:30:4;;15585:300;;15692:12;;15745:40;;15663:13;;;;-1:-1:-1;;;;;15692:12:4;;;;:25;;15745:40;;15756:8;;15766:18;;15745:40;;;:::i;:::-;;;;;;;;;;;;;15735:51;;;;;;15804:9;15692:135;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15662:165;;;;15845:5;15841:33;;;-1:-1:-1;15867:6:4;-1:-1:-1;15852:22:4;;-1:-1:-1;;15852:22:4;15841:33;15585:300;;;15178:713;;;;;;;:::o;11609:3425::-;11774:7;11814:12;11801:9;:25;;;;;;;;;11797:3203;;;11917:12;;;11960:13;:84;;-1:-1:-1;;;11960:84:4;;11885:16;;;;-1:-1:-1;;;;;11917:12:4;;;;:25;;11960:13;;;;:46;;:84;;12007:7;;11960:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12062:9;11917:168;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11884:201;;;;12103:5;12099:36;;;-1:-1:-1;12125:9:4;-1:-1:-1;12110:25:4;;12099:36;11797:3203;;;;;12169:12;12156:9;:25;;;;;;;;;12152:2848;;;-1:-1:-1;12289:15:4;12274:31;;12152:2848;12339:12;12326:9;:25;;;;;;;;;12322:2678;;;12438:44;;:::i;:::-;12485:13;;:134;;-1:-1:-1;;;12485:134:4;;-1:-1:-1;;;;;12485:13:4;;;;:56;;:134;;12559:7;;12485:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12438:181;-1:-1:-1;12665:26:4;12637:19;:24;;;:54;;;;;;;;;12633:639;;;12739:26;;12836:27;;;;12913:66;;-1:-1:-1;;;12913:66:4;;-1:-1:-1;;;;;12913:47:4;;;;;:66;;12739:26;;12913:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;12983:4;12913:74;12884:198;;;;-1:-1:-1;;;12884:198:4;;;;;;;:::i;:::-;13136:103;;-1:-1:-1;;;13136:103:4;;-1:-1:-1;;;;;13136:63:4;;;;;:103;;13200:17;;13136:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13107:150;-1:-1:-1;13100:157:4;;-1:-1:-1;;;13100:157:4;12633:639;13285:44;;:::i;:::-;13332:13;;:134;;-1:-1:-1;;;13332:134:4;;-1:-1:-1;;;;;13332:13:4;;;;:56;;:134;;13406:7;;13332:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13285:181;-1:-1:-1;13530:25:4;13501:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;13603:25:4;13575:19;:24;;;:53;;;;;;;;;13501:127;13480:403;;;13693:12;;13740:26;;13693:122;;-1:-1:-1;;;13693:122:4;;13662:15;;;;-1:-1:-1;;;;;13693:12:4;;;;:25;;:122;;13788:9;;13693:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13661:154;;;;13837:5;13833:35;;;-1:-1:-1;13859:8:4;-1:-1:-1;13844:24:4;;-1:-1:-1;;13844:24:4;13833:35;13480:403;;12322:2678;;;;;13916:13;13903:9;:26;;;;;;;;;13899:1101;;;13945:44;;:::i;:::-;13992:13;;:134;;-1:-1:-1;;;13992:134:4;;-1:-1:-1;;;;;13992:13:4;;;;:56;;:134;;14066:7;;13992:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13945:181;-1:-1:-1;14190:25:4;14161:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;14263:25:4;14235:19;:24;;;:53;;;;;;;;;14161:127;14140:819;;;14385:12;;14432:26;;14385:122;;-1:-1:-1;;;14385:122:4;;14322:35;;;;-1:-1:-1;;;;;14385:12:4;;;;:25;;:122;;14480:9;;14385:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:12;;14632:26;;14585:12;14680:13;:65;;-1:-1:-1;;;14680:65:4;;14321:186;;-1:-1:-1;14321:186:4;;-1:-1:-1;14526:33:4;;;;-1:-1:-1;;;;;14585:12:4;;;;:25;;14632:26;14680:13;;;:43;;:65;;14724:7;;14680:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:178;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14525:238;;;;14785:17;:36;;;;;14806:15;14785:36;14781:164;;;14860:65;:28;14898:26;14860:65;:37;:65;:::i;:::-;14852:74;-1:-1:-1;14845:81:4;;-1:-1:-1;;;;;14845:81:4;14781:164;14140:819;;;;;-1:-1:-1;14987:1:4;;-1:-1:-1;14972:17:4;;13899:1101;-1:-1:-1;15025:1:4;11609:3425;;;;;:::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5:130;72:20;;97:33;72:20;97:33;:::i;142:134::-;220:13;;238:33;220:13;238:33;:::i;1396:188::-;1501:13;;1519:60;1501:13;1519:60;:::i;1756:162::-;1848:13;;1866:47;1848:13;1866:47;:::i;2112:184::-;2215:13;;2233:58;2215:13;2233:58;:::i;3248:170::-;3344:13;;3362:51;3344:13;3362:51;:::i;3425:166::-;3510:20;;3535:51;3510:20;3535:51;:::i;3598:170::-;3694:13;;3712:51;3694:13;3712:51;:::i;5948:166::-;;6066:3;6057:6;6052:3;6048:16;6044:26;6041:2;;;-1:-1;;6073:12;6041:2;-1:-1;6093:15;6034:80;-1:-1;6034:80::o;12149:881::-;;12285:4;12273:9;12268:3;12264:19;12260:30;12257:2;;;-1:-1;;12293:12;12257:2;12321:20;12285:4;12321:20;:::i;:::-;12312:29;;1148:6;1142:13;12407:16;12400:86;12550:2;12619:9;12615:22;1142:13;12550:2;12569:5;12565:16;12558:86;12706:2;12802:9;12798:22;2599:13;2617:60;2671:5;2617:60;:::i;:::-;12706:2;12721:16;;12714:113;12888:2;12980:22;;2599:13;2617:60;2599:13;2617:60;:::i;:::-;12888:2;12903:16;;12896:113;12907:5;12251:779;-1:-1;;12251:779::o;13054:810::-;;13176:4;13164:9;13159:3;13155:19;13151:30;13148:2;;;-1:-1;;13184:12;13148:2;13212:20;13176:4;13212:20;:::i;:::-;13203:29;;18378:6;18372:13;13293:16;13286:86;13430:2;13506:9;13502:22;2215:13;2233:58;2285:5;2233:58;:::i;:::-;13430:2;13445:16;;13438:93;13589:2;13661:22;;1848:13;1866:47;1848:13;1866:47;:::i;:::-;13589:2;13604:16;;13597:93;13752:2;13814:22;;867:13;885:30;867:13;885:30;:::i;13887:650::-;;14008:4;13996:9;13991:3;13987:19;13983:30;13980:2;;;-1:-1;;14016:12;13980:2;14044:20;14008:4;14044:20;:::i;:::-;14035:29;;18378:6;18372:13;14125:16;14118:86;14262:2;14338:9;14334:22;2215:13;2233:58;2285:5;2233:58;:::i;:::-;14262:2;14277:16;;14270:93;14425:2;14487:22;;867:13;885:30;867:13;885:30;:::i;:::-;14425:2;14440:16;;14433:83;14444:5;13974:563;-1:-1;;13974:563::o;18572:241::-;;18676:2;18664:9;18655:7;18651:23;18647:32;18644:2;;;-1:-1;;18682:12;18644:2;85:6;72:20;97:33;124:5;97:33;:::i;18820:263::-;;18935:2;18923:9;18914:7;18910:23;18906:32;18903:2;;;-1:-1;;18941:12;18903:2;226:6;220:13;238:33;265:5;238:33;:::i;19090:366::-;;;19211:2;19199:9;19190:7;19186:23;19182:32;19179:2;;;-1:-1;;19217:12;19179:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;19269:63;19369:2;19408:22;;;;18224:20;;-1:-1;;;19173:283::o;19463:257::-;;19575:2;19563:9;19554:7;19550:23;19546:32;19543:2;;;-1:-1;;19581:12;19543:2;873:6;867:13;885:30;909:5;885:30;:::i;19727:241::-;;19831:2;19819:9;19810:7;19806:23;19802:32;19799:2;;;-1:-1;;19837:12;19799:2;-1:-1;994:20;;19793:175;-1:-1;19793:175::o;19975:263::-;;20090:2;20078:9;20069:7;20065:23;20061:32;20058:2;;;-1:-1;;20096:12;20058:2;-1:-1;1142:13;;20052:186;-1:-1;20052:186::o;20245:366::-;;;20366:2;20354:9;20345:7;20341:23;20337:32;20334:2;;;-1:-1;;20372:12;20334:2;-1:-1;;994:20;;;20524:2;20563:22;;;994:20;;-1:-1;20328:283::o;20618:295::-;;20749:2;20737:9;20728:7;20724:23;20720:32;20717:2;;;-1:-1;;20755:12;20717:2;2410:6;2397:20;2422:60;2476:5;2422:60;:::i;20920:299::-;;21053:2;21041:9;21032:7;21028:23;21024:32;21021:2;;;-1:-1;;21059:12;21021:2;3700:6;3694:13;3712:51;3757:5;3712:51;:::i;21226:271::-;;21345:2;21333:9;21324:7;21320:23;21316:32;21313:2;;;-1:-1;;21351:12;21313:2;4626:6;4613:20;4638:48;4680:5;4638:48;:::i;21504:396::-;;;21640:2;21628:9;21619:7;21615:23;21611:32;21608:2;;;-1:-1;;21646:12;21608:2;4626:6;4613:20;4638:48;4680:5;4638:48;:::i;22175:391::-;;;22303:2;22291:9;22282:7;22278:23;22274:32;22271:2;;;-1:-1;;22309:12;22271:2;5862:6;5856:13;22361:73;;22471:2;22522:9;22518:22;867:13;885:30;909:5;885:30;:::i;:::-;22479:71;;;;22265:301;;;;;:::o;22573:328::-;;22720:3;22708:9;22699:7;22695:23;22691:33;22688:2;;;-1:-1;;22727:12;22688:2;6317:20;22720:3;6317:20;:::i;:::-;226:6;220:13;238:33;265:5;238:33;:::i;:::-;6404:86;;6565:2;6630:22;;220:13;238:33;220:13;238:33;:::i;:::-;6565:2;6580:16;;6573:86;6735:2;6800:22;;220:13;238:33;220:13;238:33;:::i;:::-;6735:2;6750:16;;6743:86;6909:2;6974:22;;220:13;238:33;220:13;238:33;:::i;:::-;6909:2;6924:16;;6917:86;6928:5;22682:219;-1:-1;;;22682:219::o;22908:1033::-;;;;;;;23166:9;23157:7;23153:23;23178:4;23153:23;23149:34;23146:2;;;-1:-1;;23186:12;23146:2;7168:4;;7150:16;7146:27;7143:2;;;-1:-1;;7176:12;7143:2;23238:92;;-1:-1;23380:20;;23367:34;;-1:-1;23421:18;23410:30;;;23407:2;;;-1:-1;;23443:12;23407:2;23544:6;23533:9;23529:22;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;482:6;469:20;459:30;;23421:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;575:4;563:17;;-1:-1;23463:98;;-1:-1;23618:87;;-1:-1;23697:7;23598:4;23673:22;;23618:87;:::i;:::-;23608:97;;23762:53;23807:7;23742:4;23787:9;23783:22;23762:53;:::i;:::-;23752:63;;23872:53;23917:7;23852:4;23897:9;23893:22;23872:53;:::i;:::-;23862:63;;23140:801;;;;;;;;:::o;23948:319::-;;24090:4;24078:9;24069:7;24065:23;24061:34;24058:2;;;-1:-1;;24098:12;24058:2;7411:22;7426:6;7411:22;:::i;:::-;7523:78;7597:3;7573:22;7523:78;:::i;:::-;7505:16;7498:104;7700:74;7770:3;7667:2;7750:9;7746:22;7700:74;:::i;:::-;7667:2;7686:5;7682:16;7675:100;7877:78;7951:3;7844:2;7931:9;7927:22;7877:78;:::i;:::-;7844:2;7863:5;7859:16;7852:104;8064:84;8144:3;8031:2;8124:9;8120:22;8064:84;:::i;:::-;8031:2;8050:5;8046:16;8039:110;8261:87;8344:3;8227;8324:9;8320:22;8261:87;:::i;:::-;8227:3;8247:5;8243:16;8236:113;8460:86;8542:3;8426;8522:9;8518:22;8460:86;:::i;:::-;8426:3;8446:5;8442:16;8435:112;8646:74;8716:3;8612;8696:9;8692:22;8646:74;:::i;:::-;8612:3;8632:5;8628:16;8621:100;8834:85;8915:3;8800;8895:9;8891:22;8834:85;:::i;:::-;8800:3;8820:5;8816:16;8809:111;8985:3;9021:60;9077:3;8985;9057:9;9053:22;9021:60;:::i;:::-;9001:18;;;8994:88;9157:3;9193:60;9249:3;9225:22;;;9193:60;:::i;:::-;9173:18;;;9166:88;9327:3;9395:22;;;18372:13;9343:18;;;9336:88;9491:3;9559:22;;;18372:13;9507:18;;;9500:88;9657:3;9725:22;;;18372:13;9673:18;;;9666:88;9823:3;9891:22;;;18372:13;9839:18;;;9832:88;9997:3;10065:22;;;18372:13;10013:18;;;10006:88;10168:3;10235:22;;;5856:13;10184:18;;;10177:87;10336:3;10403:22;;;5856:13;10352:18;;;10345:87;10499:3;10566:22;;;5856:13;10515:18;;;10508:87;10659:3;10726:22;;;5856:13;10675:18;;;10668:87;10831:3;10898:22;;;5856:13;10847:18;;;10840:87;11011:3;11078:22;;;5856:13;11027:18;;;11020:87;11175:3;11211:81;11288:3;11264:22;;;11211:81;:::i;:::-;11191:18;;;11184:109;11367:3;11403:81;11480:3;11456:22;;;11403:81;:::i;:::-;11394:6;11387:5;11383:18;11376:109;11588:82;11666:3;11552;11646:9;11642:22;11588:82;:::i;:::-;11579:6;11572:5;11568:18;11561:110;11783:96;11875:3;11747;11855:9;11851:22;11783:96;:::i;:::-;11763:18;;;11756:124;11993:96;12085:3;11956:4;12061:22;;11993:96;:::i;:::-;11984:6;11973:18;;11966:124;11977:5;24052:215;-1:-1;;;24052:215::o;24274:336::-;;24425:3;24413:9;24404:7;24400:23;24396:33;24393:2;;;-1:-1;;24432:12;24393:2;24494:100;24586:7;24562:22;24494:100;:::i;24617:312::-;;24756:3;;24744:9;24735:7;24731:23;24727:33;24724:2;;;-1:-1;;24763:12;24724:2;14725:22;24756:3;14725:22;:::i;:::-;14844:85;14925:3;14901:22;14844:85;:::i;:::-;14819:111;;14997:2;15062:22;;;18372:13;15012:16;;;15005:86;15165:2;15230:22;;;18372:13;15180:16;;;15173:86;15328:2;15393:22;;;18372:13;15343:16;;;15336:86;15491:3;15557:22;;;18372:13;15507:16;;;15500:86;15658:3;15724:22;;;18372:13;15674:16;;;15667:86;15823:3;15889:22;;;18372:13;15839:16;;;15832:86;15992:3;16057:22;;;5856:13;16008:16;;;16001:85;16158:3;16225:22;;;5856:13;16174:18;;;16167:87;16321:3;16388:22;;;5856:13;16337:18;;;16330:87;16493:3;16560:22;;;5856:13;16509:18;;;16502:87;16671:3;16738:22;;;5856:13;16687:18;;;16680:87;16849:3;16916:22;;;5856:13;16865:18;;;16858:87;17032:3;17099:22;;;5856:13;17048:18;;;17041:87;17199:3;17266:22;;;5856:13;17215:18;;;17208:87;17368:3;17435:22;;;5856:13;17384:18;;;17377:87;17529:3;17596:22;;;5856:13;17545:18;;;17538:87;17699:3;17766:22;;;5856:13;17715:18;;;17708:87;17864:3;17931:22;;;5856:13;17880:18;;;17873:87;18033:3;18100:22;;;5856:13;18049:18;;;18042:87;;;;-1:-1;14826:16;;24718:211;-1:-1;;24718:211::o;25206:699::-;;;;;25402:3;25390:9;25381:7;25377:23;25373:33;25370:2;;;-1:-1;;25409:12;25370:2;18237:6;18224:20;25461:63;;25561:2;25631:9;25627:22;1299:20;1324:60;1378:5;1324:60;:::i;:::-;25569:90;-1:-1;25696:2;25749:22;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;25364:541;;;;-1:-1;25704:77;;25818:2;25857:22;18224:20;;-1:-1;;25364:541::o;25912:259::-;;26025:2;26013:9;26004:7;26000:23;25996:32;25993:2;;;-1:-1;;26031:12;25993:2;18517:6;18511:13;86863:4;93787:5;86852:16;93764:5;93761:33;93751:2;;-1:-1;;93798:12;26327:103;-1:-1;;;;;86647:54;26388:37;;26382:48::o;27750:166::-;90097:1;90090:5;90087:12;90077:2;;90103:9;90077:2;27836:75;;27830:86::o;27923:140::-;84789:47;84830:5;84789:47;:::i;28070:162::-;84941:58;84993:5;84941:58;:::i;28585:148::-;90698:2;90691:5;90688:13;90678:2;;90705:9;28740:148;90815:2;90808:5;90805:13;90795:2;;90822:9;39871:5964;82842:2;40147:16;82833:12;40170:79;40234:14;82789:57;82833:12;40147:16;82789:57;:::i;:::-;40170:79;:::i;:::-;40315:64;40362:16;40355:5;40315:64;:::i;:::-;40385:75;82842:2;40449:3;40445:14;40431:12;40385:75;:::i;:::-;;;40530:68;40592:4;40585:5;40581:16;40574:5;40530:68;:::i;:::-;40604:79;40592:4;40672:3;40668:14;40654:12;40604:79;:::i;:::-;;40759:74;40827:4;40820:5;40816:16;40809:5;40759:74;:::i;:::-;40839:85;40827:4;40913:3;40909:14;40895:12;40839:85;:::i;:::-;;41003:77;41074:4;41067:5;41063:16;41056:5;41003:77;:::i;:::-;41086:88;41074:4;41163:3;41159:14;41145:12;41086:88;:::i;:::-;;41252:76;41322:4;41315:5;41311:16;41304:5;41252:76;:::i;:::-;41334:87;41322:4;41410:3;41406:14;41392:12;41334:87;:::i;:::-;;41487:64;41545:4;41538:5;41534:16;41527:5;41487:64;:::i;:::-;41557:75;41545:4;41621:3;41617:14;41603:12;41557:75;:::i;:::-;;41712;41781:4;41774:5;41770:16;41763:5;41712:75;:::i;:::-;41793:86;41781:4;41868:3;41864:14;41850:12;41793:86;:::i;:::-;;41989:6;41945:52;41989:6;41982:5;41978:18;41971:5;41945:52;:::i;:::-;42003:65;41989:6;42055:3;42051:16;42037:12;42003:65;:::i;:::-;;;42188:6;42144:52;42188:6;42181:5;42177:18;42170:5;42144:52;:::i;:::-;42202:65;42188:6;42254:3;42250:16;42236:12;42202:65;:::i;:::-;-1:-1;;42385:6;42374:18;;;18224:20;42447:16;;;27225:37;42576:6;42565:18;;;18224:20;42638:16;;;27225:37;42769:6;42758:18;;;18224:20;42831:16;;;27225:37;42962:6;42951:18;;;18224:20;43024:16;;;27225:37;43163:6;43152:18;;;18224:20;43225:16;;;27225:37;43360:6;43349:18;;;5710:20;43420:16;;;27225:37;43553:6;43542:18;;;5710:20;43613:16;;;27225:37;43741:6;43730:18;;;5710:20;43801:16;;;27225:37;43926:6;43915:18;;;5710:20;43986:16;;;27225:37;44123:6;44112:18;;;5710:20;44183:16;;;27225:37;44328:6;44317:18;;;5710:20;44388:16;;;27225:37;44541:6;44555:109;44647:16;;;44530:18;;;44555:109;:::i;:::-;;44806:6;44820:109;44806:6;44916:3;44912:16;44806:6;44799:5;44795:18;44820:109;:::i;:::-;;45065:6;45079:111;45065:6;45177:3;45173:16;45065:6;45058:5;45054:18;45079:111;:::i;:::-;;45349:6;45363:139;45349:6;45489:3;45485:16;45349:6;45342:5;45338:18;45363:139;:::i;:::-;;45661:6;45675:139;45661:6;45801:3;45797:16;45661:6;45654:5;45650:18;45675:139;:::i;:::-;;39993:5842;;:::o;50893:1016::-;1007:6;994:20;27232:3;27225:37;81634:2;51151:16;81625:12;994:20;81634:2;51410:3;51406:14;27225:37;81625:12;51151:16;81625:12;2397:20;2422:60;2476:5;2422:60;:::i;:::-;85106;85160:5;85106:60;:::i;:::-;81625:12;51640:14;;28498:75;82505:12;;;2397:20;2422:60;2397:20;2422:60;:::i;:::-;85106;85160:5;85106:60;:::i;:::-;88212:51;82505:12;51877:3;51873:14;28325:75;;51023:886;;:::o;51975:852::-;52204:16;52198:23;27232:3;27225:37;52372:4;52365:5;52361:16;52355:23;52372:4;52436:3;52432:14;27225:37;52527:4;52520:5;52516:16;52510:23;85106:60;85160:5;85106:60;:::i;:::-;52527:4;52612:14;;28498:75;52706:4;52695:16;;52689:23;85106:60;52689:23;85106:60;:::i;52865:885::-;18237:6;18224:20;27232:3;27225:37;84253:2;53090:16;84244:12;2017:20;2042:58;2094:5;2042:58;:::i;:::-;84941;84993:5;84941:58;:::i;:::-;84253:2;53351:14;;29770:55;53476:4;53465:16;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;84789;84830:5;84789:47;:::i;:::-;53476:4;53541:14;;29903:55;53660:4;53649:16;;725:20;750:30;725:20;750:30;:::i;:::-;27145:5;84435:13;84428:21;53660:4;53718:3;53714:14;27118:34;;52967:783;;:::o;53788:764::-;53984:16;53978:23;27232:3;27225:37;54146:4;54139:5;54135:16;54129:23;84941:58;84993:5;84941:58;:::i;:::-;54146:4;54211:14;;29770:55;54302:4;54291:16;;54285:23;84789:47;54285:23;84789:47;:::i;:::-;54302:4;54367:14;;29903:55;54462:4;54451:16;;;54445:23;84435:13;84428:21;54516:14;;27118:34;53888:664::o;54588:693::-;18237:6;18224:20;27232:3;27225:37;84253:2;54811:16;84244:12;2017:20;2042:58;2094:5;2042:58;:::i;:::-;84941;84993:5;84941:58;:::i;:::-;84253:2;55072:14;;29770:55;83487:12;;;725:20;750:30;725:20;750:30;:::i;:::-;27145:5;84435:13;84428:21;83487:12;55249:3;55245:14;27118:34;;54688:593;;:::o;55317:606::-;55511:16;55505:23;27232:3;27225:37;55673:4;55666:5;55662:16;55656:23;84941:58;84993:5;84941:58;:::i;:::-;55673:4;55738:14;;29770:55;55833:4;55822:16;;;55816:23;84435:13;84428:21;55887:14;;27118:34;55415:508::o;55965:3535::-;56218:86;56289:14;56195:16;56189:23;56218:86;:::i;:::-;56389:4;56378:16;;;56372:23;56449:14;;;27225:37;56556:4;56545:16;;;56539:23;56616:14;;;27225:37;56718:4;56707:16;;;56701:23;56778:14;;;27225:37;56880:4;56869:16;;;56863:23;56940:14;;;27225:37;57045:4;57034:16;;;57028:23;57105:14;;;27225:37;57208:4;57197:16;;;57191:23;57268:14;;;27225:37;57375:4;57364:16;;;57358:23;57433:14;;;27225:37;57538:6;57527:18;;;57521:25;57598:16;;;27225:37;57700:6;57689:18;;;57683:25;57760:16;;;27225:37;57871:6;57860:18;;;57854:25;57931:16;;;27225:37;58048:6;58037:18;;;58031:25;58108:16;;;27225:37;58225:6;58214:18;;;58208:25;58285:16;;;27225:37;58407:6;58396:18;;;58390:25;58467:16;;;27225:37;58573:6;58562:18;;;58556:25;58633:16;;;27225:37;58741:6;58730:18;;;58724:25;58801:16;;;27225:37;58901:6;58890:18;;;58884:25;58961:16;;;27225:37;59070:6;59059:18;;;59053:25;59130:16;;;27225:37;59234:6;59223:18;;;59217:25;59294:16;;;27225:37;59402:6;59391:18;;;59385:25;59462:16;;27225:37;56079:3421::o;59737:222::-;-1:-1;;;;;86647:54;;;;26388:37;;59864:2;59849:18;;59835:124::o;59966:333::-;-1:-1;;;;;86647:54;;;26388:37;;86647:54;;60285:2;60270:18;;26388:37;60121:2;60106:18;;60092:207::o;60306:444::-;-1:-1;;;;;86647:54;;;26388:37;;86647:54;;;;60653:2;60638:18;;26388:37;60736:2;60721:18;;27225:37;;;;60489:2;60474:18;;60460:290::o;60757:333::-;-1:-1;;;;;86647:54;;;;26388:37;;61076:2;61061:18;;27225:37;60912:2;60897:18;;60883:207::o;61097:222::-;27225:37;;;61224:2;61209:18;;61195:124::o;61326:349::-;27225:37;;;-1:-1;;;;;86647:54;61661:2;61646:18;;26257:58;61489:2;61474:18;;61460:215::o;61682:333::-;27225:37;;;62001:2;61986:18;;27225:37;61837:2;61822:18;;61808:207::o;62022:440::-;27225:37;;;62367:2;62352:18;;27225:37;;;;62448:2;62433:18;;27225:37;62203:2;62188:18;;62174:288::o;62469:459::-;27225:37;;;-1:-1;;;62914:2;62899:18;;30331:34;62687:2;62672:18;;62658:270::o;62935:459::-;27225:37;;;-1:-1;;;63380:2;63365:18;;32656:23;63153:2;63138:18;;63124:270::o;63401:459::-;27225:37;;;-1:-1;;;63846:2;63831:18;;33229:24;63619:2;63604:18;;63590:270::o;63867:459::-;27225:37;;;33416:27;64312:2;64297:18;;33404:40;64085:2;64070:18;;64056:270::o;64333:459::-;27225:37;;;-1:-1;;;64778:2;64763:18;;33595:33;64551:2;64536:18;;64522:270::o;64799:459::-;27225:37;;;-1:-1;;;65244:2;65229:18;;35341:36;65017:2;65002:18;;64988:270::o;65265:459::-;27225:37;;;-1:-1;;;65710:2;65695:18;;36274:27;65483:2;65468:18;;65454:270::o;65731:459::-;27225:37;;;-1:-1;;;66176:2;66161:18;;37622:32;65949:2;65934:18;;65920:270::o;66197:459::-;27225:37;;;-1:-1;;;66642:2;66627:18;;37805:23;66415:2;66400:18;;66386:270::o;66663:459::-;27225:37;;;-1:-1;;;67108:2;67093:18;;38756:34;66881:2;66866:18;;66852:270::o;67129:1521::-;;67682:4;27255:5;27232:3;27225:37;67780:128;67904:2;67893:9;67889:18;67880:6;67780:128;:::i;:::-;67919:122;68035:4;68024:9;68020:20;68011:6;67919:122;:::i;:::-;68074:4;68059:20;;68052:50;;;67667:20;;81034:19;;;81074:14;-1:-1;;;;;26836:78;;26833:2;;;-1:-1;;26917:12;26833:2;67904;26952:6;26948:17;89929:6;89924:3;81074:14;67671:9;81074:14;89906:30;89967:16;;;89960:27;;;72:20;;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;86647:54;;;68379:4;68364:20;;26388:37;81375:12;;;;86658:42;81349:39;81375:12;67904:2;81375:12;;81349:39;:::i;:::-;86647:54;39391:14;68368:9;39391:14;26388:37;81375:12;39520:5;81375:12;86658:42;81349:39;81375:12;81370:3;81349:39;:::i;:::-;86647:54;39587:14;68368:9;39587:14;26388:37;86658:42;81349:39;81375:12;39720:5;81375:12;81370:3;81349:39;:::i;:::-;86647:54;39787:14;68368:9;39787:14;26388:37;;;;68396:74;68464:4;68453:9;68449:20;68440:6;68396:74;:::i;:::-;68481;68549:4;68538:9;68534:20;68525:6;68481:74;:::i;:::-;68566;68634:4;68623:9;68619:20;68610:6;68566:74;:::i;:::-;67653:997;;;;;;;;;;;;:::o;68657:430::-;27225:37;;;68860:3;68845:19;;68957:120;69073:2;69058:18;;69049:6;68957:120;:::i;69982:476::-;70181:2;70166:18;;90815:2;90805:13;;90795:2;;90822:9;90795:2;28817:66;;;-1:-1;;;;;86647:54;;;70361:2;70346:18;;26388:37;86647:54;;70444:2;70429:18;;;26388:37;70152:306;:::o;70465:359::-;70633:2;70618:18;;91175:2;91165:13;;91155:2;;91182:9;91155:2;29482:63;;;70810:2;70795:18;27225:37;70604:220;:::o;70831:466::-;71025:2;71010:18;;91175:2;91165:13;;91155:2;;91182:9;91155:2;29482:63;;;71202:2;71187:18;;27225:37;;;;71283:2;71268:18;;;27225:37;70996:301;:::o;71304:416::-;71504:2;71518:47;;;30604:2;71489:18;;;81034:19;30640:34;81074:14;;;30620:55;30709:26;30695:12;;;30688:48;30755:12;;;71475:245::o;71727:416::-;71927:2;71941:47;;;31006:2;71912:18;;;81034:19;31042:34;81074:14;;;31022:55;31111:26;31097:12;;;31090:48;31157:12;;;71898:245::o;72150:416::-;72350:2;72364:47;;;31408:2;72335:18;;;81034:19;31444:34;81074:14;;;31424:55;-1:-1;;;31499:12;;;31492:35;31546:12;;;72321:245::o;72573:416::-;72773:2;72787:47;;;31797:2;72758:18;;;81034:19;31833:34;81074:14;;;31813:55;-1:-1;;;31888:12;;;31881:30;31930:12;;;72744:245::o;72996:348::-;-1:-1;;;32093:33;;73186:2;73171:18;;73157:187::o;73351:416::-;73551:2;73565:47;;;32365:2;73536:18;;;81034:19;32401:34;81074:14;;;32381:55;-1:-1;;;32456:12;;;32449:25;32493:12;;;73522:245::o;73774:416::-;73974:2;73988:47;;;32918:2;73959:18;;;81034:19;32954:34;81074:14;;;32934:55;-1:-1;;;33009:12;;;33002:45;33066:12;;;73945:245::o;74197:416::-;74397:2;74411:47;;;33867:2;74382:18;;;81034:19;33903:34;81074:14;;;33883:55;-1:-1;;;33958:12;;;33951:38;34008:12;;;74368:245::o;74620:416::-;74820:2;74834:47;;;34259:2;74805:18;;;81034:19;34295:34;81074:14;;;34275:55;-1:-1;;;34350:12;;;34343:35;34397:12;;;74791:245::o;75043:416::-;75243:2;75257:47;;;34648:2;75228:18;;;81034:19;34684:34;81074:14;;;34664:55;-1:-1;;;34739:12;;;34732:32;34783:12;;;75214:245::o;75466:416::-;75666:2;75680:47;;;35034:2;75651:18;;;81034:19;35070:34;81074:14;;;35050:55;-1:-1;;;35125:12;;;35118:41;35178:12;;;75637:245::o;75889:416::-;76089:2;76103:47;;;35616:2;76074:18;;;81034:19;35652:34;81074:14;;;35632:55;35721:29;35707:12;;;35700:51;35770:12;;;76060:245::o;76312:416::-;76512:2;76526:47;;;76497:18;;;81034:19;36057:34;81074:14;;;36037:55;36111:12;;;76483:245::o;76735:416::-;76935:2;76949:47;;;36540:2;76920:18;;;81034:19;36576:34;81074:14;;;36556:55;-1:-1;;;36631:12;;;36624:30;36673:12;;;76906:245::o;77158:416::-;77358:2;77372:47;;;36924:2;77343:18;;;81034:19;36960:34;81074:14;;;36940:55;-1:-1;;;37015:12;;;37008:43;37070:12;;;77329:245::o;77581:416::-;77781:2;77795:47;;;37321:2;77766:18;;;81034:19;37357:34;81074:14;;;37337:55;-1:-1;;;37412:12;;;37405:35;37459:12;;;77752:245::o;78004:416::-;78204:2;78218:47;;;38067:2;78189:18;;;81034:19;38103:34;81074:14;;;38083:55;-1:-1;;;38158:12;;;38151:41;38211:12;;;78175:245::o;78427:416::-;78627:2;78641:47;;;38462:2;78612:18;;;81034:19;38498:34;81074:14;;;38478:55;-1:-1;;;38553:12;;;38546:28;38593:12;;;78598:245::o;78850:336::-;79033:4;79018:20;;79049:127;79022:9;79149:6;79049:127;:::i;79193:449::-;79404:4;79389:20;;79420:127;79393:9;79520:6;79420:127;:::i;:::-;27255:5;79626:4;79615:9;79611:20;27225:37;79375:267;;;;;:::o;79649:767::-;;79962:4;79951:9;79947:20;79939:28;;46135:79;46199:14;46112:16;46106:23;46135:79;:::i;:::-;46297:4;46290:5;46286:16;46280:23;46309:75;46297:4;46373:3;46369:14;46355:12;46309:75;:::i;:::-;;46471:4;46464:5;46460:16;46454:23;46483:79;46471:4;46551:3;46547:14;46533:12;46483:79;:::i;:::-;;46655:4;46648:5;46644:16;46638:23;46667:85;46655:4;46741:3;46737:14;46723:12;46667:85;:::i;:::-;;46848:4;46841:5;46837:16;46831:23;46860:88;46848:4;46937:3;46933:14;46919:12;46860:88;:::i;:::-;;47043:4;47036:5;47032:16;47026:23;47055:87;47043:4;47131:3;47127:14;47113:12;47055:87;:::i;:::-;;47225:4;47218:5;47214:16;47208:23;47237:75;47225:4;47301:3;47297:14;47283:12;47237:75;:::i;:::-;;47409:4;47402:5;47398:16;47392:23;47421:86;47409:4;47496:3;47492:14;47478:12;47421:86;:::i;:::-;;47590:6;;47583:5;47579:18;47573:25;47604:65;47590:6;47656:3;47652:16;47638:12;47604:65;:::i;:::-;;;47762:6;;47755:5;47751:18;47745:25;47776:65;47762:6;47828:3;47824:16;47810:12;47776:65;:::i;:::-;-1:-1;;47932:6;47921:18;;;47915:25;47994:16;;;27225:37;48096:6;48085:18;;;48079:25;48158:16;;;27225:37;48262:6;48251:18;;;48245:25;48324:16;;;27225:37;48428:6;48417:18;;;48411:25;48490:16;;;27225:37;48602:6;48591:18;;;48585:25;48664:16;;;27225:37;48773:6;48762:18;;;48756:25;48833:16;;;27225:37;48940:6;48929:18;;;48923:25;49000:16;;;27225:37;49102:6;49091:18;;;49085:25;49162:16;;;27225:37;49261:6;49250:18;;;49244:25;49321:16;;;27225:37;49432:6;49421:18;;;49415:25;49492:16;;;27225:37;49611:6;49600:18;;;49594:25;49671:16;;;27225:37;49774:6;49763:18;;;49757:25;49788:107;49878:16;;;49757:25;49788:107;:::i;:::-;;;49987:6;49980:5;49976:18;49970:25;50100:6;50001:107;50100:6;50095:3;50091:16;50077:12;50001:107;:::i;:::-;50193:6;50186:5;50182:18;50176:25;50156:45;;50207:109;50308:6;50303:3;50299:16;50285:12;50207:109;:::i;:::-;50399:18;;50393:25;;-1:-1;50424:137;50553:6;50544:16;;50393:25;50424:137;:::i;:::-;;50655:6;50648:5;50644:18;50638:25;50669:137;50798:6;50793:3;50789:16;50775:12;50669:137;:::i;:::-;;80114:122;80230:4;80219:9;80215:20;80206:6;80114:122;:::i;:::-;80315:4;80300:20;;27225:37;;;;80400:4;80385:20;27225:37;79933:483;;-1:-1;;79933:483::o;80652:256::-;80714:2;80708:9;80740:17;;;80815:18;80800:34;;80836:22;;;80797:62;80794:2;;;80872:1;;80862:12;80794:2;80714;80881:22;80692:216;;-1:-1;80692:216::o;81275:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;81653:173::-;;1312:6;1299:20;1324:60;1378:5;1324:60;:::i;81835:147::-;;1685:6;1672:20;1697:47;1738:5;1697:47;:::i;81991:169::-;;2030:6;2017:20;2042:58;2094:5;2042:58;:::i;82533:155::-;;3173:6;3160:20;3185:51;3230:5;3185:51;:::i;90126:105::-;90209:1;90202:5;90199:12;90189:2;;90215:9;90189:2;90183:48;:::o;90238:116::-;90332:1;90325:5;90322:12;90312:2;;90338:9;90361:118;90457:1;90450:5;90447:12;90437:2;;90463:9;91527:117;-1:-1;;;;;86647:54;;91586:35;;91576:2;;91635:1;;91625:12;91651:111;91732:5;84435:13;84428:21;91710:5;91707:32;91697:2;;91753:1;;91743:12;91893:121;91989:1;91982:5;91979:12;91969:2;;92005:1;;91995:12;92021:108;92104:1;92097:5;92094:12;92084:2;;92120:1;;92110:12;92136:119;92230:1;92223:5;92220:12;92210:2;;92246:1;;92236:12;92262:121;92358:1;92351:5;92348:12;92338:2;;92374:1;;92364:12;92518:113;92605:2;92598:5;92595:13;92585:2;;92622:1;;92612:12;92638:113;92725:2;92718:5;92715:13;92705:2;;92742:1;;92732:12;93010:110;93094:2;93087:5;93084:13;93074:2;;93111:1;;93101:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol\";\n\nimport \"../Base/AssetActor/BaseActor.sol\";\nimport \"./ICEGRegistry.sol\";\n\n\n/**\n * @title CEGActor\n * @notice TODO\n */\ncontract CEGActor is BaseActor {\n\n    constructor(IAssetRegistry assetRegistry, IDataRegistry dataRegistry)\n        public\n        BaseActor(assetRegistry, dataRegistry)\n    {}\n\n    /**\n     * @notice Derives initial state of the asset terms and stores together with\n     * terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n     * @param terms asset specific terms\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine address of the ACTUS engine used for the spec. ContractType\n     * @param admin address of the admin of the asset (optional)\n     */\n    function initialize(\n        CEGTerms calldata terms,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address admin\n    )\n        external\n    {\n        require(\n            engine != address(0) && IEngine(engine).contractType() == ContractType.CEG,\n            \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\"\n        );\n\n        // solium-disable-next-line\n        bytes32 assetId = keccak256(abi.encode(terms, block.timestamp));\n\n        // check if first contract reference in terms references an underlying asset\n        if (terms.contractReference_1.role == ContractReferenceRole.COVE) {\n            require(\n                terms.contractReference_1.object != bytes32(0),\n                \"CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\"\n            );\n        }\n\n        // todo add guarantee validation logic for contract reference 2\n\n        // compute the initial state of the asset\n        State memory initialState = ICEGEngine(engine).computeInitialState(terms);\n\n        // register the asset in the AssetRegistry\n        ICEGRegistry(address(assetRegistry)).registerAsset(\n            assetId,\n            terms,\n            initialState,\n            schedule,\n            ownership,\n            engine,\n            address(this),\n            admin\n        );\n\n        emit InitializedAsset(assetId, ContractType.CEG, ownership.creatorObligor, ownership.counterpartyObligor);\n    }\n\n    function computeStateAndPayoffForEvent(bytes32 assetId, State memory state, bytes32 _event)\n        internal\n        view\n        override\n        returns (State memory, int256)\n    {\n        address engine = assetRegistry.getEngine(assetId);\n        CEGTerms memory terms = ICEGRegistry(address(assetRegistry)).getTerms(assetId);\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        int256 payoff = ICEGEngine(engine).computePayoffForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForPOF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n        state = ICEGEngine(engine).computeStateForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForSTF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n\n        return (state, payoff);\n    }\n}",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGActor.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGActor.sol",
    "exportedSymbols": {
      "CEGActor": [
        9699
      ]
    },
    "id": 9700,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9480,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:34"
      },
      {
        "id": 9481,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:34"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "id": 9482,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 30295,
        "src": "101:68:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 9483,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 3852,
        "src": "171:42:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol",
        "file": "./ICEGRegistry.sol",
        "id": 9484,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 11692,
        "src": "214:28:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9486,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 9487,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:34"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 9485,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:34",
          "text": " @title CEGActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 9699,
        "linearizedBaseContracts": [
          9699,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "CEGActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9498,
              "nodeType": "Block",
              "src": "462:2:34",
              "statements": []
            },
            "documentation": null,
            "id": 9499,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9494,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9489,
                    "src": "429:13:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9495,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9491,
                    "src": "444:12:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 9496,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9493,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:34"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9489,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9499,
                  "src": "338:28:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9488,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9491,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9499,
                  "src": "368:26:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9490,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:34"
            },
            "returnParameters": {
              "id": 9497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:34"
            },
            "scope": 9699,
            "src": "326:138:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9603,
              "nodeType": "Block",
              "src": "1161:1273:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9515,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9509,
                            "src": "1192:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:34",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 9517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9516,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 9528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9522,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9509,
                                    "src": "1224:6:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9521,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 9523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 9524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 9525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9526,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 9527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CEG",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 9530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 9514,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9532,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:34"
                },
                {
                  "assignments": [
                    9534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9534,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9603,
                      "src": "1395:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9533,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9543,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9538,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "1434:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                              "typeString": "struct CEGTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9539,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                              "typeString": "struct CEGTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9536,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 9537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 9541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9535,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 9542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 9549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9544,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9502,
                          "src": "1558:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                            "typeString": "struct CEGTerms calldata"
                          }
                        },
                        "id": 9545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22849,
                        "src": "1558:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 9546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "1558:30:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9547,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "1592:21:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 9548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1592:26:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "1558:60:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9563,
                  "nodeType": "IfStatement",
                  "src": "1554:252:34",
                  "trueBody": {
                    "id": 9562,
                    "nodeType": "Block",
                    "src": "1620:186:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 9558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9551,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9502,
                                    "src": "1659:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                                      "typeString": "struct CEGTerms calldata"
                                    }
                                  },
                                  "id": 9552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22849,
                                  "src": "1659:25:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 9553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "1659:32:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1703:1:34",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1695:7:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 9554,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1695:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 9557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1695:10:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1659:46:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345474143746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f315f4f424a454354",
                              "id": 9559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1723:58:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1bdbc4dcebd67fdabde864d63e528bc7eed465cb624cf41aa0acc9b49586159b",
                                "typeString": "literal_string \"CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              },
                              "value": "CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1bdbc4dcebd67fdabde864d63e528bc7eed465cb624cf41aa0acc9b49586159b",
                                "typeString": "literal_string \"CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              }
                            ],
                            "id": 9550,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1634:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1634:161:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9561,
                        "nodeType": "ExpressionStatement",
                        "src": "1634:161:34"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    9565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9565,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9603,
                      "src": "1939:25:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9564,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1939:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9572,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9570,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "2006:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9567,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9509,
                            "src": "1978:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9566,
                          "name": "ICEGEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30294,
                          "src": "1967:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                            "typeString": "type(contract ICEGEngine)"
                          }
                        },
                        "id": 9568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1967:18:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                          "typeString": "contract ICEGEngine"
                        }
                      },
                      "id": 9569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30209,
                      "src": "1967:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CEGTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 9571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1967:45:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1939:73:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9580,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9534,
                        "src": "2138:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9581,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "2159:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9582,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "2178:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9583,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9505,
                        "src": "2204:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9584,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9507,
                        "src": "2226:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9585,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9509,
                        "src": "2249:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9588,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2277:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CEGActor_$9699",
                              "typeString": "contract CEGActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_CEGActor_$9699",
                              "typeString": "contract CEGActor"
                            }
                          ],
                          "id": 9587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2269:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 9586,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2269:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 9589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2269:13:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9590,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9511,
                        "src": "2296:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9576,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2095:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 9575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2087:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9574,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2087:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2087:22:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9573,
                          "name": "ICEGRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11691,
                          "src": "2074:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGRegistry_$11691_$",
                            "typeString": "type(contract ICEGRegistry)"
                          }
                        },
                        "id": 9578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2074:36:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                          "typeString": "contract ICEGRegistry"
                        }
                      },
                      "id": 9579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11676,
                      "src": "2074:50:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct CEGTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 9591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2074:237:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9592,
                  "nodeType": "ExpressionStatement",
                  "src": "2074:237:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9594,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9534,
                        "src": "2344:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9595,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "2353:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 9596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CEG",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2353:16:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9597,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9507,
                          "src": "2371:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 9598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "2371:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9599,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9507,
                          "src": "2397:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 9600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "2397:29:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9593,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "2327:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 9601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2327:100:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9602,
                  "nodeType": "EmitStatement",
                  "src": "2322:105:34"
                }
              ]
            },
            "documentation": {
              "id": 9500,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:34",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)"
            },
            "functionSelector": "ce892c97",
            "id": 9604,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9502,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "983:23:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9501,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "983:8:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9505,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1016:27:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9503,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9504,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9507,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1053:33:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9506,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9509,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1096:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9508,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9511,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1120:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:34"
            },
            "returnParameters": {
              "id": 9513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:34"
            },
            "scope": 9699,
            "src": "954:1480:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 9697,
              "nodeType": "Block",
              "src": "2622:944:34",
              "statements": [
                {
                  "assignments": [
                    9619
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9619,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2632:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9618,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2632:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9624,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9622,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9606,
                        "src": "2673:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9620,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2649:13:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 9621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2649:23:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 9623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2649:32:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2632:49:34"
                },
                {
                  "assignments": [
                    9626
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9626,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2691:21:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                        "typeString": "struct CEGTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9625,
                        "name": "CEGTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22852,
                        "src": "2691:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                          "typeString": "struct CEGTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9636,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9634,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9606,
                        "src": "2761:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9630,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2736:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 9629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2728:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9628,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2728:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2728:22:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9627,
                          "name": "ICEGRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11691,
                          "src": "2715:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGRegistry_$11691_$",
                            "typeString": "type(contract ICEGRegistry)"
                          }
                        },
                        "id": 9632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2715:36:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                          "typeString": "contract ICEGRegistry"
                        }
                      },
                      "id": 9633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11683,
                      "src": "2715:45:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 9635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2715:54:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2691:78:34"
                },
                {
                  "assignments": [
                    9638,
                    9640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9638,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2780:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9637,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2780:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9640,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2801:20:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9639,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2801:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9644,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9642,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9610,
                        "src": "2837:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9641,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2825:11:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 9643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2825:19:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2779:65:34"
                },
                {
                  "assignments": [
                    9646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9646,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2855:13:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 9645,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2855:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9668,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9651,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9626,
                        "src": "2925:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                          "typeString": "struct CEGTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9652,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9608,
                        "src": "2944:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9653,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9610,
                        "src": "2963:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9655,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9606,
                            "src": "3022:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9656,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9638,
                            "src": "3047:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9658,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9640,
                                "src": "3088:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9659,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3102:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9660,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22809,
                                "src": "3102:27:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9661,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3131:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9662,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22803,
                                "src": "3131:14:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9663,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3147:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9664,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22825,
                                "src": "3147:18:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9657,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "3074:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 9665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3074:92:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9654,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2983:21:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 9666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2983:197:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                          "typeString": "struct CEGTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9648,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9619,
                            "src": "2882:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9647,
                          "name": "ICEGEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30294,
                          "src": "2871:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                            "typeString": "type(contract ICEGEngine)"
                          }
                        },
                        "id": 9649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2871:18:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                          "typeString": "contract ICEGEngine"
                        }
                      },
                      "id": 9650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30237,
                      "src": "2871:40:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CEGTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 9667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2871:319:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2855:335:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9669,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9608,
                      "src": "3200:5:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9674,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9626,
                          "src": "3261:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                            "typeString": "struct CEGTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9675,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9608,
                          "src": "3280:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9676,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9610,
                          "src": "3299:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9678,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9606,
                              "src": "3358:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9679,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9638,
                              "src": "3383:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9681,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9640,
                                  "src": "3424:12:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9682,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3438:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9683,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22809,
                                  "src": "3438:27:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9684,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3467:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9685,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22803,
                                  "src": "3467:14:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9686,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3483:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9687,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22825,
                                  "src": "3483:18:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9680,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3410:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 9688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3410:92:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9677,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "3319:21:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 9689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3319:197:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                            "typeString": "struct CEGTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9671,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9619,
                              "src": "3219:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9670,
                            "name": "ICEGEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30294,
                            "src": "3208:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                              "typeString": "type(contract ICEGEngine)"
                            }
                          },
                          "id": 9672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3208:18:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                            "typeString": "contract ICEGEngine"
                          }
                        },
                        "id": 9673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 30223,
                        "src": "3208:39:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CEGTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 9690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3208:318:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "3200:326:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 9692,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:326:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 9693,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9608,
                        "src": "3545:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9694,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9646,
                        "src": "3552:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 9695,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3544:15:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 9617,
                  "id": 9696,
                  "nodeType": "Return",
                  "src": "3537:22:34"
                }
              ]
            },
            "documentation": null,
            "id": 9698,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9612,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2570:8:34"
            },
            "parameters": {
              "id": 9611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9606,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2479:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9605,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2479:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9608,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2496:18:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9607,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2496:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9610,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2516:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9609,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2516:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2478:53:34"
            },
            "returnParameters": {
              "id": 9617,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9614,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2596:12:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9613,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2596:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9616,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2610:6:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9615,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2610:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2595:22:34"
            },
            "scope": 9699,
            "src": "2440:1126:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 9700,
        "src": "288:3280:34"
      }
    ],
    "src": "41:3527:34"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/CEGActor.sol",
    "exportedSymbols": {
      "CEGActor": [
        9699
      ]
    },
    "id": 9700,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9480,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:34"
      },
      {
        "id": 9481,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:34"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CEG/ICEGEngine.sol",
        "id": 9482,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 30295,
        "src": "101:68:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 9483,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 3852,
        "src": "171:42:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol",
        "file": "./ICEGRegistry.sol",
        "id": 9484,
        "nodeType": "ImportDirective",
        "scope": 9700,
        "sourceUnit": 11692,
        "src": "214:28:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9486,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 9487,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:34"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 9485,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:34",
          "text": " @title CEGActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 9699,
        "linearizedBaseContracts": [
          9699,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "CEGActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9498,
              "nodeType": "Block",
              "src": "462:2:34",
              "statements": []
            },
            "documentation": null,
            "id": 9499,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9494,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9489,
                    "src": "429:13:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 9495,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9491,
                    "src": "444:12:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 9496,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9493,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:34"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9489,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9499,
                  "src": "338:28:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9488,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9491,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9499,
                  "src": "368:26:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9490,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:34"
            },
            "returnParameters": {
              "id": 9497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:34"
            },
            "scope": 9699,
            "src": "326:138:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9603,
              "nodeType": "Block",
              "src": "1161:1273:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9515,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9509,
                            "src": "1192:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:34",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 9517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9516,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 9528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9522,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9509,
                                    "src": "1224:6:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9521,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 9523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 9524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 9525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9526,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 9527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "CEG",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 9530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 9514,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9532,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:34"
                },
                {
                  "assignments": [
                    9534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9534,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9603,
                      "src": "1395:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9533,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9543,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9538,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "1434:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                              "typeString": "struct CEGTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9539,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 9540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                              "typeString": "struct CEGTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9536,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 9537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 9541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 9535,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 9542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                      "typeString": "enum ContractReferenceRole"
                    },
                    "id": 9549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9544,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9502,
                          "src": "1558:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                            "typeString": "struct CEGTerms calldata"
                          }
                        },
                        "id": 9545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractReference_1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22849,
                        "src": "1558:25:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                          "typeString": "struct ContractReference calldata"
                        }
                      },
                      "id": 9546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22631,
                      "src": "1558:30:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9547,
                        "name": "ContractReferenceRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22525,
                        "src": "1592:21:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                          "typeString": "type(enum ContractReferenceRole)"
                        }
                      },
                      "id": 9548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "COVE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1592:26:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      }
                    },
                    "src": "1558:60:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9563,
                  "nodeType": "IfStatement",
                  "src": "1554:252:34",
                  "trueBody": {
                    "id": 9562,
                    "nodeType": "Block",
                    "src": "1620:186:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 9558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9551,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9502,
                                    "src": "1659:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                                      "typeString": "struct CEGTerms calldata"
                                    }
                                  },
                                  "id": 9552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractReference_1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22849,
                                  "src": "1659:25:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ContractReference_$22632_calldata_ptr",
                                    "typeString": "struct ContractReference calldata"
                                  }
                                },
                                "id": 9553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "object",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22625,
                                "src": "1659:32:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1703:1:34",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1695:7:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 9554,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1695:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 9557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1695:10:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1659:46:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4345474143746f722e696e697469616c697a653a20494e56414c49445f434f4e54524143545f5245464552454e43455f315f4f424a454354",
                              "id": 9559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1723:58:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1bdbc4dcebd67fdabde864d63e528bc7eed465cb624cf41aa0acc9b49586159b",
                                "typeString": "literal_string \"CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              },
                              "value": "CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1bdbc4dcebd67fdabde864d63e528bc7eed465cb624cf41aa0acc9b49586159b",
                                "typeString": "literal_string \"CEGACtor.initialize: INVALID_CONTRACT_REFERENCE_1_OBJECT\""
                              }
                            ],
                            "id": 9550,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1634:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1634:161:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9561,
                        "nodeType": "ExpressionStatement",
                        "src": "1634:161:34"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    9565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9565,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9603,
                      "src": "1939:25:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9564,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1939:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9572,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9570,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "2006:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9567,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9509,
                            "src": "1978:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9566,
                          "name": "ICEGEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30294,
                          "src": "1967:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                            "typeString": "type(contract ICEGEngine)"
                          }
                        },
                        "id": 9568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1967:18:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                          "typeString": "contract ICEGEngine"
                        }
                      },
                      "id": 9569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30209,
                      "src": "1967:38:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CEGTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 9571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1967:45:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1939:73:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9580,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9534,
                        "src": "2138:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9581,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9502,
                        "src": "2159:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9582,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "2178:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9583,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9505,
                        "src": "2204:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9584,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9507,
                        "src": "2226:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9585,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9509,
                        "src": "2249:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9588,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2277:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_CEGActor_$9699",
                              "typeString": "contract CEGActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_CEGActor_$9699",
                              "typeString": "contract CEGActor"
                            }
                          ],
                          "id": 9587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2269:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 9586,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2269:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 9589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2269:13:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9590,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9511,
                        "src": "2296:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                          "typeString": "struct CEGTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9576,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2095:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 9575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2087:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9574,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2087:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2087:22:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9573,
                          "name": "ICEGRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11691,
                          "src": "2074:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGRegistry_$11691_$",
                            "typeString": "type(contract ICEGRegistry)"
                          }
                        },
                        "id": 9578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2074:36:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                          "typeString": "contract ICEGRegistry"
                        }
                      },
                      "id": 9579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11676,
                      "src": "2074:50:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct CEGTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 9591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2074:237:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9592,
                  "nodeType": "ExpressionStatement",
                  "src": "2074:237:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9594,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9534,
                        "src": "2344:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9595,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "2353:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 9596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "CEG",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2353:16:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9597,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9507,
                          "src": "2371:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 9598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "2371:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9599,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9507,
                          "src": "2397:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 9600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "2397:29:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9593,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "2327:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 9601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2327:100:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9602,
                  "nodeType": "EmitStatement",
                  "src": "2322:105:34"
                }
              ]
            },
            "documentation": {
              "id": 9500,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:34",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)"
            },
            "functionSelector": "ce892c97",
            "id": 9604,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 9512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9502,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "983:23:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CEGTerms_$22852_calldata_ptr",
                    "typeString": "struct CEGTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9501,
                    "name": "CEGTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22852,
                    "src": "983:8:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                      "typeString": "struct CEGTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9505,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1016:27:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9503,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9504,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9507,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1053:33:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9506,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9509,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1096:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9508,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9511,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9604,
                  "src": "1120:13:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:34"
            },
            "returnParameters": {
              "id": 9513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:34"
            },
            "scope": 9699,
            "src": "954:1480:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 9697,
              "nodeType": "Block",
              "src": "2622:944:34",
              "statements": [
                {
                  "assignments": [
                    9619
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9619,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2632:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9618,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2632:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9624,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9622,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9606,
                        "src": "2673:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9620,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2649:13:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 9621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2649:23:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 9623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2649:32:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2632:49:34"
                },
                {
                  "assignments": [
                    9626
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9626,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2691:21:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                        "typeString": "struct CEGTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9625,
                        "name": "CEGTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22852,
                        "src": "2691:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_storage_ptr",
                          "typeString": "struct CEGTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9636,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9634,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9606,
                        "src": "2761:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9630,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2736:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 9629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2728:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9628,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2728:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2728:22:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9627,
                          "name": "ICEGRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11691,
                          "src": "2715:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGRegistry_$11691_$",
                            "typeString": "type(contract ICEGRegistry)"
                          }
                        },
                        "id": 9632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2715:36:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGRegistry_$11691",
                          "typeString": "contract ICEGRegistry"
                        }
                      },
                      "id": 9633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11683,
                      "src": "2715:45:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_CEGTerms_$22852_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct CEGTerms memory)"
                      }
                    },
                    "id": 9635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2715:54:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                      "typeString": "struct CEGTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2691:78:34"
                },
                {
                  "assignments": [
                    9638,
                    9640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9638,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2780:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9637,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2780:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9640,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2801:20:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9639,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2801:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9644,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9642,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9610,
                        "src": "2837:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9641,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2825:11:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 9643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2825:19:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2779:65:34"
                },
                {
                  "assignments": [
                    9646
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9646,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9697,
                      "src": "2855:13:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 9645,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2855:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9668,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9651,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9626,
                        "src": "2925:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                          "typeString": "struct CEGTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9652,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9608,
                        "src": "2944:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9653,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9610,
                        "src": "2963:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9655,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9606,
                            "src": "3022:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9656,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9638,
                            "src": "3047:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9658,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9640,
                                "src": "3088:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9659,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3102:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9660,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22809,
                                "src": "3102:27:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9661,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3131:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9662,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22803,
                                "src": "3131:14:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9663,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9626,
                                  "src": "3147:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                    "typeString": "struct CEGTerms memory"
                                  }
                                },
                                "id": 9664,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22825,
                                "src": "3147:18:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9657,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "3074:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 9665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3074:92:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9654,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2983:21:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 9666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2983:197:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                          "typeString": "struct CEGTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9648,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9619,
                            "src": "2882:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9647,
                          "name": "ICEGEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30294,
                          "src": "2871:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                            "typeString": "type(contract ICEGEngine)"
                          }
                        },
                        "id": 9649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2871:18:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                          "typeString": "contract ICEGEngine"
                        }
                      },
                      "id": 9650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30237,
                      "src": "2871:40:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CEGTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 9667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2871:319:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2855:335:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9669,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9608,
                      "src": "3200:5:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9674,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9626,
                          "src": "3261:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                            "typeString": "struct CEGTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9675,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9608,
                          "src": "3280:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9676,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9610,
                          "src": "3299:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9678,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9606,
                              "src": "3358:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9679,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9638,
                              "src": "3383:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9681,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9640,
                                  "src": "3424:12:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9682,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3438:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9683,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22809,
                                  "src": "3438:27:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9684,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3467:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9685,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22803,
                                  "src": "3467:14:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9686,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9626,
                                    "src": "3483:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                                      "typeString": "struct CEGTerms memory"
                                    }
                                  },
                                  "id": 9687,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22825,
                                  "src": "3483:18:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9680,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3410:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 9688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3410:92:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9677,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "3319:21:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 9689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3319:197:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CEGTerms_$22852_memory_ptr",
                            "typeString": "struct CEGTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9671,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9619,
                              "src": "3219:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9670,
                            "name": "ICEGEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30294,
                            "src": "3208:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ICEGEngine_$30294_$",
                              "typeString": "type(contract ICEGEngine)"
                            }
                          },
                          "id": 9672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3208:18:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ICEGEngine_$30294",
                            "typeString": "contract ICEGEngine"
                          }
                        },
                        "id": 9673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 30223,
                        "src": "3208:39:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_CEGTerms_$22852_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CEGTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 9690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3208:318:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "3200:326:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 9692,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:326:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 9693,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9608,
                        "src": "3545:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9694,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9646,
                        "src": "3552:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 9695,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3544:15:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 9617,
                  "id": 9696,
                  "nodeType": "Return",
                  "src": "3537:22:34"
                }
              ]
            },
            "documentation": null,
            "id": 9698,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9612,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2570:8:34"
            },
            "parameters": {
              "id": 9611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9606,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2479:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9605,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2479:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9608,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2496:18:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9607,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2496:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9610,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2516:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9609,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2516:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2478:53:34"
            },
            "returnParameters": {
              "id": 9617,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9614,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2596:12:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9613,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2596:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9616,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9698,
                  "src": "2610:6:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9615,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2610:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2595:22:34"
            },
            "scope": 9699,
            "src": "2440:1126:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 9700,
        "src": "288:3280:34"
      }
    ],
    "src": "41:3527:34"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xdb284Bb8A2A2476EDa39F8C6F2a6a0e8B84b4799",
      "transactionHash": "0x8e63e853936dae03b6c8469f58972d53516445b9d5ba20f2b9ba341dabf0e223"
    },
    "5": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x78470729372568Ac418c9A32925dBA613D95c06d",
      "transactionHash": "0x5f44117add4d45746578fd92c79e02ab76c72ad4f6c5336b250720f5070afbe0"
    },
    "1994": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x5f1bC4808153b95aed8537C0ba57bc1034a97196",
      "transactionHash": "0x14eccf32723200107d72ebb572dfbd3b870f52dc68de3ece896d6a264af689d8"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.834Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],(address,address,address,address),address,address)": {
        "params": {
          "admin": "address of the admin of the asset (optional)",
          "engine": "address of the ACTUS engine used for the spec. ContractType",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "terms": "asset specific terms"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "progress(bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "progressWith(bytes32,bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "_event": "the unscheduled event",
          "assetId": "id of the asset"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "CEGActor",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),bytes32[],(address,address,address,address),address,address)": {
        "notice": "Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry."
      },
      "progress(bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule."
      },
      "progressWith(bytes32,bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events."
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "TODO",
    "version": 1
  }
}