{
  "contractName": "ANNActor",
  "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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\":\"ANNActor\",\"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,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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/ANN/ANNActor.sol\":\"ANNActor\"},\"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/ANN/ANNActor.sol\":{\"keccak256\":\"0x3278331b1fcb3982bead8a16c785682d94dddf8f56d7f122b28313cf1cdd344f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://550d8d0de550aa43d0671e6917d9f099cb5fd7147ab19f35cc43a9571d0eac7a\",\"dweb:/ipfs/QmSJBhqqT9f7C4MnWUAzswBQ2LdVWPG9ZVdiFPdAZhn5Cb\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol\":{\"keccak256\":\"0xcc12f3d90c2d92853ecf5807ef884b91ee304bab75e2d51b39b88fe941328468\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b16d114799afad30c03755c94b54f57dfd9fdd5c0da84d671a5cdf75731c553\",\"dweb:/ipfs/QmXYFvotetoJzgBPYUFKrw6RxDVyFESUPtJqy9LTaMeRRE\"]},\"/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\"]},\"@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/ANN/IANNEngine.sol\":{\"keccak256\":\"0x2c444213691e110c6ef818015c4e8887fe408462be51dfcb0eeefa1ea8cc8e1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a52d6401a369653b0c480ba33772901ac33e2a5c06ab77c054a18408c5b467b0\",\"dweb:/ipfs/QmXV7tQEo2FeG3st6weByeMrA7zZJZCsBfakNzr7xi4DNv\"]},\"@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": "0x60806040523480156200001157600080fd5b5060405162004290380380620042908339810160408190526200003491620000ce565b818160006200004b6001600160e01b03620000ca16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550620001259050565b3390565b60008060408385031215620000e1578182fd5b8251620000ee816200010c565b602084015190925062000101816200010c565b809150509250929050565b6001600160a01b03811681146200012257600080fd5b50565b61415b80620001356000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638bc58fe411610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638bc58fe4146101a85780638da5cb5b146101bb578063979d7e86146101d0578063a39c1d6b146101d8576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612971565b61022c565b60405161011b929190613515565b60405180910390f35b61013761013236600461292a565b610245565b60405161011b919061352e565b6101576101523660046129a1565b610270565b005b610157610525565b61017461016f366004612971565b6105a4565b60405161011b9291906137f9565b610157610190366004612971565b6105cd565b6101376101a33660046129de565b61082b565b6101576101b6366004612a46565b610839565b6101c3610a72565b60405161011b91906134c3565b6101c3610a81565b6101c3610a90565b6101376101ee3660046129fa565b610a9f565b610137610201366004612f63565b610abd565b6101576102143660046128f2565b610c12565b610137610227366004612f63565b610cc8565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a29085903390600401613537565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f49190612955565b6103195760405162461bcd60e51b815260040161031090613a23565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a90869060040161352e565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612989565b146103b75760405162461bcd60e51b815260040161031090613c32565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e890869060040161352e565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612989565b146104555760405162461bcd60e51b8152600401610310906139d5565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c90879060040161352e565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612989565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b815260040161031090613890565b61051f8484610d3c565b50505050565b61052d6112d3565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b815260040161031090613b64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd90849060040161352e565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190612955565b6106695760405162461bcd60e51b815260040161031090613a6e565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a90859060040161352e565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612989565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061072390859060040161352e565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612989565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab90859060040161352e565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612989565b90505b8061081d5760405162461bcd60e51b81526004016103109061393f565b6108278282610d3c565b5050565b600081601c81111561026a57fe5b6001600160a01b038216158015906108cc57506001826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf91906129c2565b60128111156108ca57fe5b145b6108e85760405162461bcd60e51b815260040161031090613833565b600086426040516020016108fd929190613d21565b60405160208183030381529060405280519060200120905061091d61250a565b6040516330b126d760e01b81526001600160a01b038516906330b126d790610949908b90600401613d12565b6102806040518083038186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190612e66565b60015460405163e4d063d560e01b81529192506001600160a01b03169063e4d063d5906109db9085908c9086908d908d908d908d9030908e906004016136c6565b600060405180830381600087803b1580156109f557600080fd5b505af1158015610a09573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a915060019050610a4160208901896128f2565b610a5160608a0160408b016128f2565b604051610a60939291906137cd565b60405180910390a25050505050505050565b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b60008160f884601c811115610ab057fe5b60ff16901b179392505050565b600081851415610ace575083610c0a565b6001846008811115610adc57fe5b1480610af357506003846008811115610af157fe5b145b15610b0957610b0285846112d7565b9050610c0a565b6002846008811115610b1757fe5b1480610b2e57506004846008811115610b2c57fe5b145b15610b72576000610b3f86856112d7565b9050610b4a86611333565b610b5382611333565b1415610b60579050610c0a565b610b6a868561134b565b915050610c0a565b6005846008811115610b8057fe5b1480610b9757506007846008811115610b9557fe5b145b15610ba657610b02858461134b565b6006846008811115610bb457fe5b1480610bcb57506008846008811115610bc957fe5b145b15610c07576000610bdc868561134b565b9050610be786611333565b610bf082611333565b1415610bfd579050610c0a565b610b6a86856112d7565b50835b949350505050565b610c1a6112d3565b6000546001600160a01b03908116911614610c475760405162461bcd60e51b815260040161031090613b64565b6001600160a01b038116610c6d5760405162461bcd60e51b8152600401610310906138db565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610cd857fe5b1480610cef57506004846008811115610ced57fe5b145b80610d0557506007846008811115610d0357fe5b145b80610d1b57506008846008811115610d1957fe5b145b15610d27575083610c0a565b610d3385858585610abd565b95945050505050565b610d4461250a565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610d7490869060040161352e565b6102806040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612e66565b9050600081516005811115610dd657fe5b1480610dee5750600181516005811115610dec57fe5b145b80610e055750600281516005811115610e0357fe5b145b610e215760405162461bcd60e51b815260040161031090613c7d565b600081516005811115610e3057fe5b14610eb957600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610e6590869060040161352e565b6102806040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612e66565b90505b600080610ec5846105a4565b60015460405163ecef557760e01b8152929450909250429161106f9184916001600160a01b039091169063ecef557790610f03908b9060040161361f565b60206040518083038186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f539190612faa565b60ff166008811115610f6157fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610f91908c90600401613687565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190612faa565b60ff166001811115610fef57fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d9061101f908d90600401613646565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612989565b111561108d5760405162461bcd60e51b815260040161031090613bdf565b61109561250a565b60006110a2878688611399565b9150915060006110b388888461161f565b9050806111b7576000865160058111156110c957fe5b14156111345760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d7090611101908b908a906004016137b8565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611166908b908b9060040161354e565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b5050505060006111a5600b86610a9f565b90506111b2898583611399565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd4906111e9908b9087906004016137b8565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050508015156001141561128d5760015460405163de07a17360e01b81526001600160a01b039091169063de07a1739061125a908b908b90879060040161355c565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e96001831515146112c057600b6112c2565b865b8685604051610a6093929190613811565b3390565b600060018260018111156112e757fe5b141561132c576112f683611a55565b6006141561131057611309836002611a68565b905061026a565b61131983611a55565b6007141561132c57611309836001611a68565b5090919050565b6000611343620151808304611a7d565b509392505050565b6000600182600181111561135b57fe5b141561132c5761136a83611a55565b6006141561137d57611309836001611b13565b61138683611a55565b6007141561132c57611309836002611b13565b6113a161250a565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda1906113d690899060040161352e565b60206040518083038186803b1580156113ee57600080fd5b505afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061290e565b90506114306125a4565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611460908a9060040161352e565b6108406040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612b04565b90506000806114bf876105a4565b915091506000846001600160a01b0316639485ba4e858b8b6114fa8f896114f58a8d608001518e602001518f6101e00151610cc8565b611b28565b6040518563ffffffff1660e01b81526004016115199493929190613d3e565b60206040518083038186803b15801561153157600080fd5b505afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115699190612989565b9050846001600160a01b031663acaed9d5858b8b6115a08f8961159b8a8d608001518e602001518f6101e00151610cc8565b611d1f565b6040518563ffffffff1660e01b81526004016115bf9493929190613d3e565b6102806040518083038186803b1580156115d857600080fd5b505afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612e66565b9a909950975050505050505050565b6000831580159061162f57508215155b61164b5760405162461bcd60e51b815260040161031090613b07565b8161165857506001611a4e565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb01255990611689908890600401613597565b60206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d9919061290e565b90506116e3612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611713908990600401613572565b60806040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117639190612e1c565b905060048160600151600481111561177757fe5b141561178c5780516117889061022c565b5091505b611794612760565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef7906117c4908a9060040161352e565b60806040518083038186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118149190612db4565b90506000806000871315611843575060408201516001600160a01b03821661183e57826020015191505b61185c565b5081516001600160a01b03821661185c57826060015191505b600080881361186f578760001902611871565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118a29291906134d7565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190612989565b108061197957506040516370a0823160e01b815281906001600160a01b038816906370a08231906119279086906004016134c3565b60206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190612989565b105b156119c357897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119ac90613921565b60405180910390a260009650505050505050611a4e565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd906119f3908590879086906004016134f1565b602060405180830381600087803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190612955565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ad457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611b5d908890600401613597565b60206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad919061290e565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611be39089906004016135fb565b60206040518083038186803b158015611bfb57600080fd5b505afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c33919061290e565b9050806001600160a01b0316826001600160a01b031614611d165760025460405160009182916001600160a01b03909116906308a4ec1090611c7b90879087906020016134d7565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611caf92919061354e565b604080518083038186803b158015611cc657600080fd5b505afa158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe9190612a17565b915091508015611d1357509250611a4e915050565b50505b50509392505050565b6000600d83601c811115611d2f57fe5b1415611e4d5760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611d77908b906004016135cc565b60206040518083038186803b158015611d8f57600080fd5b505afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc79190612989565b866040518363ffffffff1660e01b8152600401611de592919061354e565b604080518083038186803b158015611dfc57600080fd5b505afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612a17565b915091508015611e4657509050611a4e565b5050612444565b600b83601c811115611e5b57fe5b1415611e68575042611a4e565b601a83601c811115611e7657fe5b14156121a957611e84612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611eb49088906004016136a1565b60806040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f049190612e1c565b9050600381606001516004811115611f1857fe5b14156120495780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f5190859060040161352e565b60206040518083038186803b158015611f6957600080fd5b505afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190612955565b1515600114611fc25760405162461bcd60e51b815260040161031090613980565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b90611fee908590600401613664565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e9190612989565b9350611a4e92505050565b612051612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612081908990600401613572565b60806040518083038186803b15801561209957600080fd5b505afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190612e1c565b90506002816040015160048111156120e557fe5b14801561210157506000816060015160048111156120ff57fe5b145b15611e46576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec109161213c918a9060040161354e565b604080518083038186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190612a17565b9150915080156121a057509250611a4e915050565b50505050612444565b601783601c8111156121b757fe5b1415612444576121c5612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906121f59088906004016136a1565b60806040518083038186803b15801561220d57600080fd5b505afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122459190612e1c565b905060028160400151600481111561225957fe5b148015612275575060008160600151600481111561227357fe5b145b1561243a576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122b091899060040161354e565b604080518083038186803b1580156122c757600080fd5b505afa1580156122db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ff9190612a17565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612349908f906004016135b1565b60206040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612989565b6040518363ffffffff1660e01b81526004016123b692919061354e565b604080518083038186803b1580156123cd57600080fd5b505afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124059190612a17565b915091508280156124135750805b1561243557612428848363ffffffff61244e16565b9550611a4e945050505050565b505050505b5060009050611a4e565b5060009392505050565b60008161246d5760405162461bcd60e51b815260040161031090613cce565b8261247a5750600061026a565b670de0b6b3a76400008381029084828161249057fe5b05146124ae5760405162461bcd60e51b815260040161031090613b99565b826000191480156124c25750600160ff1b84145b156124df5760405162461bcd60e51b815260040161031090613b99565b60008382816124ea57fe5b05905080610c0a5760405162461bcd60e51b815260040161031090613ab6565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516105e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126e6612787565b81526020016126f3612787565b81526020016127006127aa565b815260200161270d6127aa565b815260200161271a6127aa565b81526020016127276127aa565b81526020016127346127aa565b905290565b60408051608081018252600080825260208201819052909182019081526020016000612734565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101909152600080825260208201908152602001600061279d565b803561026a8161409a565b805161026a8161409a565b805161026a816140bd565b805161026a816140ca565b805161026a816140d7565b805161026a816140f1565b803561026a816140fe565b805161026a816140fe565b805161026a81614118565b60006080828403121561283f578081fd5b50919050565b600060808284031215612856578081fd5b612860608061400e565b9050815181526020820151612874816140d7565b60208201526040820151612887816140ca565b6040820152606082015161289a816140af565b606082015292915050565b6000606082840312156128b6578081fd5b6128c0606061400e565b90508151815260208201516128d4816140d7565b602082015260408201516128e7816140af565b604082015292915050565b600060208284031215612903578081fd5b8135611a4e8161409a565b60006020828403121561291f578081fd5b8151611a4e8161409a565b6000806040838503121561293c578081fd5b82356129478161409a565b946020939093013593505050565b600060208284031215612966578081fd5b8151611a4e816140af565b600060208284031215612982578081fd5b5035919050565b60006020828403121561299a578081fd5b5051919050565b600080604083850312156129b3578182fd5b50508035926020909101359150565b6000602082840312156129d3578081fd5b8151611a4e816140fe565b6000602082840312156129ef578081fd5b8135611a4e8161410b565b60008060408385031215612a0c578182fd5b82356129478161410b565b60008060408385031215612a29578182fd5b825191506020830151612a3b816140af565b809150509250929050565b600080600080600080868803610920811215612a60578283fd5b61084080821215612a6f578384fd5b889750870135905067ffffffffffffffff80821115612a8c578384fd5b8189018a601f820112612a9d578485fd5b8035925081831115612aad578485fd5b8a60208085028301011115612ac0578485fd5b6020019650909450612ad8905088610860890161282e565b9250612ae8886108e089016127cb565b9150612af88861090089016127cb565b90509295509295509295565b60006108408284031215612b16578081fd5b612b216105e061400e565b612b2b8484612818565b8152612b3a84602085016127ec565b6020820152612b4c8460408501612802565b6040820152612b5e84606085016127f7565b6060820152612b7084608085016127e1565b6080820152612b828460a085016127ec565b60a0820152612b948460c08501612823565b60c0820152612ba68460e08501612823565b60e0820152610100612bba858286016127ec565b90820152610120612bcd858583016127d6565b90820152610140612be0858583016127d6565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c080840151908201526102e08084015190820152610300808401519082015261032080840151908201526103408084015190820152610360808401519082015261038080840151908201526103a080840151908201526103c080840151908201526103e08084015190820152610400808401519082015261042080840151908201526104408084015190820152610460808401519082015261048080840151908201526104a080840151908201526104c080840151908201526104e08084015190820152610500612d32858286016128a5565b90820152610560612d45858583016128a5565b6105208301526105c0612d5a86828701612845565b610540840152612d6e866106408701612845565b82840152612d80866106c08701612845565b610580840152612d94866107408701612845565b6105a0840152612da8866107c08701612845565b90830152509392505050565b600060808284031215612dc5578081fd5b612dcf608061400e565b8251612dda8161409a565b81526020830151612dea8161409a565b60208201526040830151612dfd8161409a565b60408201526060830151612e108161409a565b60608201529392505050565b600060808284031215612e2d578081fd5b612e37608061400e565b82518152602083015160208201526040830151612e53816140e4565b60408201526060830151612e10816140e4565b6000610280808385031215612e79578182fd5b612e828161400e565b612e8c85856127f7565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612f78578182fd5b843593506020850135612f8a816140bd565b92506040850135612f9a816140ca565b9396929550929360600135925050565b600060208284031215612fbb578081fd5b815160ff81168114611a4e578182fd5b6001600160a01b03169052565b60098110612fe257fe5b9052565b612fe281614083565b612fe281614090565b600d8110612fe257fe5b60138110612fe257fe5b60048110612fe257fe5b6020810161302d83613028838561280d565b613002565b613037818361404f565b6130446020850182612fe6565b5050613053604082018261405c565b6130606040840182612ff8565b5061306e6060820182614069565b61307b6060840182612fef565b506130896080820182614042565b6130966080840182612fd8565b506130a460a082018261404f565b6130b160a0840182612fe6565b506130bf60c0820182614076565b6130cc60c084018261300c565b506130da60e0820182614076565b6130e760e084018261300c565b506101006130f78183018361404f565b61310382850182612fe6565b505061012061311481830183614035565b61312082850182612fcb565b505061014061313181830183614035565b61313d82850182612fcb565b5050610160818101359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a080820135908301526102c080820135908301526102e08082013590830152610300808201359083015261032080820135908301526103408082013590830152610360808201359083015261038080820135908301526103a080820135908301526103c080820135908301526103e08082013590830152610400808201359083015261042080820135908301526104408082013590830152610460808201359083015261048080820135908301526104a080820135908301526104c080820135908301526104e0808201359083015261050061328f81840182840161338e565b506105606132a181840182840161338e565b506105c06132b3818401828401613300565b506106406132c5818401828401613300565b506106c06132d7818401828401613300565b506107406132e9818401828401613300565b506107c06132fb818401828401613300565b505050565b803582526020810135613312816140d7565b61331b81614090565b6020830152604081013561332e816140ca565b61333781614083565b6040830152606081013561334a816140af565b8015156060840152505050565b80518252602081015161336981614090565b6020830152604081015161337c81614083565b60408301526060908101511515910152565b8035825260208101356133a0816140d7565b6133a981614090565b602083015260408101356133bc816140af565b8015156040840152505050565b8051825260208101516133db81614090565b60208301526040908101511515910152565b6133f8828251612fef565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b6000610be08b83526136db602084018c613016565b6136e961086084018b6133ed565b610ae083018190528201879052610c006001600160fb1b0388111561370c578182fd5b60208802808a8386013783010190815285356137278161409a565b6001600160a01b03908116610b0084015260408701908061374b8360208b016127cb565b16610b20850152606088018161376182856127cb565b16610b408601528161377660808b01836127cb565b16610b6086015250505061378e610b80830186612fcb565b61379c610ba0830185612fcb565b6137aa610bc0830184612fcb565b9a9950505050505050505050565b8281526102a08101611a4e60208301846133ed565b60608101601385106137db57fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061380757fe5b9281526020015290565b60608101601d851061381f57fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b610840810161026a8284613016565b6108608101613d308285613016565b826108408301529392505050565b6000610b0082019050613d52828751613002565b6020860151613d646020840182612fe6565b506040860151613d776040840182612ff8565b506060860151613d8a6060840182612fef565b506080860151613d9d6080840182612fd8565b5060a0860151613db060a0840182612fe6565b5060c0860151613dc360c084018261300c565b5060e0860151613dd660e084018261300c565b5061010080870151613dea82850182612fe6565b505061012080870151613dff82850182612fcb565b505061014080870151613e1482850182612fcb565b5050610160868101519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151908301526102c080870151908301526102e08087015190830152610300808701519083015261032080870151908301526103408087015190830152610360808701519083015261038080870151908301526103a080870151908301526103c080870151908301526103e08087015190830152610400808701519083015261042080870151908301526104408087015190830152610460808701519083015261048080870151908301526104a080870151908301526104c080870151908301526104e0808701519083015261050080870151613f68828501826133c9565b5050610520860151610560613f7f818501836133c9565b61054088015191506105c0613f9681860184613357565b818901519250613faa610640860184613357565b6105808901519250613fc06106c0860184613357565b6105a08901519250613fd6610740860184613357565b8801519150613feb90506107c0840182613357565b50613ffa6108408301866133ed565b610ac0820193909352610ae0015292915050565b60405181810167ffffffffffffffff8111828210171561402d57600080fd5b604052919050565b60008235611a4e8161409a565b60008235611a4e816140bd565b60008235611a4e816140ca565b60008235611a4e816140f1565b60008235611a4e816140d7565b60008235611a4e81614118565b6002811061408d57fe5b50565b6006811061408d57fe5b6001600160a01b038116811461408d57600080fd5b801515811461408d57600080fd5b6009811061408d57600080fd5b6002811061408d57600080fd5b6006811061408d57600080fd5b6005811061408d57600080fd5b600d811061408d57600080fd5b6013811061408d57600080fd5b601d811061408d57600080fd5b6004811061408d57600080fdfea264697066735822122018ccb76065a2a0c13c404e673745c660572e45896cfaab26bc03bd5aa41ff95f64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638bc58fe411610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638bc58fe4146101a85780638da5cb5b146101bb578063979d7e86146101d0578063a39c1d6b146101d8576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612971565b61022c565b60405161011b929190613515565b60405180910390f35b61013761013236600461292a565b610245565b60405161011b919061352e565b6101576101523660046129a1565b610270565b005b610157610525565b61017461016f366004612971565b6105a4565b60405161011b9291906137f9565b610157610190366004612971565b6105cd565b6101376101a33660046129de565b61082b565b6101576101b6366004612a46565b610839565b6101c3610a72565b60405161011b91906134c3565b6101c3610a81565b6101c3610a90565b6101376101ee3660046129fa565b610a9f565b610137610201366004612f63565b610abd565b6101576102143660046128f2565b610c12565b610137610227366004612f63565b610cc8565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a29085903390600401613537565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f49190612955565b6103195760405162461bcd60e51b815260040161031090613a23565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a90869060040161352e565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612989565b146103b75760405162461bcd60e51b815260040161031090613c32565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e890869060040161352e565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612989565b146104555760405162461bcd60e51b8152600401610310906139d5565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c90879060040161352e565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612989565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b815260040161031090613890565b61051f8484610d3c565b50505050565b61052d6112d3565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b815260040161031090613b64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd90849060040161352e565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190612955565b6106695760405162461bcd60e51b815260040161031090613a6e565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a90859060040161352e565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612989565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061072390859060040161352e565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612989565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab90859060040161352e565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612989565b90505b8061081d5760405162461bcd60e51b81526004016103109061393f565b6108278282610d3c565b5050565b600081601c81111561026a57fe5b6001600160a01b038216158015906108cc57506001826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf91906129c2565b60128111156108ca57fe5b145b6108e85760405162461bcd60e51b815260040161031090613833565b600086426040516020016108fd929190613d21565b60405160208183030381529060405280519060200120905061091d61250a565b6040516330b126d760e01b81526001600160a01b038516906330b126d790610949908b90600401613d12565b6102806040518083038186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190612e66565b60015460405163e4d063d560e01b81529192506001600160a01b03169063e4d063d5906109db9085908c9086908d908d908d908d9030908e906004016136c6565b600060405180830381600087803b1580156109f557600080fd5b505af1158015610a09573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a915060019050610a4160208901896128f2565b610a5160608a0160408b016128f2565b604051610a60939291906137cd565b60405180910390a25050505050505050565b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b60008160f884601c811115610ab057fe5b60ff16901b179392505050565b600081851415610ace575083610c0a565b6001846008811115610adc57fe5b1480610af357506003846008811115610af157fe5b145b15610b0957610b0285846112d7565b9050610c0a565b6002846008811115610b1757fe5b1480610b2e57506004846008811115610b2c57fe5b145b15610b72576000610b3f86856112d7565b9050610b4a86611333565b610b5382611333565b1415610b60579050610c0a565b610b6a868561134b565b915050610c0a565b6005846008811115610b8057fe5b1480610b9757506007846008811115610b9557fe5b145b15610ba657610b02858461134b565b6006846008811115610bb457fe5b1480610bcb57506008846008811115610bc957fe5b145b15610c07576000610bdc868561134b565b9050610be786611333565b610bf082611333565b1415610bfd579050610c0a565b610b6a86856112d7565b50835b949350505050565b610c1a6112d3565b6000546001600160a01b03908116911614610c475760405162461bcd60e51b815260040161031090613b64565b6001600160a01b038116610c6d5760405162461bcd60e51b8152600401610310906138db565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610cd857fe5b1480610cef57506004846008811115610ced57fe5b145b80610d0557506007846008811115610d0357fe5b145b80610d1b57506008846008811115610d1957fe5b145b15610d27575083610c0a565b610d3385858585610abd565b95945050505050565b610d4461250a565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610d7490869060040161352e565b6102806040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612e66565b9050600081516005811115610dd657fe5b1480610dee5750600181516005811115610dec57fe5b145b80610e055750600281516005811115610e0357fe5b145b610e215760405162461bcd60e51b815260040161031090613c7d565b600081516005811115610e3057fe5b14610eb957600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610e6590869060040161352e565b6102806040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612e66565b90505b600080610ec5846105a4565b60015460405163ecef557760e01b8152929450909250429161106f9184916001600160a01b039091169063ecef557790610f03908b9060040161361f565b60206040518083038186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f539190612faa565b60ff166008811115610f6157fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610f91908c90600401613687565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190612faa565b60ff166001811115610fef57fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d9061101f908d90600401613646565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612989565b111561108d5760405162461bcd60e51b815260040161031090613bdf565b61109561250a565b60006110a2878688611399565b9150915060006110b388888461161f565b9050806111b7576000865160058111156110c957fe5b14156111345760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d7090611101908b908a906004016137b8565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611166908b908b9060040161354e565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b5050505060006111a5600b86610a9f565b90506111b2898583611399565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd4906111e9908b9087906004016137b8565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050508015156001141561128d5760015460405163de07a17360e01b81526001600160a01b039091169063de07a1739061125a908b908b90879060040161355c565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e96001831515146112c057600b6112c2565b865b8685604051610a6093929190613811565b3390565b600060018260018111156112e757fe5b141561132c576112f683611a55565b6006141561131057611309836002611a68565b905061026a565b61131983611a55565b6007141561132c57611309836001611a68565b5090919050565b6000611343620151808304611a7d565b509392505050565b6000600182600181111561135b57fe5b141561132c5761136a83611a55565b6006141561137d57611309836001611b13565b61138683611a55565b6007141561132c57611309836002611b13565b6113a161250a565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda1906113d690899060040161352e565b60206040518083038186803b1580156113ee57600080fd5b505afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061290e565b90506114306125a4565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611460908a9060040161352e565b6108406040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612b04565b90506000806114bf876105a4565b915091506000846001600160a01b0316639485ba4e858b8b6114fa8f896114f58a8d608001518e602001518f6101e00151610cc8565b611b28565b6040518563ffffffff1660e01b81526004016115199493929190613d3e565b60206040518083038186803b15801561153157600080fd5b505afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115699190612989565b9050846001600160a01b031663acaed9d5858b8b6115a08f8961159b8a8d608001518e602001518f6101e00151610cc8565b611d1f565b6040518563ffffffff1660e01b81526004016115bf9493929190613d3e565b6102806040518083038186803b1580156115d857600080fd5b505afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612e66565b9a909950975050505050505050565b6000831580159061162f57508215155b61164b5760405162461bcd60e51b815260040161031090613b07565b8161165857506001611a4e565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb01255990611689908890600401613597565b60206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d9919061290e565b90506116e3612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611713908990600401613572565b60806040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117639190612e1c565b905060048160600151600481111561177757fe5b141561178c5780516117889061022c565b5091505b611794612760565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef7906117c4908a9060040161352e565b60806040518083038186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118149190612db4565b90506000806000871315611843575060408201516001600160a01b03821661183e57826020015191505b61185c565b5081516001600160a01b03821661185c57826060015191505b600080881361186f578760001902611871565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118a29291906134d7565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190612989565b108061197957506040516370a0823160e01b815281906001600160a01b038816906370a08231906119279086906004016134c3565b60206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190612989565b105b156119c357897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119ac90613921565b60405180910390a260009650505050505050611a4e565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd906119f3908590879086906004016134f1565b602060405180830381600087803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190612955565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ad457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611b5d908890600401613597565b60206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad919061290e565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611be39089906004016135fb565b60206040518083038186803b158015611bfb57600080fd5b505afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c33919061290e565b9050806001600160a01b0316826001600160a01b031614611d165760025460405160009182916001600160a01b03909116906308a4ec1090611c7b90879087906020016134d7565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611caf92919061354e565b604080518083038186803b158015611cc657600080fd5b505afa158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe9190612a17565b915091508015611d1357509250611a4e915050565b50505b50509392505050565b6000600d83601c811115611d2f57fe5b1415611e4d5760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611d77908b906004016135cc565b60206040518083038186803b158015611d8f57600080fd5b505afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc79190612989565b866040518363ffffffff1660e01b8152600401611de592919061354e565b604080518083038186803b158015611dfc57600080fd5b505afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612a17565b915091508015611e4657509050611a4e565b5050612444565b600b83601c811115611e5b57fe5b1415611e68575042611a4e565b601a83601c811115611e7657fe5b14156121a957611e84612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611eb49088906004016136a1565b60806040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f049190612e1c565b9050600381606001516004811115611f1857fe5b14156120495780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f5190859060040161352e565b60206040518083038186803b158015611f6957600080fd5b505afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190612955565b1515600114611fc25760405162461bcd60e51b815260040161031090613980565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b90611fee908590600401613664565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e9190612989565b9350611a4e92505050565b612051612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612081908990600401613572565b60806040518083038186803b15801561209957600080fd5b505afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190612e1c565b90506002816040015160048111156120e557fe5b14801561210157506000816060015160048111156120ff57fe5b145b15611e46576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec109161213c918a9060040161354e565b604080518083038186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190612a17565b9150915080156121a057509250611a4e915050565b50505050612444565b601783601c8111156121b757fe5b1415612444576121c5612739565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906121f59088906004016136a1565b60806040518083038186803b15801561220d57600080fd5b505afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122459190612e1c565b905060028160400151600481111561225957fe5b148015612275575060008160600151600481111561227357fe5b145b1561243a576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122b091899060040161354e565b604080518083038186803b1580156122c757600080fd5b505afa1580156122db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ff9190612a17565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612349908f906004016135b1565b60206040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612989565b6040518363ffffffff1660e01b81526004016123b692919061354e565b604080518083038186803b1580156123cd57600080fd5b505afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124059190612a17565b915091508280156124135750805b1561243557612428848363ffffffff61244e16565b9550611a4e945050505050565b505050505b5060009050611a4e565b5060009392505050565b60008161246d5760405162461bcd60e51b815260040161031090613cce565b8261247a5750600061026a565b670de0b6b3a76400008381029084828161249057fe5b05146124ae5760405162461bcd60e51b815260040161031090613b99565b826000191480156124c25750600160ff1b84145b156124df5760405162461bcd60e51b815260040161031090613b99565b60008382816124ea57fe5b05905080610c0a5760405162461bcd60e51b815260040161031090613ab6565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516105e081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126e6612787565b81526020016126f3612787565b81526020016127006127aa565b815260200161270d6127aa565b815260200161271a6127aa565b81526020016127276127aa565b81526020016127346127aa565b905290565b60408051608081018252600080825260208201819052909182019081526020016000612734565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b6040805160808101909152600080825260208201908152602001600061279d565b803561026a8161409a565b805161026a8161409a565b805161026a816140bd565b805161026a816140ca565b805161026a816140d7565b805161026a816140f1565b803561026a816140fe565b805161026a816140fe565b805161026a81614118565b60006080828403121561283f578081fd5b50919050565b600060808284031215612856578081fd5b612860608061400e565b9050815181526020820151612874816140d7565b60208201526040820151612887816140ca565b6040820152606082015161289a816140af565b606082015292915050565b6000606082840312156128b6578081fd5b6128c0606061400e565b90508151815260208201516128d4816140d7565b602082015260408201516128e7816140af565b604082015292915050565b600060208284031215612903578081fd5b8135611a4e8161409a565b60006020828403121561291f578081fd5b8151611a4e8161409a565b6000806040838503121561293c578081fd5b82356129478161409a565b946020939093013593505050565b600060208284031215612966578081fd5b8151611a4e816140af565b600060208284031215612982578081fd5b5035919050565b60006020828403121561299a578081fd5b5051919050565b600080604083850312156129b3578182fd5b50508035926020909101359150565b6000602082840312156129d3578081fd5b8151611a4e816140fe565b6000602082840312156129ef578081fd5b8135611a4e8161410b565b60008060408385031215612a0c578182fd5b82356129478161410b565b60008060408385031215612a29578182fd5b825191506020830151612a3b816140af565b809150509250929050565b600080600080600080868803610920811215612a60578283fd5b61084080821215612a6f578384fd5b889750870135905067ffffffffffffffff80821115612a8c578384fd5b8189018a601f820112612a9d578485fd5b8035925081831115612aad578485fd5b8a60208085028301011115612ac0578485fd5b6020019650909450612ad8905088610860890161282e565b9250612ae8886108e089016127cb565b9150612af88861090089016127cb565b90509295509295509295565b60006108408284031215612b16578081fd5b612b216105e061400e565b612b2b8484612818565b8152612b3a84602085016127ec565b6020820152612b4c8460408501612802565b6040820152612b5e84606085016127f7565b6060820152612b7084608085016127e1565b6080820152612b828460a085016127ec565b60a0820152612b948460c08501612823565b60c0820152612ba68460e08501612823565b60e0820152610100612bba858286016127ec565b90820152610120612bcd858583016127d6565b90820152610140612be0858583016127d6565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c080840151908201526102e08084015190820152610300808401519082015261032080840151908201526103408084015190820152610360808401519082015261038080840151908201526103a080840151908201526103c080840151908201526103e08084015190820152610400808401519082015261042080840151908201526104408084015190820152610460808401519082015261048080840151908201526104a080840151908201526104c080840151908201526104e08084015190820152610500612d32858286016128a5565b90820152610560612d45858583016128a5565b6105208301526105c0612d5a86828701612845565b610540840152612d6e866106408701612845565b82840152612d80866106c08701612845565b610580840152612d94866107408701612845565b6105a0840152612da8866107c08701612845565b90830152509392505050565b600060808284031215612dc5578081fd5b612dcf608061400e565b8251612dda8161409a565b81526020830151612dea8161409a565b60208201526040830151612dfd8161409a565b60408201526060830151612e108161409a565b60608201529392505050565b600060808284031215612e2d578081fd5b612e37608061400e565b82518152602083015160208201526040830151612e53816140e4565b60408201526060830151612e10816140e4565b6000610280808385031215612e79578182fd5b612e828161400e565b612e8c85856127f7565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612f78578182fd5b843593506020850135612f8a816140bd565b92506040850135612f9a816140ca565b9396929550929360600135925050565b600060208284031215612fbb578081fd5b815160ff81168114611a4e578182fd5b6001600160a01b03169052565b60098110612fe257fe5b9052565b612fe281614083565b612fe281614090565b600d8110612fe257fe5b60138110612fe257fe5b60048110612fe257fe5b6020810161302d83613028838561280d565b613002565b613037818361404f565b6130446020850182612fe6565b5050613053604082018261405c565b6130606040840182612ff8565b5061306e6060820182614069565b61307b6060840182612fef565b506130896080820182614042565b6130966080840182612fd8565b506130a460a082018261404f565b6130b160a0840182612fe6565b506130bf60c0820182614076565b6130cc60c084018261300c565b506130da60e0820182614076565b6130e760e084018261300c565b506101006130f78183018361404f565b61310382850182612fe6565b505061012061311481830183614035565b61312082850182612fcb565b505061014061313181830183614035565b61313d82850182612fcb565b5050610160818101359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a080820135908301526102c080820135908301526102e08082013590830152610300808201359083015261032080820135908301526103408082013590830152610360808201359083015261038080820135908301526103a080820135908301526103c080820135908301526103e08082013590830152610400808201359083015261042080820135908301526104408082013590830152610460808201359083015261048080820135908301526104a080820135908301526104c080820135908301526104e0808201359083015261050061328f81840182840161338e565b506105606132a181840182840161338e565b506105c06132b3818401828401613300565b506106406132c5818401828401613300565b506106c06132d7818401828401613300565b506107406132e9818401828401613300565b506107c06132fb818401828401613300565b505050565b803582526020810135613312816140d7565b61331b81614090565b6020830152604081013561332e816140ca565b61333781614083565b6040830152606081013561334a816140af565b8015156060840152505050565b80518252602081015161336981614090565b6020830152604081015161337c81614083565b60408301526060908101511515910152565b8035825260208101356133a0816140d7565b6133a981614090565b602083015260408101356133bc816140af565b8015156040840152505050565b8051825260208101516133db81614090565b60208301526040908101511515910152565b6133f8828251612fef565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b6000610be08b83526136db602084018c613016565b6136e961086084018b6133ed565b610ae083018190528201879052610c006001600160fb1b0388111561370c578182fd5b60208802808a8386013783010190815285356137278161409a565b6001600160a01b03908116610b0084015260408701908061374b8360208b016127cb565b16610b20850152606088018161376182856127cb565b16610b408601528161377660808b01836127cb565b16610b6086015250505061378e610b80830186612fcb565b61379c610ba0830185612fcb565b6137aa610bc0830184612fcb565b9a9950505050505050505050565b8281526102a08101611a4e60208301846133ed565b60608101601385106137db57fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061380757fe5b9281526020015290565b60608101601d851061381f57fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b610840810161026a8284613016565b6108608101613d308285613016565b826108408301529392505050565b6000610b0082019050613d52828751613002565b6020860151613d646020840182612fe6565b506040860151613d776040840182612ff8565b506060860151613d8a6060840182612fef565b506080860151613d9d6080840182612fd8565b5060a0860151613db060a0840182612fe6565b5060c0860151613dc360c084018261300c565b5060e0860151613dd660e084018261300c565b5061010080870151613dea82850182612fe6565b505061012080870151613dff82850182612fcb565b505061014080870151613e1482850182612fcb565b5050610160868101519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151908301526102c080870151908301526102e08087015190830152610300808701519083015261032080870151908301526103408087015190830152610360808701519083015261038080870151908301526103a080870151908301526103c080870151908301526103e08087015190830152610400808701519083015261042080870151908301526104408087015190830152610460808701519083015261048080870151908301526104a080870151908301526104c080870151908301526104e0808701519083015261050080870151613f68828501826133c9565b5050610520860151610560613f7f818501836133c9565b61054088015191506105c0613f9681860184613357565b818901519250613faa610640860184613357565b6105808901519250613fc06106c0860184613357565b6105a08901519250613fd6610740860184613357565b8801519150613feb90506107c0840182613357565b50613ffa6108408301866133ed565b610ac0820193909352610ae0015292915050565b60405181810167ffffffffffffffff8111828210171561402d57600080fd5b604052919050565b60008235611a4e8161409a565b60008235611a4e816140bd565b60008235611a4e816140ca565b60008235611a4e816140f1565b60008235611a4e816140d7565b60008235611a4e81614118565b6002811061408d57fe5b50565b6006811061408d57fe5b6001600160a01b038116811461408d57600080fd5b801515811461408d57600080fd5b6009811061408d57600080fd5b6002811061408d57600080fd5b6006811061408d57600080fd5b6005811061408d57600080fd5b600d811061408d57600080fd5b6013811061408d57600080fd5b601d811061408d57600080fd5b6004811061408d57600080fdfea264697066735822122018ccb76065a2a0c13c404e673745c660572e45896cfaab26bc03bd5aa41ff95f64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "288:3080:0:-: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:3080:0;;-1:-1:-1;288:3080:0;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:3080:0;;;;;;",
  "deployedSourceMap": "288:3080:0:-: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;954:1060:0:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1696:35:4:-;;;:::i;1737:33::-;;;:::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;;;;;;;954:1060:0;-1:-1:-1;;;;;1192:20:0;;;;;;:74;;-1:-1:-1;1250:16:0;1224:6;-1:-1:-1;;;;;1216:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;;;;;;1192:74;1171:177;;;;-1:-1:-1;;;1171:177:0;;;;;;;:::i;:::-;1395:15;1434:5;1441:15;1423:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1413:45;;;;;;1395:63;;1519:25;;:::i;:::-;1547:45;;-1:-1:-1;;;1547:45:0;;-1:-1:-1;;;;;1547:38:0;;;;;:45;;1586:5;;1547:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1675:13;;1654:237;;-1:-1:-1;;;1654:237:0;;1519:73;;-1:-1:-1;;;;;;1675:13:0;;1654:50;;:237;;1718:7;;1739:5;;1519:73;;1784:8;;;;1806:9;;1829:6;;1857:4;;1876:5;;1654:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1924:7:0;;-1:-1:-1;1907:100:0;;-1:-1:-1;1933:16:0;;-1:-1:-1;1951:24:0;;;;:9;:24;:::i;:::-;1977:29;;;;;;;;:::i;:::-;1907:100;;;;;;;;:::i;:::-;;;;;;;;954:1060;;;;;;;;:::o;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;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;2020:1346:0:-;2176:12;;:::i;:::-;2449:13;;:32;;-1:-1:-1;;;2449:32:0;;2190:6;;;;-1:-1:-1;;;;;2449:13:0;;;;:23;;:32;;2473:7;;2449:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2432:49;;2491:21;;:::i;:::-;2536:13;;2515:54;;-1:-1:-1;;;2515:54:0;;-1:-1:-1;;;;;2536:13:0;;;;2515:45;;:54;;2561:7;;2515:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2491:78;;2580:19;2601:20;2625:19;2637:6;2625:11;:19::i;:::-;2579:65;;;;2655:13;2682:6;-1:-1:-1;;;;;2671:40:0;;2725:5;2744;2763:6;2783:197;2822:7;2847:9;2874:92;2888:12;2902:5;:27;;;2931:5;:14;;;2947:5;:18;;;2874:13;:92::i;:::-;2783:21;:197::i;:::-;2671:319;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2655:335;;3019:6;-1:-1:-1;;;;;3008:39:0;;3061:5;3080;3099:6;3119:197;3158:7;3183:9;3210:92;3224:12;3238:5;:27;;;3267:5;:14;;;3283:5;:18;;;3210:13;:92::i;:::-;3119:21;:197::i;:::-;3008:318;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3000:326;3352:6;;-1:-1:-1;2020:1346:0;-1:-1:-1;;;;;;;;2020:1346:0: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;:::-;;;;;;;:::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;1925:184::-;2028:13;;2046:58;2028:13;2046:58;:::i;2679:170::-;2775:13;;2793:51;2775:13;2793:51;:::i;2856:166::-;2941:20;;2966:51;2941:20;2966:51;:::i;3029:170::-;3125:13;;3143:51;3125:13;3143:51;:::i;4940:168::-;5035:13;;5053:50;5035:13;5053:50;:::i;14806:166::-;;14924:3;14915:6;14910:3;14906:16;14902:26;14899:2;;;-1:-1;;14931:12;14899:2;-1:-1;14951:15;14892:80;-1:-1;14892:80::o;16825:810::-;;16947:4;16935:9;16930:3;16926:19;16922:30;16919:2;;;-1:-1;;16955:12;16919:2;16983:20;16947:4;16983:20;:::i;:::-;16974:29;;22149:6;22143:13;17064:16;17057:86;17201:2;17277:9;17273:22;2028:13;2046:58;2098:5;2046:58;:::i;:::-;17201:2;17216:16;;17209:93;17360:2;17432:22;;1848:13;1866:47;1848:13;1866:47;:::i;:::-;17360:2;17375:16;;17368:93;17523:2;17585:22;;867:13;885:30;867:13;885:30;:::i;:::-;17523:2;17538:16;;17531:83;17542:5;16913:722;-1:-1;;16913:722::o;17658:650::-;;17779:4;17767:9;17762:3;17758:19;17754:30;17751:2;;;-1:-1;;17787:12;17751:2;17815:20;17779:4;17815:20;:::i;:::-;17806:29;;22149:6;22143:13;17896:16;17889:86;18033:2;18109:9;18105:22;2028:13;2046:58;2098:5;2046:58;:::i;:::-;18033:2;18048:16;;18041:93;18196:2;18258:22;;867:13;885:30;867:13;885:30;:::i;:::-;18196:2;18211:16;;18204:83;18215:5;17745:563;-1:-1;;17745:563::o;22343:241::-;;22447:2;22435:9;22426:7;22422:23;22418:32;22415:2;;;-1:-1;;22453:12;22415:2;85:6;72:20;97:33;124:5;97:33;:::i;22591:263::-;;22706:2;22694:9;22685:7;22681:23;22677:32;22674:2;;;-1:-1;;22712:12;22674:2;226:6;220:13;238:33;265:5;238:33;:::i;22861:366::-;;;22982:2;22970:9;22961:7;22957:23;22953:32;22950:2;;;-1:-1;;22988:12;22950:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;23040:63;23140:2;23179:22;;;;21995:20;;-1:-1;;;22944:283::o;23234:257::-;;23346:2;23334:9;23325:7;23321:23;23317:32;23314:2;;;-1:-1;;23352:12;23314:2;873:6;867:13;885:30;909:5;885:30;:::i;23498:241::-;;23602:2;23590:9;23581:7;23577:23;23573:32;23570:2;;;-1:-1;;23608:12;23570:2;-1:-1;994:20;;23564:175;-1:-1;23564:175::o;23746:263::-;;23861:2;23849:9;23840:7;23836:23;23832:32;23829:2;;;-1:-1;;23867:12;23829:2;-1:-1;1142:13;;23823:186;-1:-1;23823:186::o;24016:366::-;;;24137:2;24125:9;24116:7;24112:23;24108:32;24105:2;;;-1:-1;;24143:12;24105:2;-1:-1;;994:20;;;24295:2;24334:22;;;994:20;;-1:-1;24099:283::o;24389:299::-;;24522:2;24510:9;24501:7;24497:23;24493:32;24490:2;;;-1:-1;;24528:12;24490:2;3131:6;3125:13;3143:51;3188:5;3143:51;:::i;24695:271::-;;24814:2;24802:9;24793:7;24789:23;24785:32;24782:2;;;-1:-1;;24820:12;24782:2;4057:6;4044:20;4069:48;4111:5;4069:48;:::i;24973:396::-;;;25109:2;25097:9;25088:7;25084:23;25080:32;25077:2;;;-1:-1;;25115:12;25077:2;4057:6;4044:20;4069:48;4111:5;4069:48;:::i;25644:391::-;;;25772:2;25760:9;25751:7;25747:23;25743:32;25740:2;;;-1:-1;;25778:12;25740:2;5993:6;5987:13;25830:73;;25940:2;25991:9;25987:22;867:13;885:30;909:5;885:30;:::i;:::-;25948:71;;;;25734:301;;;;;:::o;26042:1033::-;;;;;;;26300:9;26291:7;26287:23;26312:4;26287:23;26283:34;26280:2;;;-1:-1;;26320:12;26280:2;6186:4;;6168:16;6164:27;6161:2;;;-1:-1;;6194:12;6161:2;26372:92;;-1:-1;26514:20;;26501:34;;-1:-1;26555:18;26544:30;;;26541:2;;;-1:-1;;26577:12;26541:2;26678:6;26667:9;26663: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;;26555: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;26597:98;;-1:-1;26752:87;;-1:-1;26831:7;26732:4;26807:22;;26752:87;:::i;:::-;26742:97;;26896:53;26941:7;26876:4;26921:9;26917:22;26896:53;:::i;:::-;26886:63;;27006:53;27051:7;26986:4;27031:9;27027:22;27006:53;:::i;:::-;26996:63;;26274:801;;;;;;;;:::o;27082:319::-;;27224:4;27212:9;27203:7;27199:23;27195:34;27192:2;;;-1:-1;;27232:12;27192:2;6429:22;6444:6;6429:22;:::i;:::-;6541:78;6615:3;6591:22;6541:78;:::i;:::-;6523:16;6516:104;6718:74;6788:3;6685:2;6768:9;6764:22;6718:74;:::i;:::-;6685:2;6704:5;6700:16;6693:100;6895:78;6969:3;6862:2;6949:9;6945:22;6895:78;:::i;:::-;6862:2;6881:5;6877:16;6870:104;7082:84;7162:3;7049:2;7142:9;7138:22;7082:84;:::i;:::-;7049:2;7068:5;7064:16;7057:110;7279:87;7362:3;7245;7342:9;7338:22;7279:87;:::i;:::-;7245:3;7265:5;7261:16;7254:113;7478:86;7560:3;7444;7540:9;7536:22;7478:86;:::i;:::-;7444:3;7464:5;7460:16;7453:112;7669:79;7744:3;7635;7724:9;7720:22;7669:79;:::i;:::-;7635:3;7655:5;7651:16;7644:105;7851:77;7924:3;7817;7904:9;7900:22;7851:77;:::i;:::-;7817:3;7837:5;7833:16;7826:103;7994:3;8030:74;8100:3;7994;8080:9;8076:22;8030:74;:::i;:::-;8010:18;;;8003:102;8170:3;8206:60;8262:3;8238:22;;;8206:60;:::i;:::-;8186:18;;;8179:88;8342:3;8378:60;8434:3;8410:22;;;8378:60;:::i;:::-;8358:18;;;8351:88;8521:3;8589:22;;;1142:13;8537:18;;;8530:88;8691:3;8759:22;;;22143:13;8707:18;;;8700:88;8855:3;8923:22;;;22143:13;8871:18;;;8864:88;9028:3;9096:22;;;22143:13;9044:18;;;9037:88;9194:3;9262:22;;;22143:13;9210:18;;;9203:88;9360:3;9428:22;;;22143:13;9376:18;;;9369:88;9535:3;9603:22;;;22143:13;9551:18;;;9544:88;9721:3;9789:22;;;22143:13;9737:18;;;9730:88;9901:3;9969:22;;;22143:13;9917:18;;;9910:88;10084:3;10152:22;;;22143:13;10100:18;;;10093:88;10258:3;10326:22;;;22143:13;10274:18;;;10267:88;10448:3;10516:22;;;22143:13;10464:18;;;10457:88;10619:3;10686:22;;;5987:13;10635:18;;;10628:87;10791:3;10858:22;;;5987:13;10807:18;;;10800:87;10959:3;11026:22;;;5987:13;10975:18;;;10968:87;11126:3;11193:22;;;5987:13;11142:18;;;11135:87;11289:3;11356:22;;;5987:13;11305:18;;;11298:87;11455:3;11522:22;;;5987:13;11471:18;;;11464:87;11615:3;11682:22;;;5987:13;11631:18;;;11624:87;11778:3;11845:22;;;5987:13;11794:18;;;11787:87;11942:3;12009:22;;;5987:13;11958:18;;;11951:87;12110:4;12178:22;;;5987:13;12127:18;;;12120:87;12284:4;12352:22;;;5987:13;12301:18;;;12294:87;12457:4;12525:22;;;5987:13;12474:18;;;12467:87;12641:4;12709:22;;;5987:13;12658:18;;;12651:87;12802:4;12870:22;;;5987:13;12819:18;;;12812:87;12965:4;13033:22;;;5987:13;12982:18;;;12975:87;13128:4;13196:22;;;5987:13;13145:18;;;13138:87;13293:4;13361:22;;;5987:13;13310:18;;;13303:87;13458:4;13495:81;13572:3;13548:22;;;13495:81;:::i;:::-;13475:18;;;13468:109;13651:4;13688:81;13765:3;13741:22;;;13688:81;:::i;:::-;13679:6;13672:5;13668:18;13661:109;13849:4;13886:82;13964:3;13849:4;13944:9;13940:22;13886:82;:::i;:::-;13877:6;13870:5;13866:18;13859:110;14079:82;14157:3;14042:4;14137:9;14133:22;14079:82;:::i;:::-;13651:4;14063:5;14059:18;14052:110;14275:82;14353:3;14238:4;14333:9;14329:22;14275:82;:::i;:::-;14266:6;14259:5;14255:18;14248:110;14462:82;14540:3;14425:4;14520:9;14516:22;14462:82;:::i;:::-;14453:6;14446:5;14442:18;14435:110;14665:82;14743:3;14628:4;14723:9;14719:22;14665:82;:::i;:::-;14645:18;;;14638:110;-1:-1;14649:5;27186:215;-1:-1;;;27186:215::o;27408:328::-;;27555:3;27543:9;27534:7;27530:23;27526:33;27523:2;;;-1:-1;;27562:12;27523:2;15175:20;27555:3;15175:20;:::i;:::-;226:6;220:13;238:33;265:5;238:33;:::i;:::-;15262:86;;15423:2;15488:22;;220:13;238:33;220:13;238:33;:::i;:::-;15423:2;15438:16;;15431:86;15593:2;15658:22;;220:13;238:33;220:13;238:33;:::i;:::-;15593:2;15608:16;;15601:86;15767:2;15832:22;;220:13;238:33;220:13;238:33;:::i;:::-;15767:2;15782:16;;15775:86;15786:5;27517:219;-1:-1;;;27517:219::o;27743:336::-;;27894:3;27882:9;27873:7;27869:23;27865:33;27862:2;;;-1:-1;;27901:12;27862:2;16092:20;27894:3;16092:20;:::i;:::-;16228:22;1142:13;16178:16;16171:86;16321:2;16390:9;16386:22;1142:13;16321:2;16340:5;16336:16;16329:86;16477:2;16573:9;16569:22;2221:13;2239:60;2293:5;2239:60;:::i;:::-;16477:2;16492:16;;16485:113;16659:2;16751:22;;2221:13;2239:60;2221:13;2239:60;:::i;28086:312::-;;28225:3;;28213:9;28204:7;28200:23;28196:33;28193:2;;;-1:-1;;28232:12;28193:2;18496:22;28225:3;18496:22;:::i;:::-;18615:85;18696:3;18672:22;18615:85;:::i;:::-;18590:111;;18768:2;18833:22;;;22143:13;18783:16;;;18776:86;18936:2;19001:22;;;22143:13;18951:16;;;18944:86;19099:2;19164:22;;;22143:13;19114:16;;;19107:86;19262:3;19328:22;;;22143:13;19278:16;;;19271:86;19429:3;19495:22;;;22143:13;19445:16;;;19438:86;19594:3;19660:22;;;22143:13;19610:16;;;19603:86;19763:3;19828:22;;;5987:13;19779:16;;;19772:85;19929:3;19996:22;;;5987:13;19945:18;;;19938:87;20092:3;20159:22;;;5987:13;20108:18;;;20101:87;20264:3;20331:22;;;5987:13;20280:18;;;20273:87;20442:3;20509:22;;;5987:13;20458:18;;;20451:87;20620:3;20687:22;;;5987:13;20636:18;;;20629:87;20803:3;20870:22;;;5987:13;20819:18;;;20812:87;20970:3;21037:22;;;5987:13;20986:18;;;20979:87;21139:3;21206:22;;;5987:13;21155:18;;;21148:87;21300:3;21367:22;;;5987:13;21316:18;;;21309:87;21470:3;21537:22;;;5987:13;21486:18;;;21479:87;21635:3;21702:22;;;5987:13;21651:18;;;21644:87;21804:3;21871:22;;;5987:13;21820:18;;;21813:87;;;;-1:-1;18597:16;;28187:211;-1:-1;;28187:211::o;28675:699::-;;;;;28871:3;28859:9;28850:7;28846:23;28842:33;28839:2;;;-1:-1;;28878:12;28839:2;22008:6;21995:20;28930:63;;29030:2;29100:9;29096:22;1299:20;1324:60;1378:5;1324:60;:::i;:::-;29038:90;-1:-1;29165:2;29218:22;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;28833:541;;;;-1:-1;29173:77;;29287:2;29326:22;21995:20;;-1:-1;;28833:541::o;29381:259::-;;29494:2;29482:9;29473:7;29469:23;29465:32;29462:2;;;-1:-1;;29500:12;29462:2;22288:6;22282:13;94940:4;102048:5;94929:16;102025:5;102022:33;102012:2;;-1:-1;;102059:12;29796:103;-1:-1;;;;;94724:54;29857:37;;29851:48::o;31219:166::-;98138:1;98131:5;98128:12;98118:2;;98144:9;98118:2;31305:75;;31299:86::o;31392:140::-;92902:47;92943:5;92902:47;:::i;31539:162::-;93054:58;93106:5;93054:58;:::i;31708:148::-;98489:2;98482:5;98479:13;98469:2;;98496:9;31863:148;98606:2;98599:5;98596:13;98586:2;;98613:9;32960:146;99299:1;99292:5;99289:12;99279:2;;99305:9;41876:10184;90757:2;42152:16;90748:12;42175:79;42239:14;90704:57;90748:12;42152:16;90704:57;:::i;:::-;42175:79;:::i;:::-;42320:64;42367:16;42360:5;42320:64;:::i;:::-;42390:75;90757:2;42454:3;42450:14;42436:12;42390:75;:::i;:::-;;;42535:68;42597:4;42590:5;42586:16;42579:5;42535:68;:::i;:::-;42609:79;42597:4;42677:3;42673:14;42659:12;42609:79;:::i;:::-;;42764:74;42832:4;42825:5;42821:16;42814:5;42764:74;:::i;:::-;42844:85;42832:4;42918:3;42914:14;42900:12;42844:85;:::i;:::-;;43008:77;43079:4;43072:5;43068:16;43061:5;43008:77;:::i;:::-;43091:88;43079:4;43168:3;43164:14;43150:12;43091:88;:::i;:::-;;43257:76;43327:4;43320:5;43316:16;43309:5;43257:76;:::i;:::-;43339:87;43327:4;43415:3;43411:14;43397:12;43339:87;:::i;:::-;;43497:69;43560:4;43553:5;43549:16;43542:5;43497:69;:::i;:::-;43572:80;43560:4;43641:3;43637:14;43623:12;43572:80;:::i;:::-;;43721:67;43782:4;43775:5;43771:16;43764:5;43721:67;:::i;:::-;43794:78;43782:4;43861:3;43857:14;43843:12;43794:78;:::i;:::-;;43996:6;43938:66;43996:6;43989:5;43985:18;43978:5;43938:66;:::i;:::-;44010:77;43996:6;44074:3;44070:16;44056:12;44010:77;:::i;:::-;;;44197:6;44153:52;44197:6;44190:5;44186:18;44179:5;44153:52;:::i;:::-;44211:65;44197:6;44263:3;44259:16;44245:12;44211:65;:::i;:::-;;;44396:6;44352:52;44396:6;44389:5;44385:18;44378:5;44352:52;:::i;:::-;44410:65;44396:6;44462:3;44458:16;44444:12;44410:65;:::i;:::-;-1:-1;;44602:6;44591:18;;;994:20;44664:16;;;30694:37;44799:6;44788:18;;;21995:20;44861:16;;;30694:37;44990:6;44979:18;;;21995:20;45052:16;;;30694:37;45190:6;45179:18;;;21995:20;45252:16;;;30694:37;45383:6;45372:18;;;21995:20;45445:16;;;30694:37;45576:6;45565:18;;;21995:20;45638:16;;;30694:37;45778:6;45767:18;;;21995:20;45840:16;;;30694:37;45991:6;45980:18;;;21995:20;46053:16;;;30694:37;46198:6;46187:18;;;21995:20;46260:16;;;30694:37;46408:6;46397:18;;;21995:20;46470:16;;;30694:37;46609:6;46598:18;;;21995:20;46671:16;;;30694:37;46826:6;46815:18;;;21995:20;46888:16;;;30694:37;47023:6;47012:18;;;5841:20;47083:16;;;30694:37;47220:6;47209:18;;;5841:20;47280:16;;;30694:37;47413:6;47402:18;;;5841:20;47473:16;;;30694:37;47605:6;47594:18;;;5841:20;47665:16;;;30694:37;47793:6;47782:18;;;5841:20;47853:16;;;30694:37;47984:6;47973:18;;;5841:20;48044:16;;;30694:37;48169:6;48158:18;;;5841:20;48229:16;;;30694:37;48357:6;48346:18;;;5841:20;48417:16;;;30694:37;48546:6;48535:18;;;5841:20;48606:16;;;30694:37;48739:6;48728:18;;;5841:20;48799:16;;;30694:37;48937:6;48926:18;;;5841:20;48997:16;;;30694:37;49134:6;49123:18;;;5841:20;49194:16;;;30694:37;49342:6;49331:18;;;5841:20;49402:16;;;30694:37;49527:6;49516:18;;;5841:20;49587:16;;;30694:37;49714:6;49703:18;;;5841:20;49774:16;;;30694:37;49901:6;49890:18;;;5841:20;49961:16;;;30694:37;50090:6;50079:18;;;5841:20;50150:16;;;30694:37;50303:6;50317:109;50409:16;;;50292:18;;;50317:109;:::i;:::-;;50568:6;50582:109;50568:6;50678:3;50674:16;50568:6;50561:5;50557:18;50582:109;:::i;:::-;;50839:6;50853:111;50839:6;50951:3;50947:16;50839:6;50832:5;50828:18;50853:111;:::i;:::-;;51106:6;51120:111;51106:6;51218:3;51214:16;51106:6;51099:5;51095:18;51120:111;:::i;:::-;;51376:6;51390:111;51376:6;51488:3;51484:16;51376:6;51369:5;51365:18;51390:111;:::i;:::-;;51637:6;51651:111;51637:6;51749:3;51745:16;51637:6;51630:5;51626:18;51651:111;:::i;:::-;;51914:6;51928:111;51914:6;52026:3;52022:16;51914:6;51907:5;51903:18;51928:111;:::i;:::-;;41998:10062;;:::o;61745:885::-;22008:6;21995:20;30701:3;30694:37;92366:2;61970:16;92357:12;3297:20;3322:57;3373:5;3322:57;:::i;:::-;93054:58;93106:5;93054:58;:::i;:::-;92366:2;62231:14;;32893:55;62356:4;62345:16;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;92902;92943:5;92902:47;:::i;:::-;62356:4;62421:14;;33179:55;62540:4;62529:16;;725:20;750:30;725:20;750:30;:::i;:::-;30614:5;92548:13;92541:21;62540:4;62598:3;62594:14;30587:34;;61847:783;;:::o;62668:764::-;62864:16;62858:23;30701:3;30694:37;63026:4;63019:5;63015:16;63009:23;93054:58;93106:5;93054:58;:::i;:::-;63026:4;63091:14;;32893:55;63182:4;63171:16;;63165:23;92902:47;63165:23;92902:47;:::i;:::-;63182:4;63247:14;;33179:55;63342:4;63331:16;;;63325:23;92548:13;92541:21;63396:14;;30587:34;62768:664::o;63468:693::-;22008:6;21995:20;30701:3;30694:37;92366:2;63691:16;92357:12;3297:20;3322:57;3373:5;3322:57;:::i;:::-;93054:58;93106:5;93054:58;:::i;:::-;92366:2;63952:14;;32893:55;91402:12;;;725:20;750:30;725:20;750:30;:::i;:::-;30614:5;92548:13;92541:21;91402:12;64129:3;64125:14;30587:34;;63568:593;;:::o;64197:606::-;64391:16;64385:23;30701:3;30694:37;64553:4;64546:5;64542:16;64536:23;93054:58;93106:5;93054:58;:::i;:::-;64553:4;64618:14;;32893:55;64713:4;64702:16;;;64696:23;92548:13;92541:21;64767:14;;30587:34;64295:508::o;64845:3535::-;65098:86;65169:14;65075:16;65069:23;65098:86;:::i;:::-;65269:4;65258:16;;;65252:23;65329:14;;;30694:37;65436:4;65425:16;;;65419:23;65496:14;;;30694:37;65598:4;65587:16;;;65581:23;65658:14;;;30694:37;65760:4;65749:16;;;65743:23;65820:14;;;30694:37;65925:4;65914:16;;;65908:23;65985:14;;;30694:37;66088:4;66077:16;;;66071:23;66148:14;;;30694:37;66255:4;66244:16;;;66238:23;66313:14;;;30694:37;66418:6;66407:18;;;66401:25;66478:16;;;30694:37;66580:6;66569:18;;;66563:25;66640:16;;;30694:37;66751:6;66740:18;;;66734:25;66811:16;;;30694:37;66928:6;66917:18;;;66911:25;66988:16;;;30694:37;67105:6;67094:18;;;67088:25;67165:16;;;30694:37;67287:6;67276:18;;;67270:25;67347:16;;;30694:37;67453:6;67442:18;;;67436:25;67513:16;;;30694:37;67621:6;67610:18;;;67604:25;67681:16;;;30694:37;67781:6;67770:18;;;67764:25;67841:16;;;30694:37;67950:6;67939:18;;;67933:25;68010:16;;;30694:37;68114:6;68103:18;;;68097:25;68174:16;;;30694:37;68282:6;68271:18;;;68265:25;68342:16;;30694:37;64959:3421::o;68617:222::-;-1:-1;;;;;94724:54;;;;29857:37;;68744:2;68729:18;;68715:124::o;68846:333::-;-1:-1;;;;;94724:54;;;29857:37;;94724:54;;69165:2;69150:18;;29857:37;69001:2;68986:18;;68972:207::o;69186:444::-;-1:-1;;;;;94724:54;;;29857:37;;94724:54;;;;69533:2;69518:18;;29857:37;69616:2;69601:18;;30694:37;;;;69369:2;69354:18;;69340:290::o;69637:333::-;-1:-1;;;;;94724:54;;;;29857:37;;69956:2;69941:18;;30694:37;69792:2;69777:18;;69763:207::o;69977:222::-;30694:37;;;70104:2;70089:18;;70075:124::o;70206:349::-;30694:37;;;-1:-1;;;;;94724:54;70541:2;70526:18;;29726:58;70369:2;70354:18;;70340:215::o;70562:333::-;30694:37;;;70881:2;70866:18;;30694:37;70717:2;70702:18;;70688:207::o;70902:440::-;30694:37;;;71247:2;71232:18;;30694:37;;;;71328:2;71313:18;;30694:37;71083:2;71068:18;;71054:288::o;71349:459::-;30694:37;;;-1:-1;;;71794:2;71779:18;;33764:34;71567:2;71552:18;;71538:270::o;71815:459::-;30694:37;;;-1:-1;;;72260:2;72245:18;;35687:23;72033:2;72018:18;;72004:270::o;72281:459::-;30694:37;;;-1:-1;;;72726:2;72711:18;;36260:24;72499:2;72484:18;;72470:270::o;72747:459::-;30694:37;;;36447:27;73192:2;73177:18;;36435:40;72965:2;72950:18;;72936:270::o;73213:459::-;30694:37;;;-1:-1;;;73658:2;73643:18;;36626:33;73431:2;73416:18;;73402:270::o;73679:459::-;30694:37;;;-1:-1;;;74124:2;74109:18;;38372:36;73897:2;73882:18;;73868:270::o;74145:459::-;30694:37;;;-1:-1;;;74590:2;74575:18;;39305:27;74363:2;74348:18;;74334:270::o;74611:459::-;30694:37;;;-1:-1;;;75056:2;75041:18;;40653:32;74829:2;74814:18;;74800:270::o;75077:459::-;30694:37;;;-1:-1;;;75522:2;75507:18;;40836:23;75295:2;75280:18;;75266:270::o;75543:459::-;30694:37;;;-1:-1;;;75988:2;75973:18;;41787:34;75761:2;75746:18;;75732:270::o;76009:1521::-;;76562:4;30724:5;30701:3;30694:37;76660:128;76784:2;76773:9;76769:18;76760:6;76660:128;:::i;:::-;76799:122;76915:4;76904:9;76900:20;76891:6;76799:122;:::i;:::-;76954:4;76939:20;;76932:50;;;76547:20;;89491:19;;;89531:14;-1:-1;;;;;30305:78;;30302:2;;;-1:-1;;30386:12;30302:2;76784;30421:6;30417:17;97970:6;97965:3;89531:14;76551:9;89531:14;97947:30;98008:16;;;98001:27;;;72:20;;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;94724:54;;;77259:4;77244:20;;29857:37;89832:12;;;;94735:42;89806:39;89832:12;76784:2;89832:12;;89806:39;:::i;:::-;94724:54;61275:14;77248:9;61275:14;29857:37;89832:12;61404:5;89832:12;94735:42;89806:39;89832:12;89827:3;89806:39;:::i;:::-;94724:54;61471:14;77248:9;61471:14;29857:37;94735:42;89806:39;89832:12;61604:5;89832:12;89827:3;89806:39;:::i;:::-;94724:54;61671:14;77248:9;61671:14;29857:37;;;;77276:74;77344:4;77333:9;77329:20;77320:6;77276:74;:::i;:::-;77361;77429:4;77418:9;77414:20;77405:6;77361:74;:::i;:::-;77446;77514:4;77503:9;77499:20;77490:6;77446:74;:::i;:::-;76533:997;;;;;;;;;;;;:::o;77537:430::-;30694:37;;;77740:3;77725:19;;77837:120;77953:2;77938:18;;77929:6;77837:120;:::i;78862:476::-;79061:2;79046:18;;98606:2;98596:13;;98586:2;;98613:9;98586:2;31940:66;;;-1:-1;;;;;94724:54;;;79241:2;79226:18;;29857:37;94724:54;;79324:2;79309:18;;;29857:37;79032:306;:::o;79345:359::-;79513:2;79498:18;;98966:2;98956:13;;98946:2;;98973:9;98946:2;32605:63;;;79690:2;79675:18;30694:37;79484:220;:::o;79711:466::-;79905:2;79890:18;;98966:2;98956:13;;98946:2;;98973:9;98946:2;32605:63;;;80082:2;80067:18;;30694:37;;;;80163:2;80148:18;;;30694:37;79876:301;:::o;80184:416::-;80384:2;80398:47;;;34037:2;80369:18;;;89491:19;34073:34;89531:14;;;34053:55;34142:26;34128:12;;;34121:48;34188:12;;;80355:245::o;80607:416::-;80807:2;80821:47;;;34439:2;80792:18;;;89491:19;34475:34;89531:14;;;34455:55;-1:-1;;;34530:12;;;34523:35;34577:12;;;80778:245::o;81030:416::-;81230:2;81244:47;;;34828:2;81215:18;;;89491:19;34864:34;89531:14;;;34844:55;-1:-1;;;34919:12;;;34912:30;34961:12;;;81201:245::o;81453:348::-;-1:-1;;;35124:33;;81643:2;81628:18;;81614:187::o;81808:416::-;82008:2;82022:47;;;35396:2;81993:18;;;89491:19;35432:34;89531:14;;;35412:55;-1:-1;;;35487:12;;;35480:25;35524:12;;;81979:245::o;82231:416::-;82431:2;82445:47;;;35949:2;82416:18;;;89491:19;35985:34;89531:14;;;35965:55;-1:-1;;;36040:12;;;36033:45;36097:12;;;82402:245::o;82654:416::-;82854:2;82868:47;;;36898:2;82839:18;;;89491:19;36934:34;89531:14;;;36914:55;-1:-1;;;36989:12;;;36982:38;37039:12;;;82825:245::o;83077:416::-;83277:2;83291:47;;;37290:2;83262:18;;;89491:19;37326:34;89531:14;;;37306:55;-1:-1;;;37381:12;;;37374:35;37428:12;;;83248:245::o;83500:416::-;83700:2;83714:47;;;37679:2;83685:18;;;89491:19;37715:34;89531:14;;;37695:55;-1:-1;;;37770:12;;;37763:32;37814:12;;;83671:245::o;83923:416::-;84123:2;84137:47;;;38065:2;84108:18;;;89491:19;38101:34;89531:14;;;38081:55;-1:-1;;;38156:12;;;38149:41;38209:12;;;84094:245::o;84346:416::-;84546:2;84560:47;;;38647:2;84531:18;;;89491:19;38683:34;89531:14;;;38663:55;38752:29;38738:12;;;38731:51;38801:12;;;84517:245::o;84769:416::-;84969:2;84983:47;;;84954:18;;;89491:19;39088:34;89531:14;;;39068:55;39142:12;;;84940:245::o;85192:416::-;85392:2;85406:47;;;39571:2;85377:18;;;89491:19;39607:34;89531:14;;;39587:55;-1:-1;;;39662:12;;;39655:30;39704:12;;;85363:245::o;85615:416::-;85815:2;85829:47;;;39955:2;85800:18;;;89491:19;39991:34;89531:14;;;39971:55;-1:-1;;;40046:12;;;40039:43;40101:12;;;85786:245::o;86038:416::-;86238:2;86252:47;;;40352:2;86223:18;;;89491:19;40388:34;89531:14;;;40368:55;-1:-1;;;40443:12;;;40436:35;40490:12;;;86209:245::o;86461:416::-;86661:2;86675:47;;;41098:2;86646:18;;;89491:19;41134:34;89531:14;;;41114:55;-1:-1;;;41189:12;;;41182:41;41242:12;;;86632:245::o;86884:416::-;87084:2;87098:47;;;41493:2;87069:18;;;89491:19;41529:34;89531:14;;;41509:55;-1:-1;;;41584:12;;;41577:28;41624:12;;;87055:245::o;87307:336::-;87490:4;87475:20;;87506:127;87479:9;87606:6;87506:127;:::i;87650:449::-;87861:4;87846:20;;87877:127;87850:9;87977:6;87877:127;:::i;:::-;30724:5;88083:4;88072:9;88068:20;30694:37;87832:267;;;;;:::o;88106:767::-;;88419:4;88408:9;88404:20;88396:28;;52360:79;52424:14;52337:16;52331:23;52360:79;:::i;:::-;52522:4;52515:5;52511:16;52505:23;52534:75;52522:4;52598:3;52594:14;52580:12;52534:75;:::i;:::-;;52696:4;52689:5;52685:16;52679:23;52708:79;52696:4;52776:3;52772:14;52758:12;52708:79;:::i;:::-;;52880:4;52873:5;52869:16;52863:23;52892:85;52880:4;52966:3;52962:14;52948:12;52892:85;:::i;:::-;;53073:4;53066:5;53062:16;53056:23;53085:88;53073:4;53162:3;53158:14;53144:12;53085:88;:::i;:::-;;53268:4;53261:5;53257:16;53251:23;53280:87;53268:4;53356:3;53352:14;53338:12;53280:87;:::i;:::-;;53455:4;53448:5;53444:16;53438:23;53467:80;53455:4;53536:3;53532:14;53518:12;53467:80;:::i;:::-;;53633:4;53626:5;53622:16;53616:23;53645:78;53633:4;53712:3;53708:14;53694:12;53645:78;:::i;:::-;;53806:6;;53799:5;53795:18;53789:25;53820:77;53806:6;53884:3;53880:16;53866:12;53820:77;:::i;:::-;;;53980:6;;53973:5;53969:18;53963:25;53994:65;53980:6;54046:3;54042:16;54028:12;53994:65;:::i;:::-;;;54152:6;;54145:5;54141:18;54135:25;54166:65;54152:6;54218:3;54214:16;54200:12;54166:65;:::i;:::-;-1:-1;;54331:6;54320:18;;;54314:25;54393:16;;;30694:37;54501:6;54490:18;;;54484:25;54563:16;;;30694:37;54665:6;54654:18;;;54648:25;54727:16;;;30694:37;54838:6;54827:18;;;54821:25;54900:16;;;30694:37;55004:6;54993:18;;;54987:25;55066:16;;;30694:37;55170:6;55159:18;;;55153:25;55232:16;;;30694:37;55345:6;55334:18;;;55328:25;55407:16;;;30694:37;55531:6;55520:18;;;55514:25;55593:16;;;30694:37;55711:6;55700:18;;;55694:25;55773:16;;;30694:37;55894:6;55883:18;;;55877:25;55956:16;;;30694:37;56068:6;56057:18;;;56051:25;56130:16;;;30694:37;56258:6;56247:18;;;56241:25;56320:16;;;30694:37;56429:6;56418:18;;;56412:25;56489:16;;;30694:37;56600:6;56589:18;;;56583:25;56660:16;;;30694:37;56767:6;56756:18;;;56750:25;56827:16;;;30694:37;56933:6;56922:18;;;56916:25;56993:16;;;30694:37;57095:6;57084:18;;;57078:25;57155:16;;;30694:37;57260:6;57249:18;;;57243:25;57320:16;;;30694:37;57419:6;57408:18;;;57402:25;57479:16;;;30694:37;57581:6;57570:18;;;57564:25;57641:16;;;30694:37;57744:6;57733:18;;;57727:25;57804:16;;;30694:37;57911:6;57900:18;;;57894:25;57971:16;;;30694:37;58083:6;58072:18;;;58066:25;58143:16;;;30694:37;58254:6;58243:18;;;58237:25;58314:16;;;30694:37;58436:6;58425:18;;;58419:25;58496:16;;;30694:37;58595:6;58584:18;;;58578:25;58655:16;;;30694:37;58756:6;58745:18;;;58739:25;58816:16;;;30694:37;58917:6;58906:18;;;58900:25;58977:16;;;30694:37;59080:6;59069:18;;;59063:25;59140:16;;;30694:37;59243:6;59232:18;;;59226:25;59257:107;59347:16;;;59226:25;59257:107;:::i;:::-;;;59456:6;59449:5;59445:18;59439:25;59569:6;59470:107;59569:6;59564:3;59560:16;59546:12;59470:107;:::i;:::-;59674:6;59667:5;59663:18;59657:25;59637:45;;59789:6;59688:109;59789:6;59784:3;59780:16;59766:12;59688:109;:::i;:::-;59569:6;59881:5;59877:18;59871:25;59851:45;;59902:109;60003:6;59998:3;59994:16;59980:12;59902:109;:::i;:::-;60105:6;60098:5;60094:18;60088:25;60068:45;;60119:109;60220:6;60215:3;60211:16;60197:12;60119:109;:::i;:::-;60313:6;60306:5;60302:18;60296:25;60276:45;;60327:109;60428:6;60423:3;60419:16;60405:12;60327:109;:::i;:::-;60526:18;;60520:25;;-1:-1;60551:109;;-1:-1;60652:6;60643:16;;60520:25;60551:109;:::i;:::-;;88571:122;88687:4;88676:9;88672:20;88663:6;88571:122;:::i;:::-;88772:4;88757:20;;30694:37;;;;88857:4;88842:20;30694:37;88390:483;;-1:-1;;88390:483::o;89109:256::-;89171:2;89165:9;89197:17;;;89272:18;89257:34;;89293:22;;;89254:62;89251:2;;;89329:1;;89319:12;89251:2;89171;89338:22;89149:216;;-1:-1;89149:216::o;89732:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;90110:173::-;;1312:6;1299:20;1324:60;1378:5;1324:60;:::i;90292:147::-;;1685:6;1672:20;1697:47;1738:5;1697:47;:::i;90448:155::-;;2604:6;2591:20;2616:51;2661:5;2616:51;:::i;90776:167::-;;3310:6;3297:20;3322:57;3373:5;3322:57;:::i;91430:153::-;;4866:6;4853:20;4878:50;4922:5;4878:50;:::i;98167:105::-;98250:1;98243:5;98240:12;98230:2;;98256:9;98230:2;98224:48;:::o;98279:116::-;98373:1;98366:5;98363:12;98353:2;;98379:9;99550:117;-1:-1;;;;;94724:54;;99609:35;;99599:2;;99658:1;;99648:12;99674:111;99755:5;92548:13;92541:21;99733:5;99730:32;99720:2;;99776:1;;99766:12;99916:121;100012:1;100005:5;100002:12;99992:2;;100028:1;;100018:12;100044:108;100127:1;100120:5;100117:12;100107:2;;100143:1;;100133:12;100159:119;100253:1;100246:5;100243:12;100233:2;;100269:1;;100259:12;100285:121;100381:1;100374:5;100371:12;100361:2;;100397:1;;100387:12;100541:113;100628:2;100621:5;100618:13;100608:2;;100645:1;;100635:12;100661:113;100748:2;100741:5;100738:13;100728:2;;100765:1;;100755:12;101033:110;101117:2;101110:5;101107:13;101097:2;;101134:1;;101124:12;101373:111;101459:1;101452:5;101449:12;101439:2;;101475:1;;101465:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol\";\n\nimport \"../Base/AssetActor/BaseActor.sol\";\nimport \"./IANNRegistry.sol\";\n\n\n/**\n * @title ANNActor\n * @notice TODO\n */\ncontract ANNActor 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        ANNTerms 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.ANN,\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        // compute the initial state of the asset\n        State memory initialState = IANNEngine(engine).computeInitialState(terms);\n\n        // register the asset in the AssetRegistry\n        IANNRegistry(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.ANN, 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        // ContractType contractType = ContractType(assetRegistry.getEnumValueForTermsAttribute(assetId, \"contractType\"));        \n        // revert(\"ANNActor.computePayoffAndStateForEvent: UNSUPPORTED_CONTRACT_TYPE\");\n\n        address engine = assetRegistry.getEngine(assetId);\n        ANNTerms memory terms = IANNRegistry(address(assetRegistry)).getTerms(assetId);\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        int256 payoff = IANNEngine(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 = IANNEngine(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/ANN/ANNActor.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNActor.sol",
    "exportedSymbols": {
      "ANNActor": [
        200
      ]
    },
    "id": 201,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:0"
      },
      {
        "id": 2,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:0"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 28269,
        "src": "101:68:0",
        "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": 4,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 3852,
        "src": "171:42:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol",
        "file": "./IANNRegistry.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 2971,
        "src": "214:28:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 8,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:0"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:0",
          "text": " @title ANNActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 200,
        "linearizedBaseContracts": [
          200,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "ANNActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19,
              "nodeType": "Block",
              "src": "462:2:0",
              "statements": []
            },
            "documentation": null,
            "id": 20,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 15,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10,
                    "src": "429:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 16,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12,
                    "src": "444:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 17,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20,
                  "src": "338:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20,
                  "src": "368:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:0"
            },
            "returnParameters": {
              "id": 18,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:0"
            },
            "scope": 200,
            "src": "326:138:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 104,
              "nodeType": "Block",
              "src": "1161:853:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 50,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1192:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 39,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:0",
                                "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": 38,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 37,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 40,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 49,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 43,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30,
                                    "src": "1224:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 42,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 44,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 45,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 46,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 47,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 48,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ANN",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 51,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:0",
                        "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": 35,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 52,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 53,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:0"
                },
                {
                  "assignments": [
                    55
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 55,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 104,
                      "src": "1395:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 54,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 64,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 59,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23,
                            "src": "1434:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 60,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 61,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 57,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 58,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 62,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 56,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 63,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:0"
                },
                {
                  "assignments": [
                    66
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 66,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 104,
                      "src": "1519:25:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 65,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1519:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 73,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 71,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "1586:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 68,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1558:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 67,
                          "name": "IANNEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28268,
                          "src": "1547:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                            "typeString": "type(contract IANNEngine)"
                          }
                        },
                        "id": 69,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1547:18:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNEngine_$28268",
                          "typeString": "contract IANNEngine"
                        }
                      },
                      "id": 70,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28183,
                      "src": "1547:38:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct ANNTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 72,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1547:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1519:73:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 81,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55,
                        "src": "1718:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 82,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "1739:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 83,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66,
                        "src": "1758:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 84,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26,
                        "src": "1784:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 85,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28,
                        "src": "1806:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 86,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30,
                        "src": "1829:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 89,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1857:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ANNActor_$200",
                              "typeString": "contract ANNActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ANNActor_$200",
                              "typeString": "contract ANNActor"
                            }
                          ],
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 87,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1849:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 90,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 91,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32,
                        "src": "1876:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms 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": 77,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "1675:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 76,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1667:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 75,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1667:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 78,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1667:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 74,
                          "name": "IANNRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2970,
                          "src": "1654:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNRegistry_$2970_$",
                            "typeString": "type(contract IANNRegistry)"
                          }
                        },
                        "id": 79,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1654:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                          "typeString": "contract IANNRegistry"
                        }
                      },
                      "id": 80,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2955,
                      "src": "1654:50:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_ANNTerms_$22768_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 ANNTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 92,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1654:237:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 93,
                  "nodeType": "ExpressionStatement",
                  "src": "1654:237:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 95,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55,
                        "src": "1924:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 96,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "1933:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 97,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "ANN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1933:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 98,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1951:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 99,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "1951:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 100,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1977:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "1977:29:0",
                        "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": 94,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "1907:16:0",
                      "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": 102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1907:100:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 103,
                  "nodeType": "EmitStatement",
                  "src": "1902:105:0"
                }
              ]
            },
            "documentation": {
              "id": 21,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:0",
              "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": "8bc58fe4",
            "id": 105,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "983:23:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "983:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1016:27:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 24,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1053:33:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1096:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1120:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:0"
            },
            "returnParameters": {
              "id": 34,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:0"
            },
            "scope": 200,
            "src": "954:1060:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 198,
              "nodeType": "Block",
              "src": "2202:1164:0",
              "statements": [
                {
                  "assignments": [
                    120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 120,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2432:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 119,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2432:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2473:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 121,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2449:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2449:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2449:32:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2432:49:0"
                },
                {
                  "assignments": [
                    127
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 127,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2491:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                        "typeString": "struct ANNTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 126,
                        "name": "ANNTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22768,
                        "src": "2491:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                          "typeString": "struct ANNTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 137,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 135,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2561:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 131,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2536:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2528:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 129,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2528:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2528:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 128,
                          "name": "IANNRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2970,
                          "src": "2515:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNRegistry_$2970_$",
                            "typeString": "type(contract IANNRegistry)"
                          }
                        },
                        "id": 133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2515:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                          "typeString": "contract IANNRegistry"
                        }
                      },
                      "id": 134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2962,
                      "src": "2515:45:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2515:54:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2491:78:0"
                },
                {
                  "assignments": [
                    139,
                    141
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 139,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2580:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 138,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2580:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 141,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2601:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 140,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2601:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 145,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 143,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "2637:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 142,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2625:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2625:19:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2579:65:0"
                },
                {
                  "assignments": [
                    147
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 147,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2655:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 146,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2655:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 152,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 127,
                        "src": "2725:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 153,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "2744:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 154,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "2763:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 156,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 107,
                            "src": "2822:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 157,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 139,
                            "src": "2847:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 159,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 141,
                                "src": "2888:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 160,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2902:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 161,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22683,
                                "src": "2902:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 162,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2931:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 163,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22677,
                                "src": "2931:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 164,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2947:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 165,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "2947:18:0",
                                "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": 158,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "2874:13:0",
                              "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": 166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2874:92:0",
                            "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": 155,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2783:21:0",
                          "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": 167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2783:197:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms 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": 149,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 120,
                            "src": "2682:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 148,
                          "name": "IANNEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28268,
                          "src": "2671:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                            "typeString": "type(contract IANNEngine)"
                          }
                        },
                        "id": 150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2671:18:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNEngine_$28268",
                          "typeString": "contract IANNEngine"
                        }
                      },
                      "id": 151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28211,
                      "src": "2671:40:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2671:319:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2655:335:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 170,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 109,
                      "src": "3000:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 175,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 127,
                          "src": "3061:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 176,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 109,
                          "src": "3080:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 177,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 111,
                          "src": "3099:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 179,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 107,
                              "src": "3158:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 180,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 139,
                              "src": "3183:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 182,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 141,
                                  "src": "3224:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 183,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3238:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 184,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3238:27:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 185,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3267:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 186,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3267:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 187,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3283:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 188,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3283:18:0",
                                  "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": 181,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3210:13:0",
                                "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": 189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3210:92:0",
                              "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": 178,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "3119:21:0",
                            "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": 190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3119:197:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms 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": 172,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "3019:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 171,
                            "name": "IANNEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28268,
                            "src": "3008:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                              "typeString": "type(contract IANNEngine)"
                            }
                          },
                          "id": 173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3008:18:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IANNEngine_$28268",
                            "typeString": "contract IANNEngine"
                          }
                        },
                        "id": 174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28197,
                        "src": "3008:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3008:318:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "3000:326:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 193,
                  "nodeType": "ExpressionStatement",
                  "src": "3000:326:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 194,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "3345:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 195,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 147,
                        "src": "3352:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 196,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3344:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 118,
                  "id": 197,
                  "nodeType": "Return",
                  "src": "3337:22:0"
                }
              ]
            },
            "documentation": null,
            "id": 199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 113,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2150:8:0"
            },
            "parameters": {
              "id": 112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 107,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2059:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 106,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 109,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2076:18:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 108,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2076:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 111,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2096:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 110,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:53:0"
            },
            "returnParameters": {
              "id": 118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 115,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2176:12:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 114,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2176:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2190:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 116,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2175:22:0"
            },
            "scope": 200,
            "src": "2020:1346:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 201,
        "src": "288:3080:0"
      }
    ],
    "src": "41:3327:0"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/ANNActor.sol",
    "exportedSymbols": {
      "ANNActor": [
        200
      ]
    },
    "id": 201,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:0"
      },
      {
        "id": 2,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:0"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 28269,
        "src": "101:68:0",
        "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": 4,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 3852,
        "src": "171:42:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/ANN/IANNRegistry.sol",
        "file": "./IANNRegistry.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 201,
        "sourceUnit": 2971,
        "src": "214:28:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 8,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:0"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:0",
          "text": " @title ANNActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 200,
        "linearizedBaseContracts": [
          200,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "ANNActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19,
              "nodeType": "Block",
              "src": "462:2:0",
              "statements": []
            },
            "documentation": null,
            "id": 20,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 15,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10,
                    "src": "429:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 16,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12,
                    "src": "444:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 17,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20,
                  "src": "338:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20,
                  "src": "368:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:0"
            },
            "returnParameters": {
              "id": 18,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:0"
            },
            "scope": 200,
            "src": "326:138:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 104,
              "nodeType": "Block",
              "src": "1161:853:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 50,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1192:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 39,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:0",
                                "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": 38,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 37,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 40,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 49,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 43,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30,
                                    "src": "1224:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 42,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 44,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 45,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 46,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 47,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 48,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ANN",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 51,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:0",
                        "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": 35,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 52,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 53,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:0"
                },
                {
                  "assignments": [
                    55
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 55,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 104,
                      "src": "1395:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 54,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 64,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 59,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23,
                            "src": "1434:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 60,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 61,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 57,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 58,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 62,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 56,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 63,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:0"
                },
                {
                  "assignments": [
                    66
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 66,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 104,
                      "src": "1519:25:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 65,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1519:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 73,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 71,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "1586:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 68,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1558:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 67,
                          "name": "IANNEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28268,
                          "src": "1547:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                            "typeString": "type(contract IANNEngine)"
                          }
                        },
                        "id": 69,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1547:18:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNEngine_$28268",
                          "typeString": "contract IANNEngine"
                        }
                      },
                      "id": 70,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28183,
                      "src": "1547:38:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct ANNTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 72,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1547:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1519:73:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 81,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55,
                        "src": "1718:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 82,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "1739:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 83,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66,
                        "src": "1758:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 84,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26,
                        "src": "1784:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 85,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28,
                        "src": "1806:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 86,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30,
                        "src": "1829:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 89,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1857:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ANNActor_$200",
                              "typeString": "contract ANNActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ANNActor_$200",
                              "typeString": "contract ANNActor"
                            }
                          ],
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 87,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1849:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 90,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 91,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32,
                        "src": "1876:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms 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": 77,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "1675:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 76,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1667:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 75,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1667:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 78,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1667:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 74,
                          "name": "IANNRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2970,
                          "src": "1654:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNRegistry_$2970_$",
                            "typeString": "type(contract IANNRegistry)"
                          }
                        },
                        "id": 79,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1654:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                          "typeString": "contract IANNRegistry"
                        }
                      },
                      "id": 80,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2955,
                      "src": "1654:50:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_ANNTerms_$22768_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 ANNTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 92,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1654:237:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 93,
                  "nodeType": "ExpressionStatement",
                  "src": "1654:237:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 95,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55,
                        "src": "1924:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 96,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "1933:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 97,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "ANN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1933:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 98,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1951:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 99,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "1951:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 100,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1977:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "1977:29:0",
                        "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": 94,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "1907:16:0",
                      "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": 102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1907:100:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 103,
                  "nodeType": "EmitStatement",
                  "src": "1902:105:0"
                }
              ]
            },
            "documentation": {
              "id": 21,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:0",
              "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": "8bc58fe4",
            "id": 105,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "983:23:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "983:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1016:27:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 24,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1053:33:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1096:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 105,
                  "src": "1120:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:0"
            },
            "returnParameters": {
              "id": 34,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:0"
            },
            "scope": 200,
            "src": "954:1060:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 198,
              "nodeType": "Block",
              "src": "2202:1164:0",
              "statements": [
                {
                  "assignments": [
                    120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 120,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2432:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 119,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2432:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 125,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2473:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 121,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2449:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2449:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2449:32:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2432:49:0"
                },
                {
                  "assignments": [
                    127
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 127,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2491:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                        "typeString": "struct ANNTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 126,
                        "name": "ANNTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22768,
                        "src": "2491:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                          "typeString": "struct ANNTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 137,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 135,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2561:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 131,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2536:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2528:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 129,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2528:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2528:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 128,
                          "name": "IANNRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2970,
                          "src": "2515:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNRegistry_$2970_$",
                            "typeString": "type(contract IANNRegistry)"
                          }
                        },
                        "id": 133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2515:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNRegistry_$2970",
                          "typeString": "contract IANNRegistry"
                        }
                      },
                      "id": 134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2962,
                      "src": "2515:45:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_ANNTerms_$22768_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct ANNTerms memory)"
                      }
                    },
                    "id": 136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2515:54:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                      "typeString": "struct ANNTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2491:78:0"
                },
                {
                  "assignments": [
                    139,
                    141
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 139,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2580:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 138,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2580:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 141,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2601:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 140,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2601:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 145,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 143,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "2637:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 142,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2625:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2625:19:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2579:65:0"
                },
                {
                  "assignments": [
                    147
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 147,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 198,
                      "src": "2655:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 146,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2655:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 152,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 127,
                        "src": "2725:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 153,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "2744:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 154,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "2763:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 156,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 107,
                            "src": "2822:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 157,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 139,
                            "src": "2847:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 159,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 141,
                                "src": "2888:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 160,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2902:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 161,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22683,
                                "src": "2902:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 162,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2931:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 163,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22677,
                                "src": "2931:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 164,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2947:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 165,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "2947:18:0",
                                "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": 158,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "2874:13:0",
                              "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": 166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2874:92:0",
                            "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": 155,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2783:21:0",
                          "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": 167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2783:197:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms 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": 149,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 120,
                            "src": "2682:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 148,
                          "name": "IANNEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28268,
                          "src": "2671:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                            "typeString": "type(contract IANNEngine)"
                          }
                        },
                        "id": 150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2671:18:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IANNEngine_$28268",
                          "typeString": "contract IANNEngine"
                        }
                      },
                      "id": 151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28211,
                      "src": "2671:40:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2671:319:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2655:335:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 170,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 109,
                      "src": "3000:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 175,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 127,
                          "src": "3061:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 176,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 109,
                          "src": "3080:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 177,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 111,
                          "src": "3099:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 179,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 107,
                              "src": "3158:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 180,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 139,
                              "src": "3183:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 182,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 141,
                                  "src": "3224:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 183,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3238:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 184,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3238:27:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 185,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3267:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 186,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3267:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 187,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 127,
                                    "src": "3283:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 188,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3283:18:0",
                                  "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": 181,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3210:13:0",
                                "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": 189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3210:92:0",
                              "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": 178,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "3119:21:0",
                            "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": 190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3119:197:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms 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": 172,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "3019:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 171,
                            "name": "IANNEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28268,
                            "src": "3008:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IANNEngine_$28268_$",
                              "typeString": "type(contract IANNEngine)"
                            }
                          },
                          "id": 173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3008:18:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IANNEngine_$28268",
                            "typeString": "contract IANNEngine"
                          }
                        },
                        "id": 174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28197,
                        "src": "3008:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3008:318:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "3000:326:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 193,
                  "nodeType": "ExpressionStatement",
                  "src": "3000:326:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 194,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "3345:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 195,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 147,
                        "src": "3352:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 196,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3344:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 118,
                  "id": 197,
                  "nodeType": "Return",
                  "src": "3337:22:0"
                }
              ]
            },
            "documentation": null,
            "id": 199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 113,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2150:8:0"
            },
            "parameters": {
              "id": 112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 107,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2059:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 106,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 109,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2076:18:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 108,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2076:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 111,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2096:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 110,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:53:0"
            },
            "returnParameters": {
              "id": 118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 115,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2176:12:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 114,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2176:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "2190:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 116,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2175:22:0"
            },
            "scope": 200,
            "src": "2020:1346:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 201,
        "src": "288:3080:0"
      }
    ],
    "src": "41:3327:0"
  },
  "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": "0x8B60Ec23435e1E0F77a9AE5D7987B1fFC40B6aFc",
      "transactionHash": "0xd5e7dfae1bf6d8f9762dc353763319dfdaba26133e357ae3b8590b0d6ee70268"
    },
    "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": "0x5eAE9Ff56AD6ced8B060a9072F2B4DbF11136924",
      "transactionHash": "0x6c49c2c9934e1ef271e220e10e006c311af1628b4c5c3ae35c4ea57966709c43"
    },
    "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": "0xf8a1BfCC2d1d5FaD14B04BE317bf84C272560a62",
      "transactionHash": "0x922d58cdc168d7ca7094013d3d33178b22de07570656349839fe60209900efd0"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.580Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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": "ANNActor",
    "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,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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
  }
}