{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_hub",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_revokedNonce",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_config",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "AcceptorIsProposer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tag",
          "type": "bytes32"
        }
      ],
      "name": "AddressMissingHubTag",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "used",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "AvailableCreditLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "CallerIsNotStatedProposer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "current",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "allowed",
          "type": "address"
        }
      ],
      "name": "CallerNotAllowedAcceptor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "loanContract",
          "type": "address"
        }
      ],
      "name": "CallerNotLoanContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "current",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "Expired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "current",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "InsufficientCollateralAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "current",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "proposed",
          "type": "bytes32"
        }
      ],
      "name": "InvalidCollateralStateFingerprint",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "refinancingLoanId",
          "type": "uint256"
        }
      ],
      "name": "InvalidRefinancingLoanId",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "digest",
          "type": "bytes32"
        }
      ],
      "name": "InvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "InvalidSignatureLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinCollateralAmountNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MissingStateFingerprintComputer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonceSpace",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "NonceNotUsable",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minCollateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "indexed": false,
          "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "ProposalMade",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPROPOSAL_DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPROPOSAL_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROPOSAL_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "acceptor",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "refinancingLoanId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "proposalData",
          "type": "bytes"
        },
        {
          "internalType": "bytes32[]",
          "name": "proposalInclusionProof",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "acceptProposal",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "lender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "borrower",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "category",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "assetAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MultiToken.Asset",
              "name": "collateral",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "category",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "assetAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MultiToken.Asset",
              "name": "credit",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "bytes32",
              "name": "lenderSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "borrowerSpecHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct PWNSimpleLoan.Terms",
          "name": "loanTerms",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "contract PWNConfig",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "creditUsed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "proposalData",
          "type": "bytes"
        }
      ],
      "name": "decodeProposalData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minCollateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.ProposalValues",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minCollateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.ProposalValues",
          "name": "proposalValues",
          "type": "tuple"
        }
      ],
      "name": "encodeProposalData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "creditPerCollateralUnit",
          "type": "uint256"
        }
      ],
      "name": "getCreditAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "multiproposalMerkleRoot",
              "type": "bytes32"
            }
          ],
          "internalType": "struct PWNSimpleLoanProposal.Multiproposal",
          "name": "multiproposal",
          "type": "tuple"
        }
      ],
      "name": "getMultiproposalHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minCollateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "getProposalHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "hub",
      "outputs": [
        {
          "internalType": "contract PWNHub",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minCollateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "makeProposal",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsMade",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nonceSpace",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "revokeNonce",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revokedNonce",
      "outputs": [
        {
          "internalType": "contract PWNRevokedNonce",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x6101206040523480156200001257600080fd5b5060405162002947380380620029478339810160408190526200003591620001ea565b604080518082018252601d81527f50574e53696d706c654c6f616e46756e6769626c6550726f706f73616c0000006020808301919091528251808401845260038152620312e360ec1b818301526001600160a01b0380881660c05280871660e052851661010052925186938693869390927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f91620000d69185910162000234565b6040516020818303038152906040528051906020012082604051602001620000ff919062000234565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160408051808303601f1901815282825280516020918201206080527fb2178a58fb1eefb359ecfdd57bb19c0bdd0f4e6eed8547f46600e500ed111af3908301527fb63b40822cc79278afd8d1ce1a8006a4a298ec829d4d1610b69b2a4830c232709082015260600160408051601f19818403018152919052805160209091012060a05250620002659650505050505050565b80516001600160a01b0381168114620001e557600080fd5b919050565b6000806000606084860312156200020057600080fd5b6200020b84620001cd565b92506200021b60208501620001cd565b91506200022b60408501620001cd565b90509250925092565b6000825160005b818110156200025757602081860181015185830152016200023b565b506000920191825250919050565b60805160a05160c05160e0516101005161266c620002db6000396000818161026501526110e40152600081816102f00152818161082501528181610e3e0152610f850152600081816101de0152610b3301526000818161032a01526108980152600081816101a90152610a0c015261266c6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063808560ee116100ad578063993fba5c11610071578063993fba5c14610312578063abe9387814610325578063d06a0d821461034c578063f0209ad614610373578063ffa1ad741461039357600080fd5b8063808560ee14610287578063829d37701461029e57806383f19a0b146102b1578063853b94a0146102c45780639788ad55146102eb57600080fd5b8063365a86fc116100f4578063365a86fc146101d9578063382c0cdd1461021857806349d2151c1461022b578063579bfc301461024b57806379502c551461026057600080fd5b806301e83272146101265780631da4c275146101505780632d5d17fc146101835780633644e515146101a4575b600080fd5b610139610134366004611a31565b6103b5565b604051610147929190611b83565b60405180910390f35b61017361015e366004611c25565b60006020819052908152604090205460ff1681565b6040519015158152602001610147565b610196610191366004611ca1565b6106d0565b604051610147929190611e87565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610147565b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610147565b6101cb610226366004611ea5565b6107a5565b61023e610239366004611f4e565b6107e2565b604051610147919061210e565b61025e610259366004612121565b61080e565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6101cb6f4b3b4ca85a86c47a098a22400000000081565b6101cb6102ac366004612143565b610894565b6101cb6102bf366004611ea5565b610964565b6101cb7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee135681565b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6101cb610320366004612121565b6109e4565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b6101cb7f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d81565b6101cb610381366004611c25565b60016020526000908152604090205481565b61023e604051806040016040528060038152602001620312e360ec1b81525081565b60006103bf611938565b6000806104018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106d092505050565b9150915061044e7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee13568360405160200161043a9190612185565b604051602081830303815290604052610a08565b93508160600151600003610475576040516322565ab160e11b815260040160405180910390fd5b6060820151815110156104b057805160608301516040516307d2092d60e21b8152600481019290925260248201526044015b60405180910390fd5b60006104c482600001518460e001516109e4565b905061059f8d8d878c8c8c8c604051806101c001604052808c602001516001600160a01b031681526020018c6040015181526020018c60800151151581526020018c60a0015181526020018a81526020018c610100015181526020018c610180015164ffffffffff1681526020018c6101a001516001600160a01b031681526020018c6101c001516001600160a01b031681526020018c6102000151151581526020018c610220015181526020018c610240015181526020018c610260015181526020018c61028001516001600160a01b0316815250610a99565b6040518061012001604052808461020001516105bb578e6105c2565b846101c001515b6001600160a01b031681526020018461020001516105e557846101c001516105e7565b8e5b6001600160a01b0316815260200184610160015163ffffffff16815260200160405180608001604052808660000151600381111561062757610627611b18565b815260200186602001516001600160a01b0316815260200186604001518152602001856000015181525081526020016106648560c0015184611297565b8152602001846101200151815260200184610140015164ffffffffff16815260200184610200015161069757600061069e565b846101e001515b81526020018461020001516106b857846101e001516106bb565b60005b81525093505050509850989650505050505050565b604080516102a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081018290526102808101919091526040805160208101909152600081528280602001905181019061079c91906121ef565b91509150915091565b60006107dc7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee13568360405160200161043a9190612354565b92915050565b606082826040516020016107f7929190611e87565b604051602081830303815290604052905092915050565b60405163f79924a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f79924a99061085e903390869086906004016124d4565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000007f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d836040516020016108ec9151815260200190565b60408051601f198184030181529082905261090a92916020016124f5565b6040516020818303038152906040528051906020012060405160200161094792919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050919050565b600061096f826107a5565b905061098c816109876101e085016101c0860161251b565b6112cf565b61099e6101e083016101c0840161251b565b6001600160a01b0316817fe228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f464846040516109d79190612354565b60405180910390a3919050565b6000610a0183836f4b3b4ca85a86c47a098a22400000000061131f565b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008383604051602001610a3e9291906124f5565b60405160208183030381529060405280519060200120604051602001610a7b92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905092915050565b806101a001516001600160a01b0316336001600160a01b031614610ae8576101a081015160405163a4ce7f2960e01b81523360048201526001600160a01b0390911660248201526044016104a7565b6101a081015160405163680cabbd60e11b81526001600160a01b0391821660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d019577a90604401602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612538565b610bf5576101a0810151604051630b92eb2560e11b81526001600160a01b0390911660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201526044016104a7565b6000849003610c955760008681526020819052604090205460ff16610c9057610c5a8161010001518785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061140892505050565b610c90576101008101516040516301d2d55760e31b81526001600160a01b039091166004820152602481018790526044016104a7565b610d37565b6000610cb76040518060200160405280610cb089898c6115ac565b9052610894565b9050610cff8261010001518286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061140892505050565b610d35576101008201516040516301d2d55760e31b81526001600160a01b039091166004820152602481018290526044016104a7565b505b876001600160a01b03168161010001516001600160a01b031603610d79576040516326ab1a1d60e11b81526001600160a01b03891660048201526024016104a7565b86600003610db35761014081015115610dae57806101400151604051637a4b6f9760e11b81526004016104a791815260200190565b610dfc565b8061014001518714610dfc57610140810151151580610dd55750806101200151155b15610dfc57806101400151604051637a4b6f9760e11b81526004016104a791815260200190565b8060c0015164ffffffffff164210610e3c5760c081015160405163aa2fd92560e01b815242600482015264ffffffffff90911660248201526044016104a7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f291a62c8261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610e9b939291906124d4565b602060405180830381865afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190612538565b610f0e57806101000151816101600151826101800151604051632108c30560e11b81526004016104a7939291906124d4565b60e08101516001600160a01b031615801590610f4057508060e001516001600160a01b0316886001600160a01b031614155b15610f775760e0810151604051636075c95560e11b81526001600160a01b03808b16600483015290911660248201526044016104a7565b8060a00151600003611019577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f79924a98261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610fe2939291906124d4565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b4565b60a0810151608082015160008881526001602052604090205461103c919061256b565b1161106f5760808101516000878152600160205260408120805490919061106490849061256b565b909155506110b49050565b608081015160008781526001602052604090205461108d919061256b565b60a082015160405163231795cb60e21b8152600481019290925260248201526044016104a7565b80604001511561128d578051604051630b7e49eb60e21b81526001600160a01b03918216600482015260009182917f000000000000000000000000000000000000000000000000000000000000000090911690632df927ac90602401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061257e565b90506001600160a01b038116156111ef578251602084015160405163ec2ce34560e01b81526001600160a01b0384169263ec2ce345926111a7926004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e8919061259b565b9150611256565b82516112029063f511231560e01b6115f8565b1561123d578251602084015160405163f511231560e01b81526001600160a01b039092169163f5112315916111a79160040190815260200190565b60405163f3c0936360e01b815260040160405180910390fd5b8183606001511461128a576060830151604051633840fc0160e01b81526104a7918491600401918252602082015260400190565b50505b5050505050505050565b61129f611991565b506040805160808101825260008082526001600160a01b0394909416602082015290810192909252606082015290565b336001600160a01b0382161461130357604051631144200360e31b81526001600160a01b03821660048201526024016104a7565b506000908152602081905260409020805460ff19166001179055565b60008080600019858709858702925082811083820303915050806000036113595783828161134f5761134f6125b4565b0492505050610a01565b8084116113a05760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016104a7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006001600160a01b0384163b1561150357600080856001600160a01b0316631626ba7e60e01b86866040516024016114429291906125ca565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161148091906125eb565b600060405180830381855afa9150503d80600081146114bb576040519150601f19603f3d011682016040523d82523d6000602084013e6114c0565b606091505b50915091508180156114d3575080516020145b80156114fa57508051630b135d3f60e11b906114f8908301602090810190840161259b565b145b92505050610a01565b6000806000845160410361152b5750505060208201516040830151606084015160001a611582565b845160400361156457602085015160408601519093506001600160ff1b038116925061155c60ff82901c601b61256b565b915050611582565b845160405163058676ad60e31b81526004016104a791815260200190565b61158e86828585611614565b6001600160a01b0316876001600160a01b0316149350505050610a01565b600081815b848110156115ef576115db828787848181106115cf576115cf612607565b9050602002013561163c565b9150806115e78161261d565b9150506115b1565b50949350505050565b60006116038361166b565b8015610a015750610a01838361169e565b600080600061162587878787611727565b91509150611632816117eb565b5095945050505050565b6000818310611658576000828152602084905260409020610a01565b6000838152602083905260409020610a01565b600061167e826301ffc9a760e01b61169e565b80156107dc5750611697826001600160e01b031961169e565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611710575060208210155b801561171c5750600081115b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561175e57506000905060036117e2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156117b2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117db576000600192509250506117e2565b9150600090505b94509492505050565b60008160048111156117ff576117ff611b18565b036118075750565b600181600481111561181b5761181b611b18565b036118685760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104a7565b600281600481111561187c5761187c611b18565b036118c95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104a7565b60038160048111156118dd576118dd611b18565b036119355760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104a7565b50565b60408051610120810182526000808252602082018190529181019190915260608101611962611991565b815260200161196f611991565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160808101909152806000815260200160006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038116811461193557600080fd5b80356119e3816119c3565b919050565b60008083601f8401126119fa57600080fd5b50813567ffffffffffffffff811115611a1257600080fd5b602083019150836020828501011115611a2a57600080fd5b9250929050565b60008060008060008060008060a0898b031215611a4d57600080fd5b8835611a58816119c3565b975060208901359650604089013567ffffffffffffffff80821115611a7c57600080fd5b611a888c838d016119e8565b909850965060608b0135915080821115611aa157600080fd5b818b0191508b601f830112611ab557600080fd5b813581811115611ac457600080fd5b8c60208260051b8501011115611ad957600080fd5b6020830196508095505060808b0135915080821115611af757600080fd5b50611b048b828c016119e8565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b60048110611b4c57634e487b7160e01b600052602160045260246000fd5b9052565b611b5b828251611b2e565b6020818101516001600160a01b03169083015260408082015190830152606090810151910152565b82815281516001600160a01b03166020820152610200810160208301516001600160a01b038116604084015250604083015163ffffffff81166060840152506060830151611bd46080840182611b50565b506080830151610100611be981850183611b50565b60a085015161018085015260c085015164ffffffffff166101a085015260e08501516101c0850152909301516101e09092019190915292915050565b600060208284031215611c3757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516020810167ffffffffffffffff81118282101715611c7757611c77611c3e565b60405290565b6040516102a0810167ffffffffffffffff81118282101715611c7757611c77611c3e565b600060208284031215611cb357600080fd5b813567ffffffffffffffff80821115611ccb57600080fd5b818401915084601f830112611cdf57600080fd5b813581811115611cf157611cf1611c3e565b604051601f8201601f19908116603f01168101908382118183101715611d1957611d19611c3e565b81604052828152876020848701011115611d3257600080fd5b826020860160208301376000928101602001929092525095945050505050565b611d5d828251611b2e565b6020810151611d7760208401826001600160a01b03169052565b5060408101516040830152606081015160608301526080810151611d9f608084018215159052565b5060a081015160a083015260c0810151611dc460c08401826001600160a01b03169052565b5060e08181015190830152610100808201519083015261012080820151908301526101408082015164ffffffffff908116918401919091526101608083015163ffffffff169084015261018080830151909116908301526101a0808201516001600160a01b03908116918401919091526101c0808301518216908401526101e08083015190840152610200808301511515908401526102208083015190840152610240808301519084015261026080830151908401526102809182015116910152565b6102c08101611e968285611d52565b82516102a08301529392505050565b60006102a08284031215611eb857600080fd5b50919050565b6004811061193557600080fd5b80356119e381611ebe565b801515811461193557600080fd5b80356119e381611ed6565b64ffffffffff8116811461193557600080fd5b80356119e381611eef565b63ffffffff8116811461193557600080fd5b80356119e381611f0d565b600060208284031215611f3c57600080fd5b611f44611c54565b9135825250919050565b6000808284036102c0811215611f6357600080fd5b6102a080821215611f7357600080fd5b611f7b611c7d565b9150611f8685611ecb565b8252611f94602086016119d8565b60208301526040850135604083015260608501356060830152611fb960808601611ee4565b608083015260a085013560a0830152611fd460c086016119d8565b60c083015260e0858101359083015261010080860135908301526101208086013590830152610140612007818701611f02565b90830152610160612019868201611f1f565b9083015261018061202b868201611f02565b908301526101a061203d8682016119d8565b908301526101c061204f8682016119d8565b908301526101e0858101359083015261020061206c818701611ee4565b9083015261022085810135908301526102408086013590830152610260808601359083015261028061209f8187016119d8565b81840152508193506120b386828701611f2a565b925050509250929050565b60005b838110156120d95781810151838201526020016120c1565b50506000910152565b600081518084526120fa8160208601602086016120be565b601f01601f19169290920160200192915050565b602081526000610a0160208301846120e2565b6000806040838503121561213457600080fd5b50508035926020909101359150565b60006020828403121561215557600080fd5b6040516020810181811067ffffffffffffffff8211171561217857612178611c3e565b6040529135825250919050565b6102a081016107dc8284611d52565b80516119e381611ebe565b80516119e3816119c3565b80516119e381611ed6565b80516119e381611eef565b80516119e381611f0d565b6000602082840312156121dd57600080fd5b6121e5611c54565b9151825250919050565b6000808284036102c081121561220457600080fd5b6102a08082121561221457600080fd5b61221c611c7d565b915061222785612194565b82526122356020860161219f565b6020830152604085015160408301526060850151606083015261225a608086016121aa565b608083015260a085015160a083015261227560c0860161219f565b60c083015260e08581015190830152610100808601519083015261012080860151908301526101406122a88187016121b5565b908301526101606122ba8682016121c0565b908301526101806122cc8682016121b5565b908301526101a06122de86820161219f565b908301526101c06122f086820161219f565b908301526101e0858101519083015261020061230d8187016121aa565b9083015261022085810151908301526102408086015190830152610260808601519083015261028061234081870161219f565b81840152508193506120b3868287016121cb565b6102a0810161236b8261236685611ecb565b611b2e565b612377602084016119d8565b6001600160a01b03811660208401525060408301356040830152606083013560608301526123a760808401611ee4565b1515608083015260a083810135908301526123c460c084016119d8565b6001600160a01b031660c083015260e0838101359083015261010080840135908301526101208084013590830152610140612400818501611f02565b64ffffffffff1690830152610160612419848201611f1f565b63ffffffff1690830152610180612431848201611f02565b64ffffffffff16908301526101a061244a8482016119d8565b6001600160a01b0316908301526101c06124658482016119d8565b6001600160a01b0316908301526101e0838101359083015261020061248b818501611ee4565b1515908301526102208381013590830152610240808401359083015261026080840135908301526102806124c08185016119d8565b6001600160a01b0316920191909152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8281526000825161250d8160208501602087016120be565b919091016020019392505050565b60006020828403121561252d57600080fd5b8135610a01816119c3565b60006020828403121561254a57600080fd5b8151610a0181611ed6565b634e487b7160e01b600052601160045260246000fd5b808201808211156107dc576107dc612555565b60006020828403121561259057600080fd5b8151610a01816119c3565b6000602082840312156125ad57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b8281526040602082015260006125e360408301846120e2565b949350505050565b600082516125fd8184602087016120be565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161262f5761262f612555565b506001019056fea2646970667358221220e96650315c4766bc4f7c305a555e2212c9a7ed4104b1ca57c6e2f637e1b4a58964736f6c63430008100033",
    "sourceMap": "688:10645:88:-:0;;;5721:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4106:773:90;;;;;;;;;;;;;;;;;;;;5902:7:88;;;;;;;;;;-1:-1:-1;;;5902:7:88;;;;-1:-1:-1;;;;;4271:18:90;;;;;4299:45;;;;;4354:27;;;;4564:22;;5839:4:88;;5845:13;;5860:7;;4106:773:90;;4445:95;;4564:22;;4106:773;;4564:22;;:::i;:::-;;;;;;;;;;;;;4554:33;;;;;;4628:7;4611:25;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4611:25:90;;;;;;;;;4601:36;;4611:25;4601:36;;;;4421:280;;;1257:25:119;;;;1298:18;;1291:34;;;;1341:18;;;1334:34;;;;4651:13:90;1384:18:119;;;1377:34;4686:4:90;1427:19:119;;;1420:61;1229:19;;4421:280:90;;;;;;-1:-1:-1;;4421:280:90;;;;;;4411:291;;4421:280;4411:291;;;;4392:310;;4780:38;4756:115;;;1666:25:119;4832:29:90;1707:18:119;;;1700:34;1639:18;;4756:115:90;;;-1:-1:-1;;4756:115:90;;;;;;;;;4746:126;;4756:115;4746:126;;;;4713:159;;-1:-1:-1;688:10645:88;;-1:-1:-1;;;;;;;688:10645:88;14:177:119;93:13;;-1:-1:-1;;;;;135:31:119;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;579:414::-;710:3;748:6;742:13;773:1;783:129;797:6;794:1;791:13;783:129;;;895:4;879:14;;;875:25;;869:32;856:11;;;849:53;812:12;783:129;;;-1:-1:-1;967:1:119;931:16;;956:13;;;-1:-1:-1;931:16:119;579:414;-1:-1:-1;579:414:119:o;1492:248::-;688:10645:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063808560ee116100ad578063993fba5c11610071578063993fba5c14610312578063abe9387814610325578063d06a0d821461034c578063f0209ad614610373578063ffa1ad741461039357600080fd5b8063808560ee14610287578063829d37701461029e57806383f19a0b146102b1578063853b94a0146102c45780639788ad55146102eb57600080fd5b8063365a86fc116100f4578063365a86fc146101d9578063382c0cdd1461021857806349d2151c1461022b578063579bfc301461024b57806379502c551461026057600080fd5b806301e83272146101265780631da4c275146101505780632d5d17fc146101835780633644e515146101a4575b600080fd5b610139610134366004611a31565b6103b5565b604051610147929190611b83565b60405180910390f35b61017361015e366004611c25565b60006020819052908152604090205460ff1681565b6040519015158152602001610147565b610196610191366004611ca1565b6106d0565b604051610147929190611e87565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610147565b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610147565b6101cb610226366004611ea5565b6107a5565b61023e610239366004611f4e565b6107e2565b604051610147919061210e565b61025e610259366004612121565b61080e565b005b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6101cb6f4b3b4ca85a86c47a098a22400000000081565b6101cb6102ac366004612143565b610894565b6101cb6102bf366004611ea5565b610964565b6101cb7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee135681565b6102007f000000000000000000000000000000000000000000000000000000000000000081565b6101cb610320366004612121565b6109e4565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b6101cb7f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d81565b6101cb610381366004611c25565b60016020526000908152604090205481565b61023e604051806040016040528060038152602001620312e360ec1b81525081565b60006103bf611938565b6000806104018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106d092505050565b9150915061044e7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee13568360405160200161043a9190612185565b604051602081830303815290604052610a08565b93508160600151600003610475576040516322565ab160e11b815260040160405180910390fd5b6060820151815110156104b057805160608301516040516307d2092d60e21b8152600481019290925260248201526044015b60405180910390fd5b60006104c482600001518460e001516109e4565b905061059f8d8d878c8c8c8c604051806101c001604052808c602001516001600160a01b031681526020018c6040015181526020018c60800151151581526020018c60a0015181526020018a81526020018c610100015181526020018c610180015164ffffffffff1681526020018c6101a001516001600160a01b031681526020018c6101c001516001600160a01b031681526020018c6102000151151581526020018c610220015181526020018c610240015181526020018c610260015181526020018c61028001516001600160a01b0316815250610a99565b6040518061012001604052808461020001516105bb578e6105c2565b846101c001515b6001600160a01b031681526020018461020001516105e557846101c001516105e7565b8e5b6001600160a01b0316815260200184610160015163ffffffff16815260200160405180608001604052808660000151600381111561062757610627611b18565b815260200186602001516001600160a01b0316815260200186604001518152602001856000015181525081526020016106648560c0015184611297565b8152602001846101200151815260200184610140015164ffffffffff16815260200184610200015161069757600061069e565b846101e001515b81526020018461020001516106b857846101e001516106bb565b60005b81525093505050509850989650505050505050565b604080516102a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081018290526102808101919091526040805160208101909152600081528280602001905181019061079c91906121ef565b91509150915091565b60006107dc7f58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee13568360405160200161043a9190612354565b92915050565b606082826040516020016107f7929190611e87565b604051602081830303815290604052905092915050565b60405163f79924a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f79924a99061085e903390869086906004016124d4565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000007f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d836040516020016108ec9151815260200190565b60408051601f198184030181529082905261090a92916020016124f5565b6040516020818303038152906040528051906020012060405160200161094792919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050919050565b600061096f826107a5565b905061098c816109876101e085016101c0860161251b565b6112cf565b61099e6101e083016101c0840161251b565b6001600160a01b0316817fe228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f464846040516109d79190612354565b60405180910390a3919050565b6000610a0183836f4b3b4ca85a86c47a098a22400000000061131f565b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008383604051602001610a3e9291906124f5565b60405160208183030381529060405280519060200120604051602001610a7b92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905092915050565b806101a001516001600160a01b0316336001600160a01b031614610ae8576101a081015160405163a4ce7f2960e01b81523360048201526001600160a01b0390911660248201526044016104a7565b6101a081015160405163680cabbd60e11b81526001600160a01b0391821660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d019577a90604401602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612538565b610bf5576101a0810151604051630b92eb2560e11b81526001600160a01b0390911660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201526044016104a7565b6000849003610c955760008681526020819052604090205460ff16610c9057610c5a8161010001518785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061140892505050565b610c90576101008101516040516301d2d55760e31b81526001600160a01b039091166004820152602481018790526044016104a7565b610d37565b6000610cb76040518060200160405280610cb089898c6115ac565b9052610894565b9050610cff8261010001518286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061140892505050565b610d35576101008201516040516301d2d55760e31b81526001600160a01b039091166004820152602481018290526044016104a7565b505b876001600160a01b03168161010001516001600160a01b031603610d79576040516326ab1a1d60e11b81526001600160a01b03891660048201526024016104a7565b86600003610db35761014081015115610dae57806101400151604051637a4b6f9760e11b81526004016104a791815260200190565b610dfc565b8061014001518714610dfc57610140810151151580610dd55750806101200151155b15610dfc57806101400151604051637a4b6f9760e11b81526004016104a791815260200190565b8060c0015164ffffffffff164210610e3c5760c081015160405163aa2fd92560e01b815242600482015264ffffffffff90911660248201526044016104a7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f291a62c8261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610e9b939291906124d4565b602060405180830381865afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190612538565b610f0e57806101000151816101600151826101800151604051632108c30560e11b81526004016104a7939291906124d4565b60e08101516001600160a01b031615801590610f4057508060e001516001600160a01b0316886001600160a01b031614155b15610f775760e0810151604051636075c95560e11b81526001600160a01b03808b16600483015290911660248201526044016104a7565b8060a00151600003611019577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f79924a98261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610fe2939291906124d4565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b4565b60a0810151608082015160008881526001602052604090205461103c919061256b565b1161106f5760808101516000878152600160205260408120805490919061106490849061256b565b909155506110b49050565b608081015160008781526001602052604090205461108d919061256b565b60a082015160405163231795cb60e21b8152600481019290925260248201526044016104a7565b80604001511561128d578051604051630b7e49eb60e21b81526001600160a01b03918216600482015260009182917f000000000000000000000000000000000000000000000000000000000000000090911690632df927ac90602401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061257e565b90506001600160a01b038116156111ef578251602084015160405163ec2ce34560e01b81526001600160a01b0384169263ec2ce345926111a7926004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e8919061259b565b9150611256565b82516112029063f511231560e01b6115f8565b1561123d578251602084015160405163f511231560e01b81526001600160a01b039092169163f5112315916111a79160040190815260200190565b60405163f3c0936360e01b815260040160405180910390fd5b8183606001511461128a576060830151604051633840fc0160e01b81526104a7918491600401918252602082015260400190565b50505b5050505050505050565b61129f611991565b506040805160808101825260008082526001600160a01b0394909416602082015290810192909252606082015290565b336001600160a01b0382161461130357604051631144200360e31b81526001600160a01b03821660048201526024016104a7565b506000908152602081905260409020805460ff19166001179055565b60008080600019858709858702925082811083820303915050806000036113595783828161134f5761134f6125b4565b0492505050610a01565b8084116113a05760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016104a7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006001600160a01b0384163b1561150357600080856001600160a01b0316631626ba7e60e01b86866040516024016114429291906125ca565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161148091906125eb565b600060405180830381855afa9150503d80600081146114bb576040519150601f19603f3d011682016040523d82523d6000602084013e6114c0565b606091505b50915091508180156114d3575080516020145b80156114fa57508051630b135d3f60e11b906114f8908301602090810190840161259b565b145b92505050610a01565b6000806000845160410361152b5750505060208201516040830151606084015160001a611582565b845160400361156457602085015160408601519093506001600160ff1b038116925061155c60ff82901c601b61256b565b915050611582565b845160405163058676ad60e31b81526004016104a791815260200190565b61158e86828585611614565b6001600160a01b0316876001600160a01b0316149350505050610a01565b600081815b848110156115ef576115db828787848181106115cf576115cf612607565b9050602002013561163c565b9150806115e78161261d565b9150506115b1565b50949350505050565b60006116038361166b565b8015610a015750610a01838361169e565b600080600061162587878787611727565b91509150611632816117eb565b5095945050505050565b6000818310611658576000828152602084905260409020610a01565b6000838152602083905260409020610a01565b600061167e826301ffc9a760e01b61169e565b80156107dc5750611697826001600160e01b031961169e565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611710575060208210155b801561171c5750600081115b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561175e57506000905060036117e2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156117b2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117db576000600192509250506117e2565b9150600090505b94509492505050565b60008160048111156117ff576117ff611b18565b036118075750565b600181600481111561181b5761181b611b18565b036118685760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104a7565b600281600481111561187c5761187c611b18565b036118c95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104a7565b60038160048111156118dd576118dd611b18565b036119355760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104a7565b50565b60408051610120810182526000808252602082018190529181019190915260608101611962611991565b815260200161196f611991565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160808101909152806000815260200160006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038116811461193557600080fd5b80356119e3816119c3565b919050565b60008083601f8401126119fa57600080fd5b50813567ffffffffffffffff811115611a1257600080fd5b602083019150836020828501011115611a2a57600080fd5b9250929050565b60008060008060008060008060a0898b031215611a4d57600080fd5b8835611a58816119c3565b975060208901359650604089013567ffffffffffffffff80821115611a7c57600080fd5b611a888c838d016119e8565b909850965060608b0135915080821115611aa157600080fd5b818b0191508b601f830112611ab557600080fd5b813581811115611ac457600080fd5b8c60208260051b8501011115611ad957600080fd5b6020830196508095505060808b0135915080821115611af757600080fd5b50611b048b828c016119e8565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b60048110611b4c57634e487b7160e01b600052602160045260246000fd5b9052565b611b5b828251611b2e565b6020818101516001600160a01b03169083015260408082015190830152606090810151910152565b82815281516001600160a01b03166020820152610200810160208301516001600160a01b038116604084015250604083015163ffffffff81166060840152506060830151611bd46080840182611b50565b506080830151610100611be981850183611b50565b60a085015161018085015260c085015164ffffffffff166101a085015260e08501516101c0850152909301516101e09092019190915292915050565b600060208284031215611c3757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516020810167ffffffffffffffff81118282101715611c7757611c77611c3e565b60405290565b6040516102a0810167ffffffffffffffff81118282101715611c7757611c77611c3e565b600060208284031215611cb357600080fd5b813567ffffffffffffffff80821115611ccb57600080fd5b818401915084601f830112611cdf57600080fd5b813581811115611cf157611cf1611c3e565b604051601f8201601f19908116603f01168101908382118183101715611d1957611d19611c3e565b81604052828152876020848701011115611d3257600080fd5b826020860160208301376000928101602001929092525095945050505050565b611d5d828251611b2e565b6020810151611d7760208401826001600160a01b03169052565b5060408101516040830152606081015160608301526080810151611d9f608084018215159052565b5060a081015160a083015260c0810151611dc460c08401826001600160a01b03169052565b5060e08181015190830152610100808201519083015261012080820151908301526101408082015164ffffffffff908116918401919091526101608083015163ffffffff169084015261018080830151909116908301526101a0808201516001600160a01b03908116918401919091526101c0808301518216908401526101e08083015190840152610200808301511515908401526102208083015190840152610240808301519084015261026080830151908401526102809182015116910152565b6102c08101611e968285611d52565b82516102a08301529392505050565b60006102a08284031215611eb857600080fd5b50919050565b6004811061193557600080fd5b80356119e381611ebe565b801515811461193557600080fd5b80356119e381611ed6565b64ffffffffff8116811461193557600080fd5b80356119e381611eef565b63ffffffff8116811461193557600080fd5b80356119e381611f0d565b600060208284031215611f3c57600080fd5b611f44611c54565b9135825250919050565b6000808284036102c0811215611f6357600080fd5b6102a080821215611f7357600080fd5b611f7b611c7d565b9150611f8685611ecb565b8252611f94602086016119d8565b60208301526040850135604083015260608501356060830152611fb960808601611ee4565b608083015260a085013560a0830152611fd460c086016119d8565b60c083015260e0858101359083015261010080860135908301526101208086013590830152610140612007818701611f02565b90830152610160612019868201611f1f565b9083015261018061202b868201611f02565b908301526101a061203d8682016119d8565b908301526101c061204f8682016119d8565b908301526101e0858101359083015261020061206c818701611ee4565b9083015261022085810135908301526102408086013590830152610260808601359083015261028061209f8187016119d8565b81840152508193506120b386828701611f2a565b925050509250929050565b60005b838110156120d95781810151838201526020016120c1565b50506000910152565b600081518084526120fa8160208601602086016120be565b601f01601f19169290920160200192915050565b602081526000610a0160208301846120e2565b6000806040838503121561213457600080fd5b50508035926020909101359150565b60006020828403121561215557600080fd5b6040516020810181811067ffffffffffffffff8211171561217857612178611c3e565b6040529135825250919050565b6102a081016107dc8284611d52565b80516119e381611ebe565b80516119e3816119c3565b80516119e381611ed6565b80516119e381611eef565b80516119e381611f0d565b6000602082840312156121dd57600080fd5b6121e5611c54565b9151825250919050565b6000808284036102c081121561220457600080fd5b6102a08082121561221457600080fd5b61221c611c7d565b915061222785612194565b82526122356020860161219f565b6020830152604085015160408301526060850151606083015261225a608086016121aa565b608083015260a085015160a083015261227560c0860161219f565b60c083015260e08581015190830152610100808601519083015261012080860151908301526101406122a88187016121b5565b908301526101606122ba8682016121c0565b908301526101806122cc8682016121b5565b908301526101a06122de86820161219f565b908301526101c06122f086820161219f565b908301526101e0858101519083015261020061230d8187016121aa565b9083015261022085810151908301526102408086015190830152610260808601519083015261028061234081870161219f565b81840152508193506120b3868287016121cb565b6102a0810161236b8261236685611ecb565b611b2e565b612377602084016119d8565b6001600160a01b03811660208401525060408301356040830152606083013560608301526123a760808401611ee4565b1515608083015260a083810135908301526123c460c084016119d8565b6001600160a01b031660c083015260e0838101359083015261010080840135908301526101208084013590830152610140612400818501611f02565b64ffffffffff1690830152610160612419848201611f1f565b63ffffffff1690830152610180612431848201611f02565b64ffffffffff16908301526101a061244a8482016119d8565b6001600160a01b0316908301526101c06124658482016119d8565b6001600160a01b0316908301526101e0838101359083015261020061248b818501611ee4565b1515908301526102208381013590830152610240808401359083015261026080840135908301526102806124c08185016119d8565b6001600160a01b0316920191909152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8281526000825161250d8160208501602087016120be565b919091016020019392505050565b60006020828403121561252d57600080fd5b8135610a01816119c3565b60006020828403121561254a57600080fd5b8151610a0181611ed6565b634e487b7160e01b600052601160045260246000fd5b808201808211156107dc576107dc612555565b60006020828403121561259057600080fd5b8151610a01816119c3565b6000602082840312156125ad57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b8281526040602082015260006125e360408301846120e2565b949350505050565b600082516125fd8184602087016120be565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161262f5761262f612555565b506001019056fea2646970667358221220e96650315c4766bc4f7c305a555e2212c9a7ed4104b1ca57c6e2f637e1b4a58964736f6c63430008100033",
    "sourceMap": "688:10645:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8166:3164;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2224:46:90;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;4591:14:119;;4584:22;4566:41;;4554:2;4539:18;2224:46:90;4426:187:119;7386:192:88;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1134:41:90:-;;;;;;;;8815:25:119;;;8803:2;8788:18;1134:41:90;8669:177:119;1243:27:90;;;;;;;;-1:-1:-1;;;;;9031:32:119;;;9013:51;;9001:2;8986:18;1243:27:90;8851:219:119;6082:164:88;;;;;;:::i;:::-;;:::i;6979:211::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5801:137:90:-;;;;;;:::i;:::-;;:::i;:::-;;1327:33;;;;;937:69:88;;1002:4;937:69;;5251:322:90;;;;;;:::i;:::-;;:::i;6489:273:88:-;;;;;;:::i;:::-;;:::i;1083:583::-;;1127:539;1083:583;;1276:45:90;;;;;7871:232:88;;;;;;:::i;:::-;;:::i;1181:55:90:-;;;;;1367:108;;1416:59;1367:108;;2422:46;;;;;;:::i;:::-;;;;;;;;;;;;;;759:38:88;;;;;;;;;;;;;;;-1:-1:-1;;;759:38:88;;;;;8166:3164;8406:20;8428:36;;:::i;:::-;8509:24;8535:36;8575:32;8594:12;;8575:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8575:18:88;;-1:-1:-1;;;8575:32:88:i;:::-;8508:99;;;;8663:57;1127:539;8710:8;8699:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;8663:16;:57::i;:::-;8648:72;;8774:8;:28;;;8806:1;8774:33;8770:98;;8830:27;;-1:-1:-1;;;8830:27:88;;;;;;;;;;;8770:98;8915:28;;;;8881:31;;:62;8877:255;;;9022:31;;9078:28;;;;8966:155;;-1:-1:-1;;;8966:155:88;;;;;15476:25:119;;;;15517:18;;;15510:34;15449:18;;8966:155:88;;;;;;;;8877:255;9177:20;9200:82;9216:14;:31;;;9249:8;:32;;;9200:15;:82::i;:::-;9177:105;;9327:1006;9356:8;9378:17;9409:12;9435:22;;9471:9;;9494:829;;;;;;;;9544:8;:26;;;-1:-1:-1;;;;;9494:829:88;;;;;9602:8;:21;;;9494:829;;;;9674:8;:40;;;9494:829;;;;;;9760:8;:35;;;9494:829;;;;9827:12;9494:829;;;;9879:8;:29;;;9494:829;;;;9938:8;:19;;;9494:829;;;;;;9992:8;:24;;;-1:-1:-1;;;;;9494:829:88;;;;;10044:8;:17;;;-1:-1:-1;;;;;9494:829:88;;;;;10088:8;:16;;;9494:829;;;;;;10141:8;:26;;;9494:829;;;;10197:8;:19;;;9494:829;;;;10241:8;:14;;;9494:829;;;;10287:8;:21;;;-1:-1:-1;;;;;9494:829:88;;;;9327:15;:1006::i;:::-;10392:931;;;;;;;;10434:8;:16;;;:47;;10473:8;10434:47;;;10453:8;:17;;;10434:47;-1:-1:-1;;;;;10392:931:88;;;;;10505:8;:16;;;:47;;10535:8;:17;;;10505:47;;;10524:8;10505:47;-1:-1:-1;;;;;10392:931:88;;;;;10576:8;:17;;;10392:931;;;;;;10619:245;;;;;;;;10664:8;:27;;;10619:245;;;;;;;;:::i;:::-;;;;;10723:8;:26;;;-1:-1:-1;;;;;10619:245:88;;;;;10771:8;:21;;;10619:245;;;;10818:14;:31;;;10619:245;;;10392:931;;;;10886:124;10935:8;:22;;;10983:12;10886:16;:124::i;:::-;10392:931;;;;11045:8;:28;;;10392:931;;;;11108:8;:28;;;10392:931;;;;;;11166:8;:16;;;:57;;11221:1;11166:57;;;11185:8;:25;;;11166:57;10392:931;;;;11255:8;:16;;;:57;;11287:8;:25;;;11255:57;;;11282:1;11255:57;10392:931;;;10380:943;;8466:2864;;;8166:3164;;;;;;;;;;;:::o;7386:192::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7530:12:88;7519:52;;;;;;;;;;;;:::i;:::-;7512:59;;;;7386:192;;;:::o;6082:164::-;6156:7;6182:57;1127:539;6229:8;6218:20;;;;;;;;:::i;6182:57::-;6175:64;6082:164;-1:-1:-1;;6082:164:88:o;6979:211::-;7116:12;7158:8;7168:14;7147:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7140:43;;6979:211;;;;:::o;5801:137:90:-;5876:55;;-1:-1:-1;;;5876:55:90;;-1:-1:-1;;;;;5876:12:90;:24;;;;:55;;5901:10;;5913;;5925:5;;5876:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5801:137;;:::o;5251:322::-;5338:7;5415:30;1416:59;5526:13;5515:25;;;;;;21904:13:119;21886:32;;21874:2;21859:18;;21676:248;5515:25:90;;;;-1:-1:-1;;5515:25:90;;;;;;;;;;5457:97;;;5515:25;5457:97;;:::i;:::-;;;;;;;;;;;;;5447:108;;;;;;5374:191;;;;;;;;-1:-1:-1;;;22551:27:119;;22603:1;22594:11;;22587:27;;;;22639:2;22630:12;;22623:28;22676:2;22667:12;;22293:392;5374:191:90;;;;;;;;;;;;;5364:202;;;;;;5357:209;;5251:322;;;:::o;6489:273:88:-;6557:20;6604:25;6620:8;6604:15;:25::i;:::-;6589:40;-1:-1:-1;6639:46:88;6589:40;6667:17;;;;;;;;:::i;:::-;6639:13;:46::i;:::-;6727:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6700:55:88;6713:12;6700:55;6746:8;6700:55;;;;;;:::i;:::-;;;;;;;;6489:273;;;:::o;7871:232::-;7976:7;8002:94;8014:16;8032:23;1002:4;8002:11;:94::i;:::-;7995:101;7871:232;-1:-1:-1;;;7871:232:88:o;7156:332:90:-;7283:7;7360:16;7422;7440:15;7388:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7378:92;;;;;;7319:161;;;;;;;;-1:-1:-1;;;22551:27:119;;22603:1;22594:11;;22587:27;;;;22639:2;22630:12;;22623:28;22676:2;22667:12;;22293:392;7319:161:90;;;;;;;;;;;;;7309:172;;;;;;7302:179;;7156:332;;;;:::o;8351:5323::-;8664:8;:21;;;-1:-1:-1;;;;;8650:35:90;:10;-1:-1:-1;;;;;8650:35:90;;8646:155;;8766:21;;;;8708:82;;-1:-1:-1;;;8708:82:90;;8740:10;8708:82;;;23154:34:119;-1:-1:-1;;;;;23224:15:119;;;23204:18;;;23197:43;23089:18;;8708:82:90;22942:304:119;8646:155:90;8826:21;;;;8815:57;;-1:-1:-1;;;8815:57:90;;-1:-1:-1;;;;;23443:32:119;;;8815:57:90;;;23425:51:119;266:28:76;23492:18:119;;;23485:34;8815:3:90;:10;;;;;;23398:18:119;;8815:57:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8810:178;;8924:21;;;;8895:82;;-1:-1:-1;;;8895:82:90;;-1:-1:-1;;;;;23443:32:119;;;8895:82:90;;;23425:51:119;266:28:76;23492:18:119;;;23485:34;23398:18;;8895:82:90;23251:274:119;8810:178:90;9100:1;9067:34;;;9063:1025;;9163:13;:27;;;;;;;;;;;;;9158:293;;9215:83;9255:8;:17;;;9274:12;9288:9;;9215:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9215:39:90;;-1:-1:-1;;;9215:83:90:i;:::-;9210:227;;9376:17;;;;9329:89;;-1:-1:-1;;;9329:89:90;;-1:-1:-1;;;;;23443:32:119;;;9329:89:90;;;23425:51:119;23492:18;;;23485:34;;;23398:18;;9329:89:90;23251:274:119;9210:227:90;9063:1025;;;9520:25;9548:287;9586:235;;;;;;;;9647:155;9713:22;;9767:12;9647:32;:155::i;:::-;9586:235;;9548:20;:287::i;:::-;9520:315;;9854:88;9894:8;:17;;;9913;9932:9;;9854:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9854:39:90;;-1:-1:-1;;;9854:88:90:i;:::-;9849:229;;10016:17;;;;9969:94;;-1:-1:-1;;;9969:94:90;;-1:-1:-1;;;;;23443:32:119;;;9969:94:90;;;23425:51:119;23492:18;;;23485:34;;;23398:18;;9969:94:90;23251:274:119;9849:229:90;9467:621;9063:1025;10165:8;-1:-1:-1;;;;;10144:29:90;:8;:17;;;-1:-1:-1;;;;;10144:29:90;;10140:104;;10196:37;;-1:-1:-1;;;10196:37:90;;-1:-1:-1;;;;;9031:32:119;;10196:37:90;;;9013:51:119;8986:18;;10196:37:90;8851:219:119;10140:104:90;10296:17;10317:1;10296:22;10292:500;;10338:26;;;;:31;10334:152;;10442:8;:26;;;10396:75;;-1:-1:-1;;;10396:75:90;;;;;;8815:25:119;;8803:2;8788:18;;8669:177;10334:152:90;10292:500;;;10541:8;:26;;;10520:17;:47;10516:266;;10591:26;;;;:31;;;:52;;;10627:8;:16;;;10626:17;10591:52;10587:181;;;10720:8;:26;;;10674:75;;-1:-1:-1;;;10674:75:90;;;;;;8815:25:119;;8803:2;8788:18;;8669:177;10587:181:90;10866:8;:19;;;10847:38;;:15;:38;10843:146;;10956:19;;;;10908:70;;-1:-1:-1;;;10908:70:90;;10927:15;10908:70;;;24161:25:119;24234:12;24222:25;;;24202:18;;;24195:53;24134:18;;10908:70:90;23988:266:119;10843:146:90;11045:12;-1:-1:-1;;;;;11045:26:90;;11072:8;:17;;;11091:8;:19;;;11112:8;:14;;;11045:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11040:296;;11205:8;:17;;;11252:8;:19;;;11296:8;:14;;;11150:175;;-1:-1:-1;;;11150:175:90;;;;;;;;;;:::i;11040:296::-;11409:24;;;;-1:-1:-1;;;;;11409:38:90;;;;;:78;;;11463:8;:24;;;-1:-1:-1;;;;;11451:36:90;:8;-1:-1:-1;;;;;11451:36:90;;;11409:78;11405:198;;;11565:24;;;;11510:82;;-1:-1:-1;;;11510:82:90;;-1:-1:-1;;;;;23172:15:119;;;11510:82:90;;;23154:34:119;23224:15;;;23204:18;;;23197:43;23089:18;;11510:82:90;22942:304:119;11405:198:90;11617:8;:29;;;11650:1;11617:34;11613:723;;11752:12;-1:-1:-1;;;;;11752:24:90;;11777:8;:17;;;11796:8;:19;;;11817:8;:14;;;11752:80;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:723;;;11905:29;;;;11880:21;;;;11853:24;;;;:10;:24;;;;;;:48;;11880:21;11853:48;:::i;:::-;:81;11849:487;;12046:21;;;;12018:24;;;;:10;:24;;;;;:49;;:24;;;:49;;12046:21;;12018:49;:::i;:::-;;;;-1:-1:-1;11849:487:90;;-1:-1:-1;11849:487:90;;12235:21;;;;12208:24;;;;:10;:24;;;;;;:48;;12235:21;12208:48;:::i;:::-;12281:29;;;;12155:170;;-1:-1:-1;;;12155:170:90;;;;;15476:25:119;;;;15517:18;;;15510:34;15449:18;;12155:170:90;15302:248:119;11849:487:90;12406:8;:40;;;12402:1266;;;12574:26;;12539:62;;-1:-1:-1;;;12539:62:90;;-1:-1:-1;;;;;9031:32:119;;;12539:62:90;;;9013:51:119;12462:26:90;;;;12539:6;:34;;;;;;8986:18:119;;12539:62:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12502:99;-1:-1:-1;;;;;;12619:31:90;;;12615:717;;12802:26;;12839:21;;;;12740:139;;-1:-1:-1;;;12740:139:90;;-1:-1:-1;;;;;12740:32:90;;;;;:139;;;;-1:-1:-1;;;;;23443:32:119;;;;23425:51;;23507:2;23492:18;;23485:34;23413:2;23398:18;;23251:274;12740:139:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12719:160;;12615:717;;;12936:26;;12904:87;;-1:-1:-1;;;12904:31:90;:87::i;:::-;12900:432;;;13085:26;;13133:21;;;;13076:79;;-1:-1:-1;;;13076:79:90;;-1:-1:-1;;;;;13076:56:90;;;;;;:79;;;;8815:25:119;;;8803:2;8788:18;;8669:177;12900:432:90;13284:33;;-1:-1:-1;;;13284:33:90;;;;;;;;;;;12900:432;13389:18;13350:8;:35;;;:57;13346:312;;13589:35;;;;13474:169;;-1:-1:-1;;;13474:169:90;;;;13539:18;;13474:169;;15476:25:119;;;15532:2;15517:18;;15510:34;15464:2;15449:18;;15302:248;13346:312:90;12448:1220;;12402:1266;8351:5323;;;;;;;;:::o;2528:160:0:-;2604:12;;:::i;:::-;-1:-1:-1;2635:46:0;;;;;;;;-1:-1:-1;2635:46:0;;;-1:-1:-1;;;;;2635:46:0;;;;;;;;;;;;;;;;;;;;2528:160::o;7709:238:90:-;7795:10;-1:-1:-1;;;;;7795:22:90;;;7791:105;;7840:45;;-1:-1:-1;;;7840:45:90;;-1:-1:-1;;;;;9031:32:119;;7840:45:90;;;9013:51:119;8986:18;;7840:45:90;8851:219:119;7791:105:90;-1:-1:-1;7906:13:90;:27;;;;;;;;;;:34;;-1:-1:-1;;7906:34:90;7936:4;7906:34;;;7709:238::o;1667:4213:64:-;1749:14;;;-1:-1:-1;;2286:1:64;2283;2276:20;2329:1;2326;2322:9;2313:18;;2384:5;2380:2;2377:13;2369:5;2365:2;2361:14;2357:34;2348:43;;;2486:5;2495:1;2486:10;2482:368;;2824:11;2816:5;:19;;;;;:::i;:::-;;2809:26;;;;;;2482:368;2974:5;2960:11;:19;2952:53;;;;-1:-1:-1;;;2952:53:64;;25867:2:119;2952:53:64;;;25849:21:119;25906:2;25886:18;;;25879:30;-1:-1:-1;;;25925:18:119;;;25918:51;25986:18;;2952:53:64;25665:345:119;2952:53:64;3261:17;3396:11;3393:1;3390;3383:25;4774:1;4755;3944;3929:12;;:16;;3914:32;;4049:22;;;;4755:15;;;4754:21;;5007;;;5003:25;;4992:36;5076:21;;;5072:25;;5061:36;5146:21;;;5142:25;;5131:36;5216:21;;;5212:25;;5201:36;5286:21;;;5282:25;;5271:36;5357:21;;;5353:25;;;5342:36;3899:12;4294;;;4290:23;;;4286:31;;;3510:20;;;3499:32;;;4406:12;;;;3557:21;;4147:16;;;;4397:21;;;;5821:15;;1667:4213;-1:-1:-1;;;;1667:4213:64:o;1541:1696:85:-;1677:4;-1:-1:-1;;;;;1759:18:85;;;:22;1755:1476;;1798:12;1812:19;1835:6;-1:-1:-1;;;;;1835:17:85;1893:34;;;1929:4;1935:9;1870:75;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1870:75:85;;;;;;;;;;;;;;-1:-1:-1;;;;;1870:75:85;-1:-1:-1;;;;;;1870:75:85;;;;;;;;;;1835:124;;;;1870:75;1835:124;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1797:162;;;;1996:7;:46;;;;;2023:6;:13;2040:2;2023:19;1996:46;:142;;;;-1:-1:-1;2062:29:85;;-1:-1:-1;;;2103:34:85;2062:29;;;;;;;;;;;;:::i;:::-;:76;1996:142;1973:165;;;;;;1755:1476;2226:9;2249;2272:7;2348:9;:16;2368:2;2348:22;2344:817;;-1:-1:-1;;;2447:4:85;2432:20;;2426:27;2500:4;2485:20;;2479:27;2561:4;2546:20;;2540:27;2537:1;2532:36;2344:817;;;2686:9;:16;2706:2;2686:22;2682:479;;2814:4;2799:20;;2793:27;2868:4;2853:20;;2847:27;2793;;-1:-1:-1;;;;;;2914:80:85;;;-1:-1:-1;3022:25:85;3038:3;3023:18;;;3045:2;3022:25;:::i;:::-;3012:36;;2710:353;2682:479;;;3127:9;:16;3094:52;;-1:-1:-1;;;3094:52:85;;;;;;8815:25:119;;8803:2;8788:18;;8669:177;2682:479:85;3192:28;3206:4;3212:1;3215;3218;3192:13;:28::i;:::-;-1:-1:-1;;;;;3182:38:85;:6;-1:-1:-1;;;;;3182:38:85;;3175:45;;;;;;;2331:300:60;2424:7;2466:4;2424:7;2480:116;2500:16;;;2480:116;;;2552:33;2562:12;2576:5;;2582:1;2576:8;;;;;;;:::i;:::-;;;;;;;2552:9;:33::i;:::-;2537:48;-1:-1:-1;2518:3:60;;;;:::i;:::-;;;;2480:116;;;-1:-1:-1;2612:12:60;2331:300;-1:-1:-1;;;;2331:300:60:o;1349:282:62:-;1436:4;1543:23;1558:7;1543:14;:23::i;:::-;:81;;;;;1570:54;1603:7;1612:11;1570:32;:54::i;6598:232:59:-;6683:7;6703:17;6722:18;6744:25;6755:4;6761:1;6764;6767;6744:10;:25::i;:::-;6702:67;;;;6779:18;6791:5;6779:11;:18::i;:::-;-1:-1:-1;6814:9:59;6598:232;-1:-1:-1;;;;;6598:232:59:o;9205:147:60:-;9268:7;9298:1;9294;:5;:51;;9426:13;9517:15;;;9552:4;9545:15;;;9598:4;9582:21;;9294:51;;;9426:13;9517:15;;;9552:4;9545:15;;;9598:4;9582:21;;9302:20;9358:261;704:427:62;768:4;975:68;1008:7;-1:-1:-1;;;975:32:62;:68::i;:::-;:149;;;;-1:-1:-1;1060:64:62;1093:7;-1:-1:-1;;;;;;1060:32:62;:64::i;:::-;1059:65;956:168;704:427;-1:-1:-1;;704:427:62:o;4421:647::-;4592:71;;;-1:-1:-1;;;;;;27034:33:119;;4592:71:62;;;;27016:52:119;;;;4592:71:62;;;;;;;;;;26989:18:119;;;;4592:71:62;;;;;;;;;-1:-1:-1;;;;;4592:71:62;-1:-1:-1;;;4592:71:62;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;4421:647;-1:-1:-1;;;;;;;4421:647:62:o;5009:1456:59:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:59;;-1:-1:-1;6123:30:59;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;27306:25:119;;;27379:4;27367:17;;27347:18;;;27340:45;;;;27401:18;;;27394:34;;;27444:18;;;27437:34;;;6276:24:59;;27278:19:119;;6276:24:59;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:59;;-1:-1:-1;;6276:24:59;;;-1:-1:-1;;;;;;;6314:20:59;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:59;;-1:-1:-1;5009:1456:59;;;;;;;;:::o;570:511::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:59;;27684:2:119;788:34:59;;;27666:21:119;27723:2;27703:18;;;27696:30;27762:26;27742:18;;;27735:54;27806:18;;788:34:59;27482:348:119;730:345:59;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:59;;28037:2:119;903:41:59;;;28019:21:119;28076:2;28056:18;;;28049:30;28115:33;28095:18;;;28088:61;28166:18;;903:41:59;27835:355:119;839:236:59;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:59;;28397:2:119;1020:44:59;;;28379:21:119;28436:2;28416:18;;;28409:30;28475:34;28455:18;;;28448:62;-1:-1:-1;;;28526:18:119;;;28519:32;28568:19;;1020:44:59;28195:398:119;961:114:59;570:511;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:119:-;-1:-1:-1;;;;;89:31:119;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:347::-;340:8;350:6;404:3;397:4;389:6;385:17;381:27;371:55;;422:1;419;412:12;371:55;-1:-1:-1;445:20:119;;488:18;477:30;;474:50;;;520:1;517;510:12;474:50;557:4;549:6;545:17;533:29;;609:3;602:4;593:6;585;581:19;577:30;574:39;571:59;;;626:1;623;616:12;571:59;289:347;;;;;:::o;641:1394::-;785:6;793;801;809;817;825;833;841;894:3;882:9;873:7;869:23;865:33;862:53;;;911:1;908;901:12;862:53;950:9;937:23;969:31;994:5;969:31;:::i;:::-;1019:5;-1:-1:-1;1071:2:119;1056:18;;1043:32;;-1:-1:-1;1126:2:119;1111:18;;1098:32;1149:18;1179:14;;;1176:34;;;1206:1;1203;1196:12;1176:34;1245:58;1295:7;1286:6;1275:9;1271:22;1245:58;:::i;:::-;1322:8;;-1:-1:-1;1219:84:119;-1:-1:-1;1410:2:119;1395:18;;1382:32;;-1:-1:-1;1426:16:119;;;1423:36;;;1455:1;1452;1445:12;1423:36;1493:8;1482:9;1478:24;1468:34;;1540:7;1533:4;1529:2;1525:13;1521:27;1511:55;;1562:1;1559;1552:12;1511:55;1602:2;1589:16;1628:2;1620:6;1617:14;1614:34;;;1644:1;1641;1634:12;1614:34;1697:7;1692:2;1682:6;1679:1;1675:14;1671:2;1667:23;1663:32;1660:45;1657:65;;;1718:1;1715;1708:12;1657:65;1749:2;1745;1741:11;1731:21;;1771:6;1761:16;;;1830:3;1819:9;1815:19;1802:33;1786:49;;1860:2;1850:8;1847:16;1844:36;;;1876:1;1873;1866:12;1844:36;;1915:60;1967:7;1956:8;1945:9;1941:24;1915:60;:::i;:::-;641:1394;;;;-1:-1:-1;641:1394:119;;-1:-1:-1;641:1394:119;;;;;;1994:8;-1:-1:-1;;;641:1394:119:o;2248:127::-;2309:10;2304:3;2300:20;2297:1;2290:31;2340:4;2337:1;2330:15;2364:4;2361:1;2354:15;2380:236;2460:1;2453:5;2450:12;2440:143;;2505:10;2500:3;2496:20;2493:1;2486:31;2540:4;2537:1;2530:15;2568:4;2565:1;2558:15;2440:143;2592:18;;2380:236::o;2621:302::-;2680:43;2719:3;2711:5;2705:12;2680:43;:::i;:::-;2776:4;2765:16;;;2759:23;-1:-1:-1;;;;;2755:49:119;2739:14;;;2732:73;2854:4;2843:16;;;2837:23;2821:14;;;2814:47;2910:4;2899:16;;;2893:23;2877:14;;2870:47;2621:302::o;3029:1111::-;3252:25;;;3305:13;;-1:-1:-1;;;;;2106:31:119;3335:2;3320:18;;2094:44;3239:3;3224:19;;3386:2;3374:15;;3368:22;-1:-1:-1;;;;;2106:31:119;;3447:2;3432:18;;2094:44;-1:-1:-1;3500:2:119;3488:15;;3482:22;2225:10;2214:22;;3562:2;3547:18;;2202:35;3513:53;3615:2;3607:6;3603:15;3597:22;3628:60;3683:3;3672:9;3668:19;3652:14;3628:60;:::i;:::-;;3737:3;3729:6;3725:16;3719:23;3761:3;3773:59;3828:2;3817:9;3813:18;3797:14;3773:59;:::i;:::-;3887:4;3875:17;;3869:24;3863:3;3848:19;;3841:53;3943:4;3931:17;;3925:24;3004:12;2993:24;4007:3;3992:19;;2981:37;4067:4;4055:17;;4049:24;4043:3;4028:19;;4021:53;4117:15;;;4111:22;4105:3;4090:19;;;4083:51;;;;3029:1111;;-1:-1:-1;;3029:1111:119:o;4145:180::-;4204:6;4257:2;4245:9;4236:7;4232:23;4228:32;4225:52;;;4273:1;4270;4263:12;4225:52;-1:-1:-1;4296:23:119;;4145:180;-1:-1:-1;4145:180:119:o;4618:127::-;4679:10;4674:3;4670:20;4667:1;4660:31;4710:4;4707:1;4700:15;4734:4;4731:1;4724:15;4750:253;4822:2;4816:9;4864:4;4852:17;;4899:18;4884:34;;4920:22;;;4881:62;4878:88;;;4946:18;;:::i;:::-;4982:2;4975:22;4750:253;:::o;5008:250::-;5075:2;5069:9;5117:6;5105:19;;5154:18;5139:34;;5175:22;;;5136:62;5133:88;;;5201:18;;:::i;5263:921::-;5331:6;5384:2;5372:9;5363:7;5359:23;5355:32;5352:52;;;5400:1;5397;5390:12;5352:52;5440:9;5427:23;5469:18;5510:2;5502:6;5499:14;5496:34;;;5526:1;5523;5516:12;5496:34;5564:6;5553:9;5549:22;5539:32;;5609:7;5602:4;5598:2;5594:13;5590:27;5580:55;;5631:1;5628;5621:12;5580:55;5667:2;5654:16;5689:2;5685;5682:10;5679:36;;;5695:18;;:::i;:::-;5770:2;5764:9;5738:2;5824:13;;-1:-1:-1;;5820:22:119;;;5844:2;5816:31;5812:40;5800:53;;;5868:18;;;5888:22;;;5865:46;5862:72;;;5914:18;;:::i;:::-;5954:10;5950:2;5943:22;5989:2;5981:6;5974:18;6029:7;6024:2;6019;6015;6011:11;6007:20;6004:33;6001:53;;;6050:1;6047;6040:12;6001:53;6106:2;6101;6097;6093:11;6088:2;6080:6;6076:15;6063:46;6151:1;6129:15;;;6146:2;6125:24;6118:35;;;;-1:-1:-1;6133:6:119;5263:921;-1:-1:-1;;;;;5263:921:119:o;6189:2073::-;6251:43;6290:3;6282:5;6276:12;6251:43;:::i;:::-;6340:4;6333:5;6329:16;6323:23;6355:48;6397:4;6392:3;6388:14;6374:12;-1:-1:-1;;;;;2106:31:119;2094:44;;2040:104;6355:48;;6452:4;6445:5;6441:16;6435:23;6428:4;6423:3;6419:14;6412:47;6508:4;6501:5;6497:16;6491:23;6484:4;6479:3;6475:14;6468:47;6563:4;6556:5;6552:16;6546:23;6578:47;6619:4;6614:3;6610:14;6594;4400:13;4393:21;4381:34;;4330:91;6578:47;;6674:4;6667:5;6663:16;6657:23;6650:4;6645:3;6641:14;6634:47;6729:4;6722:5;6718:16;6712:23;6744:50;6788:4;6783:3;6779:14;6763;-1:-1:-1;;;;;2106:31:119;2094:44;;2040:104;6744:50;-1:-1:-1;6843:4:119;6832:16;;;6826:23;6810:14;;;6803:47;6869:6;6911:14;;;6905:21;6891:12;;;6884:43;6946:6;6988:14;;;6982:21;6968:12;;;6961:43;7023:6;7066:14;;;7060:21;3004:12;2993:24;;;7124:12;;;2981:37;;;;7156:6;7199:14;;;7193:21;2225:10;2214:22;7257:12;;;2202:35;7289:6;7332:14;;;7326:21;2993:24;;;7390:12;;;2981:37;7422:6;7465:14;;;7459:21;-1:-1:-1;;;;;2106:31:119;;;7524:12;;;2094:44;;;;7556:6;7599:14;;;7593:21;2106:31;;7658:12;;;2094:44;7690:6;7732:14;;;7726:21;7712:12;;;7705:43;7767:6;7810:14;;;7804:21;4400:13;4393:21;7866:12;;;4381:34;7899:6;7942:15;;;7936:22;7921:13;;;7914:45;7979:6;8022:15;;;8016:22;8001:13;;;7994:45;8059:6;8102:15;;;8096:22;8081:13;;;8074:45;8139:6;8182:15;;;8176:22;2106:31;8242:13;;2094:44;6189:2073::o;8267:397::-;8549:3;8534:19;;8562:45;8538:9;8589:6;8562:45;:::i;:::-;8650:6;8644:13;8638:3;8627:9;8623:19;8616:42;8267:397;;;;;:::o;9075:196::-;9163:6;9216:3;9204:9;9195:7;9191:23;9187:33;9184:53;;;9233:1;9230;9223:12;9184:53;-1:-1:-1;9256:9:119;9075:196;-1:-1:-1;9075:196:119:o;9276:107::-;9357:1;9350:5;9347:12;9337:40;;9373:1;9370;9363:12;9388:146;9462:20;;9491:37;9462:20;9491:37;:::i;9539:118::-;9625:5;9618:13;9611:21;9604:5;9601:32;9591:60;;9647:1;9644;9637:12;9662:128;9727:20;;9756:28;9727:20;9756:28;:::i;9795:123::-;9880:12;9873:5;9869:24;9862:5;9859:35;9849:63;;9908:1;9905;9898:12;9923:132;9990:20;;10019:30;9990:20;10019:30;:::i;10060:121::-;10145:10;10138:5;10134:22;10127:5;10124:33;10114:61;;10171:1;10168;10161:12;10186:132;10253:20;;10282:30;10253:20;10282:30;:::i;10323:224::-;10384:5;10432:4;10420:9;10415:3;10411:19;10407:30;10404:50;;;10450:1;10447;10440:12;10404:50;10472:22;;:::i;:::-;10517:23;;10503:38;;-1:-1:-1;10463:31:119;10323:224;-1:-1:-1;10323:224:119:o;10552:2167::-;10680:6;10688;10732:9;10723:7;10719:23;10762:3;10758:2;10754:12;10751:32;;;10779:1;10776;10769:12;10751:32;10802:6;10828:2;10824;10820:11;10817:31;;;10844:1;10841;10834:12;10817:31;10870:17;;:::i;:::-;10857:30;;10910:35;10935:9;10910:35;:::i;:::-;10903:5;10896:50;10978:38;11012:2;11001:9;10997:18;10978:38;:::i;:::-;10973:2;10966:5;10962:14;10955:62;11077:2;11066:9;11062:18;11049:32;11044:2;11037:5;11033:14;11026:56;11142:2;11131:9;11127:18;11114:32;11109:2;11102:5;11098:14;11091:56;11180:36;11211:3;11200:9;11196:19;11180:36;:::i;:::-;11174:3;11167:5;11163:15;11156:61;11278:3;11267:9;11263:19;11250:33;11244:3;11237:5;11233:15;11226:58;11317:39;11351:3;11340:9;11336:19;11317:39;:::i;:::-;11311:3;11300:15;;11293:64;11418:3;11403:19;;;11390:33;11373:15;;;11366:58;11443:3;11491:18;;;11478:32;11462:14;;;11455:56;11530:3;11578:18;;;11565:32;11549:14;;;11542:56;11617:3;11652:37;11670:18;;;11652:37;:::i;:::-;11636:14;;;11629:61;11709:3;11744:37;11762:18;;;11744:37;:::i;:::-;11728:14;;;11721:61;11801:3;11836:37;11854:18;;;11836:37;:::i;:::-;11820:14;;;11813:61;11893:3;11928:38;11947:18;;;11928:38;:::i;:::-;11912:14;;;11905:62;11986:3;12021:38;12040:18;;;12021:38;:::i;:::-;12005:14;;;11998:62;12080:3;12129:19;;;12116:33;12099:15;;;12092:58;12170:3;12206:36;12222:19;;;12206:36;:::i;:::-;12189:15;;;12182:61;12263:3;12312:19;;;12299:33;12282:15;;;12275:58;12353:3;12402:19;;;12389:33;12372:15;;;12365:58;12443:3;12492:19;;;12479:33;12462:15;;;12455:58;12533:3;12569:39;12588:19;;;12569:39;:::i;:::-;12563:3;12556:5;12552:15;12545:64;;12628:5;12618:15;;12652:61;12705:7;12700:2;12689:9;12685:18;12652:61;:::i;:::-;12642:71;;;;10552:2167;;;;;:::o;12724:250::-;12809:1;12819:113;12833:6;12830:1;12827:13;12819:113;;;12909:11;;;12903:18;12890:11;;;12883:39;12855:2;12848:10;12819:113;;;-1:-1:-1;;12966:1:119;12948:16;;12941:27;12724:250::o;12979:270::-;13020:3;13058:5;13052:12;13085:6;13080:3;13073:19;13101:76;13170:6;13163:4;13158:3;13154:14;13147:4;13140:5;13136:16;13101:76;:::i;:::-;13231:2;13210:15;-1:-1:-1;;13206:29:119;13197:39;;;;13238:4;13193:50;;12979:270;-1:-1:-1;;12979:270:119:o;13254:217::-;13401:2;13390:9;13383:21;13364:4;13421:44;13461:2;13450:9;13446:18;13438:6;13421:44;:::i;13476:248::-;13544:6;13552;13605:2;13593:9;13584:7;13580:23;13576:32;13573:52;;;13621:1;13618;13611:12;13573:52;-1:-1:-1;;13644:23:119;;;13714:2;13699:18;;;13686:32;;-1:-1:-1;13476:248:119:o;14138:445::-;14229:6;14282:2;14270:9;14261:7;14257:23;14253:32;14250:52;;;14298:1;14295;14288:12;14250:52;14331:2;14325:9;14373:2;14365:6;14361:15;14442:6;14430:10;14427:22;14406:18;14394:10;14391:34;14388:62;14385:88;;;14453:18;;:::i;:::-;14489:2;14482:22;14528:23;;14513:39;;-1:-1:-1;14520:6:119;14138:445;-1:-1:-1;14138:445:119:o;15045:252::-;15233:3;15218:19;;15246:45;15222:9;15273:6;15246:45;:::i;15555:150::-;15640:13;;15662:37;15640:13;15662:37;:::i;15710:138::-;15789:13;;15811:31;15789:13;15811:31;:::i;15853:132::-;15929:13;;15951:28;15929:13;15951:28;:::i;15990:136::-;16068:13;;16090:30;16068:13;16090:30;:::i;16131:136::-;16209:13;;16231:30;16209:13;16231:30;:::i;16272:228::-;16344:5;16392:4;16380:9;16375:3;16371:19;16367:30;16364:50;;;16410:1;16407;16400:12;16364:50;16432:22;;:::i;:::-;16477:16;;16463:31;;-1:-1:-1;16423:31:119;16272:228;-1:-1:-1;16272:228:119:o;16505:2240::-;16644:6;16652;16696:9;16687:7;16683:23;16726:3;16722:2;16718:12;16715:32;;;16743:1;16740;16733:12;16715:32;16766:6;16792:2;16788;16784:11;16781:31;;;16808:1;16805;16798:12;16781:31;16834:17;;:::i;:::-;16821:30;;16874:46;16910:9;16874:46;:::i;:::-;16867:5;16860:61;16953:49;16998:2;16987:9;16983:18;16953:49;:::i;:::-;16948:2;16941:5;16937:14;16930:73;17056:2;17045:9;17041:18;17035:25;17030:2;17023:5;17019:14;17012:49;17114:2;17103:9;17099:18;17093:25;17088:2;17081:5;17077:14;17070:49;17152:47;17194:3;17183:9;17179:19;17152:47;:::i;:::-;17146:3;17139:5;17135:15;17128:72;17254:3;17243:9;17239:19;17233:26;17227:3;17220:5;17216:15;17209:51;17293:50;17338:3;17327:9;17323:19;17293:50;:::i;:::-;17287:3;17276:15;;17269:75;17398:3;17383:19;;;17377:26;17360:15;;;17353:51;17423:3;17464:18;;;17458:25;17442:14;;;17435:49;17503:3;17544:18;;;17538:25;17522:14;;;17515:49;17583:3;17618:48;17647:18;;;17618:48;:::i;:::-;17602:14;;;17595:72;17686:3;17721:48;17750:18;;;17721:48;:::i;:::-;17705:14;;;17698:72;17789:3;17824:48;17853:18;;;17824:48;:::i;:::-;17808:14;;;17801:72;17892:3;17927:49;17957:18;;;17927:49;:::i;:::-;17911:14;;;17904:73;17996:3;18031:49;18061:18;;;18031:49;:::i;:::-;18015:14;;;18008:73;18101:3;18143:19;;;18137:26;18120:15;;;18113:51;18184:3;18220:47;18247:19;;;18220:47;:::i;:::-;18203:15;;;18196:72;18288:3;18330:19;;;18324:26;18307:15;;;18300:51;18371:3;18413:19;;;18407:26;18390:15;;;18383:51;18454:3;18496:19;;;18490:26;18473:15;;;18466:51;18537:3;18573:50;18603:19;;;18573:50;:::i;:::-;18567:3;18560:5;18556:15;18549:75;;18643:5;18633:15;;18667:72;18731:7;18726:2;18715:9;18711:18;18667:72;:::i;18750:2571::-;18940:3;18925:19;;18953:69;18929:9;18978:32;19003:6;18978:32;:::i;:::-;18953:69;:::i;:::-;19051:37;19082:4;19074:6;19070:17;19051:37;:::i;:::-;-1:-1:-1;;;;;2106:31:119;;19145:4;19130:20;;2094:44;19097:54;19214:4;19206:6;19202:17;19189:31;19182:4;19171:9;19167:20;19160:61;19284:4;19276:6;19272:17;19259:31;19252:4;19241:9;19237:20;19230:61;19322:34;19350:4;19342:6;19338:17;19322:34;:::i;:::-;4400:13;4393:21;19412:4;19397:20;;4381:34;19481:4;19469:17;;;19456:31;19434:20;;;19427:61;19519:37;19550:4;19538:17;;19519:37;:::i;:::-;-1:-1:-1;;;;;2106:31:119;19615:4;19600:20;;2094:44;19684:4;19672:17;;;19659:31;19637:20;;;19630:61;19710:6;19765:15;;;19752:29;19732:18;;;19725:57;19801:6;19856:15;;;19843:29;19823:18;;;19816:57;19892:6;19929:34;19947:15;;;19929:34;:::i;:::-;3004:12;2993:24;20006:18;;;2981:37;20044:6;20081:34;20099:15;;;20081:34;:::i;:::-;2225:10;2214:22;20158:18;;;2202:35;20196:6;20233:34;20251:15;;;20233:34;:::i;:::-;3004:12;2993:24;20310:18;;;2981:37;20348:6;20385:35;20404:15;;;20385:35;:::i;:::-;-1:-1:-1;;;;;2106:31:119;20464:18;;;2094:44;20502:6;20539:35;20558:15;;;20539:35;:::i;:::-;-1:-1:-1;;;;;2106:31:119;20618:18;;;2094:44;20656:6;20711:15;;;20698:29;20678:18;;;20671:57;20747:6;20784:32;20800:15;;;20784:32;:::i;:::-;4400:13;4393:21;20857:18;;;4381:34;20896:6;20952:16;;;20939:30;20918:19;;;20911:59;20990:6;21046:16;;;21033:30;21012:19;;;21005:59;21084:6;21140:16;;;21127:30;21106:19;;;21099:59;21178:6;21215:36;21234:16;;;21215:36;:::i;:::-;-1:-1:-1;;;;;2106:31:119;21295:19;;2094:44;;;;18750:2571;;-1:-1:-1;18750:2571:119:o;21326:345::-;-1:-1:-1;;;;;21546:32:119;;;;21528:51;;21610:2;21595:18;;21588:34;;;;21653:2;21638:18;;21631:34;21516:2;21501:18;;21326:345::o;21929:359::-;22116:6;22111:3;22104:19;22086:3;22152:6;22146:13;22168:73;22234:6;22229:2;22224:3;22220:12;22215:2;22207:6;22203:15;22168:73;:::i;:::-;22261:16;;;;22279:2;22257:25;;21929:359;-1:-1:-1;;;21929:359:119:o;22690:247::-;22749:6;22802:2;22790:9;22781:7;22777:23;22773:32;22770:52;;;22818:1;22815;22808:12;22770:52;22857:9;22844:23;22876:31;22901:5;22876:31;:::i;23530:245::-;23597:6;23650:2;23638:9;23629:7;23625:23;23621:32;23618:52;;;23666:1;23663;23656:12;23618:52;23698:9;23692:16;23717:28;23739:5;23717:28;:::i;24259:127::-;24320:10;24315:3;24311:20;24308:1;24301:31;24351:4;24348:1;24341:15;24375:4;24372:1;24365:15;24391:125;24456:9;;;24477:10;;;24474:36;;;24490:18;;:::i;24521:286::-;24626:6;24679:2;24667:9;24658:7;24654:23;24650:32;24647:52;;;24695:1;24692;24685:12;24647:52;24727:9;24721:16;24746:31;24771:5;24746:31;:::i;25091:184::-;25161:6;25214:2;25202:9;25193:7;25189:23;25185:32;25182:52;;;25230:1;25227;25220:12;25182:52;-1:-1:-1;25253:16:119;;25091:184;-1:-1:-1;25091:184:119:o;25533:127::-;25594:10;25589:3;25585:20;25582:1;25575:31;25625:4;25622:1;25615:15;25649:4;25646:1;25639:15;26015:288;26190:6;26179:9;26172:25;26233:2;26228;26217:9;26213:18;26206:30;26153:4;26253:44;26293:2;26282:9;26278:18;26270:6;26253:44;:::i;:::-;26245:52;26015:288;-1:-1:-1;;;;26015:288:119:o;26308:287::-;26437:3;26475:6;26469:13;26491:66;26550:6;26545:3;26538:4;26530:6;26526:17;26491:66;:::i;:::-;26573:16;;;;;26308:287;-1:-1:-1;;26308:287:119:o;26600:127::-;26661:10;26656:3;26652:20;26649:1;26642:31;26692:4;26689:1;26682:15;26716:4;26713:1;26706:15;26732:135;26771:3;26792:17;;;26789:43;;26812:18;;:::i;:::-;-1:-1:-1;26859:1:119;26848:13;;26732:135::o",
    "linkReferences": {},
    "immutableReferences": {
      "64601": [
        {
          "start": 425,
          "length": 32
        },
        {
          "start": 2572,
          "length": 32
        }
      ],
      "64603": [
        {
          "start": 810,
          "length": 32
        },
        {
          "start": 2200,
          "length": 32
        }
      ],
      "64606": [
        {
          "start": 478,
          "length": 32
        },
        {
          "start": 2867,
          "length": 32
        }
      ],
      "64609": [
        {
          "start": 752,
          "length": 32
        },
        {
          "start": 2085,
          "length": 32
        },
        {
          "start": 3646,
          "length": 32
        },
        {
          "start": 3973,
          "length": 32
        }
      ],
      "64612": [
        {
          "start": 613,
          "length": 32
        },
        {
          "start": 4324,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR()": "808560ee",
    "DOMAIN_SEPARATOR()": "3644e515",
    "MULTIPROPOSAL_DOMAIN_SEPARATOR()": "abe93878",
    "MULTIPROPOSAL_TYPEHASH()": "d06a0d82",
    "PROPOSAL_TYPEHASH()": "853b94a0",
    "VERSION()": "ffa1ad74",
    "acceptProposal(address,uint256,bytes,bytes32[],bytes)": "01e83272",
    "config()": "79502c55",
    "creditUsed(bytes32)": "f0209ad6",
    "decodeProposalData(bytes)": "2d5d17fc",
    "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address),(uint256))": "49d2151c",
    "getCreditAmount(uint256,uint256)": "993fba5c",
    "getMultiproposalHash((bytes32))": "829d3770",
    "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": "382c0cdd",
    "hub()": "365a86fc",
    "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": "83f19a0b",
    "proposalsMade(bytes32)": "1da4c275",
    "revokeNonce(uint256,uint256)": "579bfc30",
    "revokedNonce()": "9788ad55"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hub\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_revokedNonce\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_config\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AcceptorIsProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tag\",\"type\":\"bytes32\"}],\"name\":\"AddressMissingHubTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"used\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"AvailableCreditLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"CallerIsNotStatedProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"current\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"allowed\",\"type\":\"address\"}],\"name\":\"CallerNotAllowedAcceptor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"name\":\"CallerNotLoanContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"}],\"name\":\"Expired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"InsufficientCollateralAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"current\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"proposed\",\"type\":\"bytes32\"}],\"name\":\"InvalidCollateralStateFingerprint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"}],\"name\":\"InvalidRefinancingLoanId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinCollateralAmountNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingStateFingerprintComputer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"NonceNotUsable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCollateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PWNSimpleLoanFungibleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"ProposalMade\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPROPOSAL_DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPROPOSAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"acceptor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proposalData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"proposalInclusionProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"acceptProposal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"lender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"category\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"assetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct MultiToken.Asset\",\"name\":\"collateral\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"category\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"assetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct MultiToken.Asset\",\"name\":\"credit\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"bytes32\",\"name\":\"lenderSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"borrowerSpecHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct PWNSimpleLoan.Terms\",\"name\":\"loanTerms\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"config\",\"outputs\":[{\"internalType\":\"contract PWNConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"creditUsed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proposalData\",\"type\":\"bytes\"}],\"name\":\"decodeProposalData\",\"outputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCollateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.Proposal\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.ProposalValues\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCollateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.ProposalValues\",\"name\":\"proposalValues\",\"type\":\"tuple\"}],\"name\":\"encodeProposalData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"}],\"name\":\"getCreditAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"multiproposalMerkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct PWNSimpleLoanProposal.Multiproposal\",\"name\":\"multiproposal\",\"type\":\"tuple\"}],\"name\":\"getMultiproposalHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCollateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"getProposalHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hub\",\"outputs\":[{\"internalType\":\"contract PWNHub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCollateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditPerCollateralUnit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanFungibleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"makeProposal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposalsMade\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"revokeNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revokedNonce\",\"outputs\":[{\"internalType\":\"contract PWNRevokedNonce\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidSignature(address,bytes32)\":[{\"details\":\"Thrown when signature is invalid.\"}],\"InvalidSignatureLength(uint256)\":[{\"details\":\"Thrown when signature length is not 64 nor 65 bytes.\"}],\"NonceNotUsable(address,uint256,uint256)\":[{\"details\":\"Maybe nonce is revoked or not in the current nonce space.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptProposal(address,uint256,bytes,bytes32[],bytes)\":{\"details\":\"Function can be called only by a loan contract with appropriate PWN Hub tag.\",\"params\":{\"acceptor\":\"Address of a proposal acceptor.\",\"proposalData\":\"Encoded proposal data with signature.\",\"proposalInclusionProof\":\"Multiproposal inclusion proof. Empty if single proposal.\",\"refinancingLoanId\":\"Id of a loan to be refinanced. 0 if creating a new loan.\"},\"returns\":{\"loanTerms\":\"Loan terms.\",\"proposalHash\":\"Proposal hash.\"}},\"decodeProposalData(bytes)\":{\"params\":{\"proposalData\":\"Encoded proposal data.\"},\"returns\":{\"_0\":\"Decoded proposal struct.\",\"_1\":\"Decoded proposal values struct.\"}},\"encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address),(uint256))\":{\"params\":{\"proposal\":\"Proposal struct to be encoded.\",\"proposalValues\":\"ProposalValues struct to be encoded.\"},\"returns\":{\"_0\":\"Encoded proposal data.\"}},\"getCreditAmount(uint256,uint256)\":{\"params\":{\"collateralAmount\":\"Amount of collateral.\",\"creditPerCollateralUnit\":\"Amount of credit per collateral unit with 38 decimals.\"},\"returns\":{\"_0\":\"Amount of credit.\"}},\"getMultiproposalHash((bytes32))\":{\"params\":{\"multiproposal\":\"Multiproposal struct.\"},\"returns\":{\"_0\":\"Multiproposal hash.\"}},\"getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"params\":{\"proposal\":\"Proposal struct to be hashed.\"},\"returns\":{\"_0\":\"Proposal struct hash.\"}},\"makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"details\":\"Function will mark a proposal hash as proposed.\",\"params\":{\"proposal\":\"Proposal struct containing all needed proposal data.\"},\"returns\":{\"proposalHash\":\"Proposal hash.\"}},\"revokeNonce(uint256,uint256)\":{\"params\":{\"nonce\":\"Proposal nonce to be revoked.\",\"nonceSpace\":\"Nonce space of a proposal nonce to be revoked.\"}}},\"stateVariables\":{\"PROPOSAL_TYPEHASH\":{\"details\":\"EIP-712 simple proposal struct type hash.\"}},\"title\":\"PWN Simple Loan Fungible Proposal\",\"version\":1},\"userdoc\":{\"errors\":{\"AcceptorIsProposer(address)\":[{\"notice\":\"Thrown when proposal acceptor and proposer are the same.\"}],\"AddressMissingHubTag(address,bytes32)\":[{\"notice\":\"Thrown when an address is missing a PWN Hub tag.\"}],\"AvailableCreditLimitExceeded(uint256,uint256)\":[{\"notice\":\"Thrown when a proposal would exceed the available credit limit.\"}],\"CallerIsNotStatedProposer(address)\":[{\"notice\":\"Thrown when a caller is not a stated proposer.\"}],\"CallerNotAllowedAcceptor(address,address)\":[{\"notice\":\"Thrown when caller is not allowed to accept a proposal.\"}],\"CallerNotLoanContract(address,address)\":[{\"notice\":\"Thrown when a caller is missing a required hub tag.\"}],\"Expired(uint256,uint256)\":[{\"notice\":\"Thrown when a proposal is expired.\"}],\"InsufficientCollateralAmount(uint256,uint256)\":[{\"notice\":\"Thrown when acceptor provides insufficient collateral amount.\"}],\"InvalidCollateralStateFingerprint(bytes32,bytes32)\":[{\"notice\":\"Thrown when a proposed collateral state fingerprint doesn't match the current state.\"}],\"InvalidRefinancingLoanId(uint256)\":[{\"notice\":\"Thrown when provided refinance loan id cannot be used.\"}],\"MinCollateralAmountNotSet()\":[{\"notice\":\"Thrown when proposal has no minimal collateral amount set.\"}],\"MissingStateFingerprintComputer()\":[{\"notice\":\"Thrown when a state fingerprint computer is not registered.\"}],\"NonceNotUsable(address,uint256,uint256)\":[{\"notice\":\"Thrown when nonce is currently not usable.\"}]},\"events\":{\"ProposalMade(bytes32,address,(uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Emitted when a proposal is made via an on-chain transaction.\"}},\"kind\":\"user\",\"methods\":{\"CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR()\":{\"notice\":\"Credit per collateral unit denominator. It is used to calculate credit amount from collateral amount.\"},\"acceptProposal(address,uint256,bytes,bytes32[],bytes)\":{\"notice\":\"Accept a proposal and create new loan terms.\"},\"decodeProposalData(bytes)\":{\"notice\":\"Decode proposal data.\"},\"encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address),(uint256))\":{\"notice\":\"Encode proposal data.\"},\"getCreditAmount(uint256,uint256)\":{\"notice\":\"Compute credit amount from collateral amount and credit per collateral unit.\"},\"getMultiproposalHash((bytes32))\":{\"notice\":\"Get a multiproposal hash according to EIP-712.\"},\"getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Get an proposal hash according to EIP-712\"},\"makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Make an on-chain proposal.\"},\"revokeNonce(uint256,uint256)\":{\"notice\":\"Helper function for revoking a proposal nonce on behalf of a caller.\"}},\"notice\":\"Contract for creating and accepting fungible loan proposals.         Proposals are fungible, which means that they are not tied to a specific collateral or credit amount.         The amount of collateral and credit is specified during the proposal acceptance.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/loan/terms/simple/proposal/PWNSimpleLoanFungibleProposal.sol\":\"PWNSimpleLoanFungibleProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":MultiToken/=lib/MultiToken/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pwn/=src/\"]},\"sources\":{\"lib/MultiToken/src/MultiToken.sol\":{\"keccak256\":\"0xc82d7bddc1a925316875bfe3bf116cb8deacc2c6296fad57b1895db898bf871e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://587293f9235d52ab6f51c794ed68e8828eaa4f8b073fa191556fff37446be10c\",\"dweb:/ipfs/QmdFay286V8GfHZDE7TFDxh9irQsmNDwP4tQFbno49waxY\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd55624076bf61d44af5ff351919e32dda748567acfbdd6ba3d6c7be61c758e\",\"dweb:/ipfs/QmSki4dTrf4GPm7MTpG3fk8mC7rnjwd2zMomLp6jLuF63Q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0x10a6688bc4154b1b76268dbaf497bd8b24f77525ecb9cf829bd3cccec98eefc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68663f939b79e88a5bb677cf6c549e88eb4f587379c09f80d19cde14b0eb984b\",\"dweb:/ipfs/QmVfeL1uxQ5161d25DsNqptjaur7VQugjCSGitrRscTdmV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xaf297d12d8d4a57fe01a70f0ef38908f208e3faedc577056d0b728fa2f3ccf0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbfaf37123958822a2720a4ea29651be00edab787540b770f73d3e025d286ff8\",\"dweb:/ipfs/QmbzgWeTm8hJVUqWrNAwFjshqbYVyeGpQA8D1huzxQdmw6\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://919c7ea27c77275c3c341da0c4a26a66a20ed27605fbe8becf11f58ec3bc65bf\",\"dweb:/ipfs/QmRLKyVE2n7e2Jo4bLNn8eLgqqhNGYnVQyjJPWdr8poskf\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005\",\"dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/PWNErrors.sol\":{\"keccak256\":\"0x8a0e516fc8ddf54aecb82d5cbd19b6f263950a91d4411d1d4c54b90fae010692\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9cd08003376c48cdaf6279c4237a38efb1e26080bc29de3343bcfe397a4bb0f\",\"dweb:/ipfs/QmXtMtn71ZzRu1rGQLq8u5vnDy4k462d7mGtu1jFd7ZBJG\"]},\"src/config/PWNConfig.sol\":{\"keccak256\":\"0x15a2ab788f84df29b960d50b33803130bdd61fe7c0ce76d4f6bf76da7cccb594\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b1310535db741a5a7a0aff71f34ef329c7f5bf3117f9c38587e4090bec340fb4\",\"dweb:/ipfs/QmYRWwiSAyZMdxSqMYU1K2YRFzBW7L2dHXktx1BdFW9fP5\"]},\"src/hub/PWNHub.sol\":{\"keccak256\":\"0x92ad9edafc151bc7efc1b132c1be55966bb692860a94803a74ce5a948985126c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a04dbfe0ea39f7cd04b7947cac66ce77745ecc20a24aad3f8d35a6d319eec202\",\"dweb:/ipfs/QmbxoqEtL4YwMQDfCydurWLHeVjL1Yjc4Ty4vsRoCqXabv\"]},\"src/hub/PWNHubAccessControl.sol\":{\"keccak256\":\"0x310e0389c98971c4d6c25d8756c1e8a962c8b22c54e3ce6d80a383fb5b755448\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://63748084b8c8a9e2cce98a87d27a8baf353fae903641d6fdfc2cdc4ed229243f\",\"dweb:/ipfs/QmVywLNCBeWkNdWjpdumnAam1Shwj8k3DxxpRcWAK997Nw\"]},\"src/hub/PWNHubTags.sol\":{\"keccak256\":\"0xd1e685e8075f1f16835d38cfe39b1eee9edbf75089a0109002f7b2bfe14c177a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://4a01df6b1c2cf493017b7abb4b9ec6ac16c9b1c3498b16ccbdc4f2045909dde8\",\"dweb:/ipfs/QmcYEgSZrE33YKxDDBvhVgZTfT9Tj1RTEX3iA717zZyspJ\"]},\"src/interfaces/ICryptoKitties.sol\":{\"keccak256\":\"0x9aaa7f948d4f2121d764b5664fe1c8431b3c5bfce780228eceb56d1589681706\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05416e111c8ff6a1464248ac387e8c69015c355e949967586d514d9d17d619aa\",\"dweb:/ipfs/QmVK5Q6bS1CevgdxB17RJ9BGZsspCXdY5Y5dX4cpgQ4Rze\"]},\"src/interfaces/IERC5646.sol\":{\"keccak256\":\"0xff5ce494375d2cf5a67fe9460ea66aa3572b8a0434ae538cbac0a55f7aac5c5e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e8e2b472fa80a92ae12985da77056f68f0e0f36fca7ac37b6d30db82a2527180\",\"dweb:/ipfs/QmdFTGSCaPcVfthbGSUuiyhivqBx6xN9dCL14PCbR39Wki\"]},\"src/interfaces/IMultiTokenCategoryRegistry.sol\":{\"keccak256\":\"0x5607c7415785a07c7226638ab7d16ae9a87906e5eafb06e723944144b8f7c48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd5f1d39f2acb6cda18a1199e06be211deccce27478de077d942ced8ada6e0b1\",\"dweb:/ipfs/Qmdx2uXjyoyyqNQU5aQTpagujxSVAfS17Sc3ziJGAofXnX\"]},\"src/interfaces/IPWNLoanMetadataProvider.sol\":{\"keccak256\":\"0x6cc991fd9c8c88e0a69e835fcd514868836e2432b12454dfcb6a681a3a9d13b8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://69fd07433fd7eb2f1474d778476240434fa79a31525341d88a588573562389c6\",\"dweb:/ipfs/Qmb6gWNQD96oSgwH5Yf6eMHxYWXZwCPrd7MvK86r7UKhZK\"]},\"src/interfaces/IPoolAdapter.sol\":{\"keccak256\":\"0xe0309b4e7da2046095c7dc943d953f32d2a46b0ad64beaf3f4ed1b440fe43f89\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://15870bf95e096b35620787a0eba49f7becbaff738651a83bd28310d022cdc93b\",\"dweb:/ipfs/QmZPYmxrjB6SFWr5arTztrDofQ6XdyzXTUMeaQt5wcbv3T\"]},\"src/interfaces/IStateFingerpringComputer.sol\":{\"keccak256\":\"0xb2f72031bdd6b6ac7179ca9af90c290d37bcc43d6bab4db6e0b1ee7c7b4f72a2\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://d8de3c648f1afab5458e553042a59b0df3d8d54be1a488e891de70821745da0c\",\"dweb:/ipfs/QmQ6QoeMgZGdVjJ2aAt8t1AuBCJ95m6BRSR1GKRqVk4jct\"]},\"src/loan/lib/PWNFeeCalculator.sol\":{\"keccak256\":\"0xab8eb0be2d2e5a7c909a326de53459ae2ed6fd7cdd3985719515f279f952fcdf\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://4ca7a9d230ab90b46cdb1a16bd99af5639af7adcf2250a20b7e1f77c952344f5\",\"dweb:/ipfs/QmXzwraVHPmrVFtR4tkm5JqafygeDDvbQbkKu33EYUWLMq\"]},\"src/loan/lib/PWNSignatureChecker.sol\":{\"keccak256\":\"0xb76220c904f1b4c9e08166c4175746b161aaf70be14dc22b1a335f351970d1fd\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://846d1cc6b7f1ba8b0bc6b5836aad018828bc1ad8f6f994ec59d24f6617d91fc1\",\"dweb:/ipfs/QmWe7cAsDysa6Qjn9vBAiHW4iaPmZnaeVmqxnwRMikgSCM\"]},\"src/loan/terms/simple/loan/PWNSimpleLoan.sol\":{\"keccak256\":\"0x6dd44efd796277aeb5a7712591cfbee10ea3058c0f8f97f9c6111297714d3155\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a65b5a30ea71966c8deaa54f621985568fbcbe37bcb6174219410837c9722d9\",\"dweb:/ipfs/QmWzCC35n2a2GsqEkU27i1LKGjqhYTZ1wLfEBnUxsPRrfr\"]},\"src/loan/terms/simple/proposal/PWNSimpleLoanFungibleProposal.sol\":{\"keccak256\":\"0x6e155ab39d7f30d2b74caa44d12e6b0d1783e857353e6dd7d655fc36aa3900d0\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c28b8dfbc47615686930c607b2601d6dff19c8b937b34545d3a210e11e593cd2\",\"dweb:/ipfs/QmTxpeGFYLZXCYxu6nKj1xHoG5FTjxTXqHTg23hkKgiha9\"]},\"src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol\":{\"keccak256\":\"0xa0569c9949bfcd4995d813e1bfe3cb89dcf55293e2fb7728ade49d49be1c6d2d\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://d94dc60f4f6591cac65d95bea69a8b6364589977b085892f334e4224ce3b754d\",\"dweb:/ipfs/QmV3NaHYz3bNbXsKbrHEJxBuLHJyStB6917hJ1D7dtqhs5\"]},\"src/loan/token/PWNLOAN.sol\":{\"keccak256\":\"0x92981fb0bd0abcadc45b0f88bfc5fcc960ce7a5b79494fc6c9fd5990b197c764\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e10726f492991694d751b68bf87a352f1284710ba311614295381a58ebfd226e\",\"dweb:/ipfs/Qmct6PYHSqHo9K9rGAif9ohBpJuQnTBWdHJRdENpetGg7k\"]},\"src/loan/vault/PWNVault.sol\":{\"keccak256\":\"0x00f3a6cad5f19a0a818d351a5aa849e41a34bf0251a872d4993d40d77468f29e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://01942d7d871fe64f229820f5f90be23b647e438d951531a5f60a470f8093977e\",\"dweb:/ipfs/QmcyDXfCdgSQ8P454JxfuTzNBSxfpzeJ9aTPBefTH3dTvK\"]},\"src/loan/vault/Permit.sol\":{\"keccak256\":\"0xce0acf24731cfaa49535adea5c0c6ebade736d35f3f54a8150ef175a693e3cee\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://3542ad1e3295c63363fe825d3e46ad447fcd614f31f4dadeea39d24086e02c7a\",\"dweb:/ipfs/QmVjAuaQ1UdqgJAmvR8pdXQCb3Zy7fDQeBtbx9ZTbCQic4\"]},\"src/nonce/PWNRevokedNonce.sol\":{\"keccak256\":\"0xc0c75afa97243c3ef711e04cc9ffd0b3d44fa7999333b0048dc37b562a4cc06e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://5b2b7271b9505f35a05d2d68803f20116b621dcecfc528806225e0280b0a420e\",\"dweb:/ipfs/QmZh95WUcgTHz7ifsQhmrq1wCjvDXfwwh9G7k49otPisxx\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_hub",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_revokedNonce",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_config",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "AcceptorIsProposer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "tag",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "AddressMissingHubTag"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "used",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "AvailableCreditLimitExceeded"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerIsNotStatedProposer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "current",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "allowed",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerNotAllowedAcceptor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerNotLoanContract"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "current",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiration",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "Expired"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "current",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "InsufficientCollateralAmount"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "current",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "proposed",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "InvalidCollateralStateFingerprint"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "InvalidRefinancingLoanId"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "InvalidSignature"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "length",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "InvalidSignatureLength"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MinCollateralAmountNotSet"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MissingStateFingerprintComputer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "NonceNotUsable"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minCollateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditPerCollateralUnit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ],
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ProposalMade",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "MULTIPROPOSAL_DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "MULTIPROPOSAL_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "PROPOSAL_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "VERSION",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "acceptor",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "proposalData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32[]",
              "name": "proposalInclusionProof",
              "type": "bytes32[]"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "acceptProposal",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32"
            },
            {
              "internalType": "struct PWNSimpleLoan.Terms",
              "name": "loanTerms",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "struct MultiToken.Asset",
                  "name": "collateral",
                  "type": "tuple",
                  "components": [
                    {
                      "internalType": "enum MultiToken.Category",
                      "name": "category",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "assetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ]
                },
                {
                  "internalType": "struct MultiToken.Asset",
                  "name": "credit",
                  "type": "tuple",
                  "components": [
                    {
                      "internalType": "enum MultiToken.Category",
                      "name": "category",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "assetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ]
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "bytes32",
                  "name": "lenderSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "borrowerSpecHash",
                  "type": "bytes32"
                }
              ]
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "config",
          "outputs": [
            {
              "internalType": "contract PWNConfig",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "creditUsed",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "proposalData",
              "type": "bytes"
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "decodeProposalData",
          "outputs": [
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minCollateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditPerCollateralUnit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            },
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.ProposalValues",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minCollateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditPerCollateralUnit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            },
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.ProposalValues",
              "name": "proposalValues",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ]
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "encodeProposalData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "creditPerCollateralUnit",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "getCreditAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanProposal.Multiproposal",
              "name": "multiproposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "multiproposalMerkleRoot",
                  "type": "bytes32"
                }
              ]
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getMultiproposalHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minCollateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditPerCollateralUnit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getProposalHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "hub",
          "outputs": [
            {
              "internalType": "contract PWNHub",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanFungibleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minCollateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditPerCollateralUnit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "makeProposal",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "proposalsMade",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revokeNonce"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "revokedNonce",
          "outputs": [
            {
              "internalType": "contract PWNRevokedNonce",
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "acceptProposal(address,uint256,bytes,bytes32[],bytes)": {
            "details": "Function can be called only by a loan contract with appropriate PWN Hub tag.",
            "params": {
              "acceptor": "Address of a proposal acceptor.",
              "proposalData": "Encoded proposal data with signature.",
              "proposalInclusionProof": "Multiproposal inclusion proof. Empty if single proposal.",
              "refinancingLoanId": "Id of a loan to be refinanced. 0 if creating a new loan."
            },
            "returns": {
              "loanTerms": "Loan terms.",
              "proposalHash": "Proposal hash."
            }
          },
          "decodeProposalData(bytes)": {
            "params": {
              "proposalData": "Encoded proposal data."
            },
            "returns": {
              "_0": "Decoded proposal struct.",
              "_1": "Decoded proposal values struct."
            }
          },
          "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address),(uint256))": {
            "params": {
              "proposal": "Proposal struct to be encoded.",
              "proposalValues": "ProposalValues struct to be encoded."
            },
            "returns": {
              "_0": "Encoded proposal data."
            }
          },
          "getCreditAmount(uint256,uint256)": {
            "params": {
              "collateralAmount": "Amount of collateral.",
              "creditPerCollateralUnit": "Amount of credit per collateral unit with 38 decimals."
            },
            "returns": {
              "_0": "Amount of credit."
            }
          },
          "getMultiproposalHash((bytes32))": {
            "params": {
              "multiproposal": "Multiproposal struct."
            },
            "returns": {
              "_0": "Multiproposal hash."
            }
          },
          "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "params": {
              "proposal": "Proposal struct to be hashed."
            },
            "returns": {
              "_0": "Proposal struct hash."
            }
          },
          "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "details": "Function will mark a proposal hash as proposed.",
            "params": {
              "proposal": "Proposal struct containing all needed proposal data."
            },
            "returns": {
              "proposalHash": "Proposal hash."
            }
          },
          "revokeNonce(uint256,uint256)": {
            "params": {
              "nonce": "Proposal nonce to be revoked.",
              "nonceSpace": "Nonce space of a proposal nonce to be revoked."
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR()": {
            "notice": "Credit per collateral unit denominator. It is used to calculate credit amount from collateral amount."
          },
          "acceptProposal(address,uint256,bytes,bytes32[],bytes)": {
            "notice": "Accept a proposal and create new loan terms."
          },
          "decodeProposalData(bytes)": {
            "notice": "Decode proposal data."
          },
          "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address),(uint256))": {
            "notice": "Encode proposal data."
          },
          "getCreditAmount(uint256,uint256)": {
            "notice": "Compute credit amount from collateral amount and credit per collateral unit."
          },
          "getMultiproposalHash((bytes32))": {
            "notice": "Get a multiproposal hash according to EIP-712."
          },
          "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "notice": "Get an proposal hash according to EIP-712"
          },
          "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "notice": "Make an on-chain proposal."
          },
          "revokeNonce(uint256,uint256)": {
            "notice": "Helper function for revoking a proposal nonce on behalf of a caller."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "MultiToken/=lib/MultiToken/src/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "openzeppelin/=lib/openzeppelin-contracts/contracts/",
        "pwn/=src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/loan/terms/simple/proposal/PWNSimpleLoanFungibleProposal.sol": "PWNSimpleLoanFungibleProposal"
      },
      "libraries": {}
    },
    "sources": {
      "lib/MultiToken/src/MultiToken.sol": {
        "keccak256": "0xc82d7bddc1a925316875bfe3bf116cb8deacc2c6296fad57b1895db898bf871e",
        "urls": [
          "bzz-raw://587293f9235d52ab6f51c794ed68e8828eaa4f8b073fa191556fff37446be10c",
          "dweb:/ipfs/QmdFay286V8GfHZDE7TFDxh9irQsmNDwP4tQFbno49waxY"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/access/Ownable.sol": {
        "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218",
        "urls": [
          "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32",
          "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": {
        "keccak256": "0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c",
        "urls": [
          "bzz-raw://1fd55624076bf61d44af5ff351919e32dda748567acfbdd6ba3d6c7be61c758e",
          "dweb:/ipfs/QmSki4dTrf4GPm7MTpG3fk8mC7rnjwd2zMomLp6jLuF63Q"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol": {
        "keccak256": "0x10a6688bc4154b1b76268dbaf497bd8b24f77525ecb9cf829bd3cccec98eefc2",
        "urls": [
          "bzz-raw://68663f939b79e88a5bb677cf6c549e88eb4f587379c09f80d19cde14b0eb984b",
          "dweb:/ipfs/QmVfeL1uxQ5161d25DsNqptjaur7VQugjCSGitrRscTdmV"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol": {
        "keccak256": "0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544",
        "urls": [
          "bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e",
          "dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol": {
        "keccak256": "0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45",
        "urls": [
          "bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45",
          "dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol": {
        "keccak256": "0xaf297d12d8d4a57fe01a70f0ef38908f208e3faedc577056d0b728fa2f3ccf0c",
        "urls": [
          "bzz-raw://fbfaf37123958822a2720a4ea29651be00edab787540b770f73d3e025d286ff8",
          "dweb:/ipfs/QmbzgWeTm8hJVUqWrNAwFjshqbYVyeGpQA8D1huzxQdmw6"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": {
        "keccak256": "0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6",
        "urls": [
          "bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed",
          "dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol": {
        "keccak256": "0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582",
        "urls": [
          "bzz-raw://919c7ea27c77275c3c341da0c4a26a66a20ed27605fbe8becf11f58ec3bc65bf",
          "dweb:/ipfs/QmRLKyVE2n7e2Jo4bLNn8eLgqqhNGYnVQyjJPWdr8poskf"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b",
        "urls": [
          "bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec",
          "dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": {
        "keccak256": "0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69",
        "urls": [
          "bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71",
          "dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1",
        "urls": [
          "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68",
          "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol": {
        "keccak256": "0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff",
        "urls": [
          "bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005",
          "dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {
        "keccak256": "0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266",
        "urls": [
          "bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4",
          "dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": {
        "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da",
        "urls": [
          "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708",
          "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
        "urls": [
          "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
          "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Address.sol": {
        "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa",
        "urls": [
          "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931",
          "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
        "keccak256": "0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439",
        "urls": [
          "bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c",
          "dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Strings.sol": {
        "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0",
        "urls": [
          "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f",
          "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol": {
        "keccak256": "0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58",
        "urls": [
          "bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2",
          "dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol": {
        "keccak256": "0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac",
        "urls": [
          "bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04",
          "dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {
        "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
        "urls": [
          "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
          "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol": {
        "keccak256": "0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5",
        "urls": [
          "bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd",
          "dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
        "urls": [
          "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
          "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {
        "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3",
        "urls": [
          "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c",
          "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": {
        "keccak256": "0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad",
        "urls": [
          "bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278",
          "dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": {
        "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc",
        "urls": [
          "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7",
          "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"
        ],
        "license": "MIT"
      },
      "src/PWNErrors.sol": {
        "keccak256": "0x8a0e516fc8ddf54aecb82d5cbd19b6f263950a91d4411d1d4c54b90fae010692",
        "urls": [
          "bzz-raw://b9cd08003376c48cdaf6279c4237a38efb1e26080bc29de3343bcfe397a4bb0f",
          "dweb:/ipfs/QmXtMtn71ZzRu1rGQLq8u5vnDy4k462d7mGtu1jFd7ZBJG"
        ],
        "license": "GPL-3.0-only"
      },
      "src/config/PWNConfig.sol": {
        "keccak256": "0x15a2ab788f84df29b960d50b33803130bdd61fe7c0ce76d4f6bf76da7cccb594",
        "urls": [
          "bzz-raw://b1310535db741a5a7a0aff71f34ef329c7f5bf3117f9c38587e4090bec340fb4",
          "dweb:/ipfs/QmYRWwiSAyZMdxSqMYU1K2YRFzBW7L2dHXktx1BdFW9fP5"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHub.sol": {
        "keccak256": "0x92ad9edafc151bc7efc1b132c1be55966bb692860a94803a74ce5a948985126c",
        "urls": [
          "bzz-raw://a04dbfe0ea39f7cd04b7947cac66ce77745ecc20a24aad3f8d35a6d319eec202",
          "dweb:/ipfs/QmbxoqEtL4YwMQDfCydurWLHeVjL1Yjc4Ty4vsRoCqXabv"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHubAccessControl.sol": {
        "keccak256": "0x310e0389c98971c4d6c25d8756c1e8a962c8b22c54e3ce6d80a383fb5b755448",
        "urls": [
          "bzz-raw://63748084b8c8a9e2cce98a87d27a8baf353fae903641d6fdfc2cdc4ed229243f",
          "dweb:/ipfs/QmVywLNCBeWkNdWjpdumnAam1Shwj8k3DxxpRcWAK997Nw"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHubTags.sol": {
        "keccak256": "0xd1e685e8075f1f16835d38cfe39b1eee9edbf75089a0109002f7b2bfe14c177a",
        "urls": [
          "bzz-raw://4a01df6b1c2cf493017b7abb4b9ec6ac16c9b1c3498b16ccbdc4f2045909dde8",
          "dweb:/ipfs/QmcYEgSZrE33YKxDDBvhVgZTfT9Tj1RTEX3iA717zZyspJ"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/ICryptoKitties.sol": {
        "keccak256": "0x9aaa7f948d4f2121d764b5664fe1c8431b3c5bfce780228eceb56d1589681706",
        "urls": [
          "bzz-raw://05416e111c8ff6a1464248ac387e8c69015c355e949967586d514d9d17d619aa",
          "dweb:/ipfs/QmVK5Q6bS1CevgdxB17RJ9BGZsspCXdY5Y5dX4cpgQ4Rze"
        ],
        "license": "MIT"
      },
      "src/interfaces/IERC5646.sol": {
        "keccak256": "0xff5ce494375d2cf5a67fe9460ea66aa3572b8a0434ae538cbac0a55f7aac5c5e",
        "urls": [
          "bzz-raw://e8e2b472fa80a92ae12985da77056f68f0e0f36fca7ac37b6d30db82a2527180",
          "dweb:/ipfs/QmdFTGSCaPcVfthbGSUuiyhivqBx6xN9dCL14PCbR39Wki"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IMultiTokenCategoryRegistry.sol": {
        "keccak256": "0x5607c7415785a07c7226638ab7d16ae9a87906e5eafb06e723944144b8f7c48a",
        "urls": [
          "bzz-raw://dd5f1d39f2acb6cda18a1199e06be211deccce27478de077d942ced8ada6e0b1",
          "dweb:/ipfs/Qmdx2uXjyoyyqNQU5aQTpagujxSVAfS17Sc3ziJGAofXnX"
        ],
        "license": "MIT"
      },
      "src/interfaces/IPWNLoanMetadataProvider.sol": {
        "keccak256": "0x6cc991fd9c8c88e0a69e835fcd514868836e2432b12454dfcb6a681a3a9d13b8",
        "urls": [
          "bzz-raw://69fd07433fd7eb2f1474d778476240434fa79a31525341d88a588573562389c6",
          "dweb:/ipfs/Qmb6gWNQD96oSgwH5Yf6eMHxYWXZwCPrd7MvK86r7UKhZK"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IPoolAdapter.sol": {
        "keccak256": "0xe0309b4e7da2046095c7dc943d953f32d2a46b0ad64beaf3f4ed1b440fe43f89",
        "urls": [
          "bzz-raw://15870bf95e096b35620787a0eba49f7becbaff738651a83bd28310d022cdc93b",
          "dweb:/ipfs/QmZPYmxrjB6SFWr5arTztrDofQ6XdyzXTUMeaQt5wcbv3T"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IStateFingerpringComputer.sol": {
        "keccak256": "0xb2f72031bdd6b6ac7179ca9af90c290d37bcc43d6bab4db6e0b1ee7c7b4f72a2",
        "urls": [
          "bzz-raw://d8de3c648f1afab5458e553042a59b0df3d8d54be1a488e891de70821745da0c",
          "dweb:/ipfs/QmQ6QoeMgZGdVjJ2aAt8t1AuBCJ95m6BRSR1GKRqVk4jct"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/lib/PWNFeeCalculator.sol": {
        "keccak256": "0xab8eb0be2d2e5a7c909a326de53459ae2ed6fd7cdd3985719515f279f952fcdf",
        "urls": [
          "bzz-raw://4ca7a9d230ab90b46cdb1a16bd99af5639af7adcf2250a20b7e1f77c952344f5",
          "dweb:/ipfs/QmXzwraVHPmrVFtR4tkm5JqafygeDDvbQbkKu33EYUWLMq"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/lib/PWNSignatureChecker.sol": {
        "keccak256": "0xb76220c904f1b4c9e08166c4175746b161aaf70be14dc22b1a335f351970d1fd",
        "urls": [
          "bzz-raw://846d1cc6b7f1ba8b0bc6b5836aad018828bc1ad8f6f994ec59d24f6617d91fc1",
          "dweb:/ipfs/QmWe7cAsDysa6Qjn9vBAiHW4iaPmZnaeVmqxnwRMikgSCM"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/loan/PWNSimpleLoan.sol": {
        "keccak256": "0x6dd44efd796277aeb5a7712591cfbee10ea3058c0f8f97f9c6111297714d3155",
        "urls": [
          "bzz-raw://0a65b5a30ea71966c8deaa54f621985568fbcbe37bcb6174219410837c9722d9",
          "dweb:/ipfs/QmWzCC35n2a2GsqEkU27i1LKGjqhYTZ1wLfEBnUxsPRrfr"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/proposal/PWNSimpleLoanFungibleProposal.sol": {
        "keccak256": "0x6e155ab39d7f30d2b74caa44d12e6b0d1783e857353e6dd7d655fc36aa3900d0",
        "urls": [
          "bzz-raw://c28b8dfbc47615686930c607b2601d6dff19c8b937b34545d3a210e11e593cd2",
          "dweb:/ipfs/QmTxpeGFYLZXCYxu6nKj1xHoG5FTjxTXqHTg23hkKgiha9"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol": {
        "keccak256": "0xa0569c9949bfcd4995d813e1bfe3cb89dcf55293e2fb7728ade49d49be1c6d2d",
        "urls": [
          "bzz-raw://d94dc60f4f6591cac65d95bea69a8b6364589977b085892f334e4224ce3b754d",
          "dweb:/ipfs/QmV3NaHYz3bNbXsKbrHEJxBuLHJyStB6917hJ1D7dtqhs5"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/token/PWNLOAN.sol": {
        "keccak256": "0x92981fb0bd0abcadc45b0f88bfc5fcc960ce7a5b79494fc6c9fd5990b197c764",
        "urls": [
          "bzz-raw://e10726f492991694d751b68bf87a352f1284710ba311614295381a58ebfd226e",
          "dweb:/ipfs/Qmct6PYHSqHo9K9rGAif9ohBpJuQnTBWdHJRdENpetGg7k"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/vault/PWNVault.sol": {
        "keccak256": "0x00f3a6cad5f19a0a818d351a5aa849e41a34bf0251a872d4993d40d77468f29e",
        "urls": [
          "bzz-raw://01942d7d871fe64f229820f5f90be23b647e438d951531a5f60a470f8093977e",
          "dweb:/ipfs/QmcyDXfCdgSQ8P454JxfuTzNBSxfpzeJ9aTPBefTH3dTvK"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/vault/Permit.sol": {
        "keccak256": "0xce0acf24731cfaa49535adea5c0c6ebade736d35f3f54a8150ef175a693e3cee",
        "urls": [
          "bzz-raw://3542ad1e3295c63363fe825d3e46ad447fcd614f31f4dadeea39d24086e02c7a",
          "dweb:/ipfs/QmVjAuaQ1UdqgJAmvR8pdXQCb3Zy7fDQeBtbx9ZTbCQic4"
        ],
        "license": "GPL-3.0-only"
      },
      "src/nonce/PWNRevokedNonce.sol": {
        "keccak256": "0xc0c75afa97243c3ef711e04cc9ffd0b3d44fa7999333b0048dc37b562a4cc06e",
        "urls": [
          "bzz-raw://5b2b7271b9505f35a05d2d68803f20116b621dcecfc528806225e0280b0a420e",
          "dweb:/ipfs/QmZh95WUcgTHz7ifsQhmrq1wCjvDXfwwh9G7k49otPisxx"
        ],
        "license": "GPL-3.0-only"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/loan/terms/simple/proposal/PWNSimpleLoanFungibleProposal.sol",
    "id": 64213,
    "exportedSymbols": {
      "Math": [
        55080
      ],
      "MultiToken": [
        1132
      ],
      "PWNSimpleLoan": [
        63281
      ],
      "PWNSimpleLoanFungibleProposal": [
        64212
      ],
      "PWNSimpleLoanProposal": [
        65236
      ]
    },
    "nodeType": "SourceUnit",
    "src": "41:11293:88",
    "nodes": [
      {
        "id": 63828,
        "nodeType": "PragmaDirective",
        "src": "41:23:88",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 63830,
        "nodeType": "ImportDirective",
        "src": "66:55:88",
        "nodes": [],
        "absolutePath": "lib/MultiToken/src/MultiToken.sol",
        "file": "MultiToken/MultiToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 64213,
        "sourceUnit": 1133,
        "symbolAliases": [
          {
            "foreign": {
              "id": 63829,
              "name": "MultiToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1132,
              "src": "75:10:88",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 63832,
        "nodeType": "ImportDirective",
        "src": "123:56:88",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol",
        "file": "openzeppelin/utils/math/Math.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 64213,
        "sourceUnit": 55081,
        "symbolAliases": [
          {
            "foreign": {
              "id": 63831,
              "name": "Math",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 55080,
              "src": "132:4:88",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 63834,
        "nodeType": "ImportDirective",
        "src": "181:77:88",
        "nodes": [],
        "absolutePath": "src/loan/terms/simple/loan/PWNSimpleLoan.sol",
        "file": "pwn/loan/terms/simple/loan/PWNSimpleLoan.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 64213,
        "sourceUnit": 63282,
        "symbolAliases": [
          {
            "foreign": {
              "id": 63833,
              "name": "PWNSimpleLoan",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 63281,
              "src": "190:13:88",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 63836,
        "nodeType": "ImportDirective",
        "src": "259:97:88",
        "nodes": [],
        "absolutePath": "src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol",
        "file": "pwn/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 64213,
        "sourceUnit": 65237,
        "symbolAliases": [
          {
            "foreign": {
              "id": 63835,
              "name": "PWNSimpleLoanProposal",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 65236,
              "src": "268:21:88",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 64212,
        "nodeType": "ContractDefinition",
        "src": "688:10645:88",
        "nodes": [
          {
            "id": 63842,
            "nodeType": "VariableDeclaration",
            "src": "759:38:88",
            "nodes": [],
            "constant": true,
            "functionSelector": "ffa1ad74",
            "mutability": "constant",
            "name": "VERSION",
            "nameLocation": "782:7:88",
            "scope": 64212,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 63840,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "759:6:88",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "hexValue": "312e30",
              "id": 63841,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "792:5:88",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
                "typeString": "literal_string \"1.0\""
              },
              "value": "1.0"
            },
            "visibility": "public"
          },
          {
            "id": 63846,
            "nodeType": "VariableDeclaration",
            "src": "937:69:88",
            "nodes": [],
            "constant": true,
            "documentation": {
              "id": 63843,
              "nodeType": "StructuredDocumentation",
              "src": "804:128:88",
              "text": " @notice Credit per collateral unit denominator. It is used to calculate credit amount from collateral amount."
            },
            "functionSelector": "808560ee",
            "mutability": "constant",
            "name": "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR",
            "nameLocation": "961:38:88",
            "scope": 64212,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 63844,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "937:7:88",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31653338",
              "id": 63845,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1002:4:88",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                "typeString": "int_const 1000...(31 digits omitted)...0000"
              },
              "value": "1e38"
            },
            "visibility": "public"
          },
          {
            "id": 63852,
            "nodeType": "VariableDeclaration",
            "src": "1083:583:88",
            "nodes": [],
            "constant": true,
            "documentation": {
              "id": 63847,
              "nodeType": "StructuredDocumentation",
              "src": "1013:65:88",
              "text": " @dev EIP-712 simple proposal struct type hash."
            },
            "functionSelector": "853b94a0",
            "mutability": "constant",
            "name": "PROPOSAL_TYPEHASH",
            "nameLocation": "1107:17:88",
            "scope": 64212,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 63848,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1083:7:88",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "50726f706f73616c2875696e743820636f6c6c61746572616c43617465676f72792c6164647265737320636f6c6c61746572616c416464726573732c75696e7432353620636f6c6c61746572616c49642c75696e74323536206d696e436f6c6c61746572616c416d6f756e742c626f6f6c20636865636b436f6c6c61746572616c537461746546696e6765727072696e742c6279746573333220636f6c6c61746572616c537461746546696e6765727072696e742c6164647265737320637265646974416464726573732c75696e7432353620637265646974506572436f6c6c61746572616c556e69742c75696e7432353620617661696c61626c654372656469744c696d69742c75696e74323536206669786564496e746572657374416d6f756e742c75696e743430206163637275696e67496e7465726573744150522c75696e743332206475726174696f6e2c75696e7434302065787069726174696f6e2c6164647265737320616c6c6f7765644163636570746f722c616464726573732070726f706f7365722c627974657333322070726f706f73657253706563486173682c626f6f6c2069734f666665722c75696e7432353620726566696e616e63696e674c6f616e49642c75696e74323536206e6f6e636553706163652c75696e74323536206e6f6e63652c61646472657373206c6f616e436f6e747261637429",
                  "id": 63850,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1146:514:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee1356",
                    "typeString": "literal_string \"Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 minCollateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditPerCollateralUnit,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)\""
                  },
                  "value": "Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 minCollateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditPerCollateralUnit,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_58062dbce0eca7d4486c66e0d48cdd72744db07523b68e9e4dad30aa4bee1356",
                    "typeString": "literal_string \"Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 minCollateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditPerCollateralUnit,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)\""
                  }
                ],
                "id": 63849,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "1127:9:88",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 63851,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1127:539:88",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 63896,
            "nodeType": "StructDefinition",
            "src": "4277:729:88",
            "nodes": [],
            "canonicalName": "PWNSimpleLoanFungibleProposal.Proposal",
            "members": [
              {
                "constant": false,
                "id": 63855,
                "mutability": "mutable",
                "name": "collateralCategory",
                "nameLocation": "4323:18:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4303:38:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_Category_$50",
                  "typeString": "enum MultiToken.Category"
                },
                "typeName": {
                  "id": 63854,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 63853,
                    "name": "MultiToken.Category",
                    "nameLocations": [
                      "4303:10:88",
                      "4314:8:88"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 50,
                    "src": "4303:19:88"
                  },
                  "referencedDeclaration": 50,
                  "src": "4303:19:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Category_$50",
                    "typeString": "enum MultiToken.Category"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63857,
                "mutability": "mutable",
                "name": "collateralAddress",
                "nameLocation": "4359:17:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4351:25:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 63856,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4351:7:88",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63859,
                "mutability": "mutable",
                "name": "collateralId",
                "nameLocation": "4394:12:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4386:20:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63858,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4386:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63861,
                "mutability": "mutable",
                "name": "minCollateralAmount",
                "nameLocation": "4424:19:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4416:27:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63860,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4416:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63863,
                "mutability": "mutable",
                "name": "checkCollateralStateFingerprint",
                "nameLocation": "4458:31:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4453:36:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 63862,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "4453:4:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63865,
                "mutability": "mutable",
                "name": "collateralStateFingerprint",
                "nameLocation": "4507:26:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4499:34:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 63864,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "4499:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63867,
                "mutability": "mutable",
                "name": "creditAddress",
                "nameLocation": "4551:13:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4543:21:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 63866,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4543:7:88",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63869,
                "mutability": "mutable",
                "name": "creditPerCollateralUnit",
                "nameLocation": "4582:23:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4574:31:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63868,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4574:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63871,
                "mutability": "mutable",
                "name": "availableCreditLimit",
                "nameLocation": "4623:20:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4615:28:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63870,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4615:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63873,
                "mutability": "mutable",
                "name": "fixedInterestAmount",
                "nameLocation": "4661:19:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4653:27:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63872,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4653:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63875,
                "mutability": "mutable",
                "name": "accruingInterestAPR",
                "nameLocation": "4697:19:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4690:26:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 63874,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "4690:6:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63877,
                "mutability": "mutable",
                "name": "duration",
                "nameLocation": "4733:8:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4726:15:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 63876,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "4726:6:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63879,
                "mutability": "mutable",
                "name": "expiration",
                "nameLocation": "4758:10:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4751:17:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 63878,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "4751:6:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63881,
                "mutability": "mutable",
                "name": "allowedAcceptor",
                "nameLocation": "4786:15:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4778:23:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 63880,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4778:7:88",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63883,
                "mutability": "mutable",
                "name": "proposer",
                "nameLocation": "4819:8:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4811:16:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 63882,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4811:7:88",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63885,
                "mutability": "mutable",
                "name": "proposerSpecHash",
                "nameLocation": "4845:16:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4837:24:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 63884,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "4837:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63887,
                "mutability": "mutable",
                "name": "isOffer",
                "nameLocation": "4876:7:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4871:12:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 63886,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "4871:4:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63889,
                "mutability": "mutable",
                "name": "refinancingLoanId",
                "nameLocation": "4901:17:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4893:25:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63888,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4893:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63891,
                "mutability": "mutable",
                "name": "nonceSpace",
                "nameLocation": "4936:10:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4928:18:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63890,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4928:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63893,
                "mutability": "mutable",
                "name": "nonce",
                "nameLocation": "4964:5:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4956:13:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63892,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4956:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 63895,
                "mutability": "mutable",
                "name": "loanContract",
                "nameLocation": "4987:12:88",
                "nodeType": "VariableDeclaration",
                "scope": 63896,
                "src": "4979:20:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 63894,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4979:7:88",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nameLocation": "4284:8:88",
            "scope": 64212,
            "visibility": "public"
          },
          {
            "id": 63899,
            "nodeType": "StructDefinition",
            "src": "5164:63:88",
            "nodes": [],
            "canonicalName": "PWNSimpleLoanFungibleProposal.ProposalValues",
            "members": [
              {
                "constant": false,
                "id": 63898,
                "mutability": "mutable",
                "name": "collateralAmount",
                "nameLocation": "5204:16:88",
                "nodeType": "VariableDeclaration",
                "scope": 63899,
                "src": "5196:24:88",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 63897,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5196:7:88",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ProposalValues",
            "nameLocation": "5171:14:88",
            "scope": 64212,
            "visibility": "public"
          },
          {
            "id": 63909,
            "nodeType": "EventDefinition",
            "src": "5325:94:88",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 63900,
              "nodeType": "StructuredDocumentation",
              "src": "5233:87:88",
              "text": " @notice Emitted when a proposal is made via an on-chain transaction."
            },
            "eventSelector": "e228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f464",
            "name": "ProposalMade",
            "nameLocation": "5331:12:88",
            "parameters": {
              "id": 63908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63902,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "5360:12:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63909,
                  "src": "5344:28:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 63901,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5344:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63904,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "proposer",
                  "nameLocation": "5390:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63909,
                  "src": "5374:24:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 63903,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5374:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63907,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "5409:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63909,
                  "src": "5400:17:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 63906,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 63905,
                      "name": "Proposal",
                      "nameLocations": [
                        "5400:8:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63896,
                      "src": "5400:8:88"
                    },
                    "referencedDeclaration": 63896,
                    "src": "5400:8:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5343:75:88"
            }
          },
          {
            "id": 63912,
            "nodeType": "ErrorDefinition",
            "src": "5515:34:88",
            "nodes": [],
            "documentation": {
              "id": 63910,
              "nodeType": "StructuredDocumentation",
              "src": "5425:85:88",
              "text": " @notice Thrown when proposal has no minimal collateral amount set."
            },
            "errorSelector": "44acb562",
            "name": "MinCollateralAmountNotSet",
            "nameLocation": "5521:25:88",
            "parameters": {
              "id": 63911,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5546:2:88"
            }
          },
          {
            "id": 63919,
            "nodeType": "ErrorDefinition",
            "src": "5648:67:88",
            "nodes": [],
            "documentation": {
              "id": 63913,
              "nodeType": "StructuredDocumentation",
              "src": "5555:88:88",
              "text": " @notice Thrown when acceptor provides insufficient collateral amount."
            },
            "errorSelector": "1f4824b4",
            "name": "InsufficientCollateralAmount",
            "nameLocation": "5654:28:88",
            "parameters": {
              "id": 63918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63915,
                  "mutability": "mutable",
                  "name": "current",
                  "nameLocation": "5691:7:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63919,
                  "src": "5683:15:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 63914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5683:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63917,
                  "mutability": "mutable",
                  "name": "limit",
                  "nameLocation": "5708:5:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63919,
                  "src": "5700:13:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 63916,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5700:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5682:32:88"
            }
          },
          {
            "id": 63936,
            "nodeType": "FunctionDefinition",
            "src": "5721:192:88",
            "nodes": [],
            "body": {
              "id": 63935,
              "nodeType": "Block",
              "src": "5911:2:88",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 63928,
                    "name": "_hub",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 63921,
                    "src": "5839:4:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "id": 63929,
                    "name": "_revokedNonce",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 63923,
                    "src": "5845:13:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "id": 63930,
                    "name": "_config",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 63925,
                    "src": "5860:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "hexValue": "50574e53696d706c654c6f616e46756e6769626c6550726f706f73616c",
                    "id": 63931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5869:31:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_21d0813fa1f62da31182730e1b9b75167fc3d5daab2884314a7dfee63dd0c372",
                      "typeString": "literal_string \"PWNSimpleLoanFungibleProposal\""
                    },
                    "value": "PWNSimpleLoanFungibleProposal"
                  },
                  {
                    "id": 63932,
                    "name": "VERSION",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 63842,
                    "src": "5902:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 63933,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 63927,
                  "name": "PWNSimpleLoanProposal",
                  "nameLocations": [
                    "5817:21:88"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 65236,
                  "src": "5817:21:88"
                },
                "nodeType": "ModifierInvocation",
                "src": "5817:93:88"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 63926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63921,
                  "mutability": "mutable",
                  "name": "_hub",
                  "nameLocation": "5750:4:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63936,
                  "src": "5742:12:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 63920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5742:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63923,
                  "mutability": "mutable",
                  "name": "_revokedNonce",
                  "nameLocation": "5772:13:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63936,
                  "src": "5764:21:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 63922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5764:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63925,
                  "mutability": "mutable",
                  "name": "_config",
                  "nameLocation": "5803:7:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63936,
                  "src": "5795:15:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 63924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5795:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5732:84:88"
            },
            "returnParameters": {
              "id": 63934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5911:0:88"
            },
            "scope": 64212,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 63954,
            "nodeType": "FunctionDefinition",
            "src": "6082:164:88",
            "nodes": [],
            "body": {
              "id": 63953,
              "nodeType": "Block",
              "src": "6165:81:88",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 63946,
                        "name": "PROPOSAL_TYPEHASH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63852,
                        "src": "6199:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 63949,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63940,
                            "src": "6229:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                              "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                              "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                            }
                          ],
                          "expression": {
                            "id": 63947,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6218:3:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 63948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6222:6:88",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "6218:10:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 63950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6218:20:88",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 63945,
                      "name": "_getProposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64872,
                      "src": "6182:16:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,bytes memory) view returns (bytes32)"
                      }
                    },
                    "id": 63951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6182:57:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 63944,
                  "id": 63952,
                  "nodeType": "Return",
                  "src": "6175:64:88"
                }
              ]
            },
            "documentation": {
              "id": 63937,
              "nodeType": "StructuredDocumentation",
              "src": "5919:158:88",
              "text": " @notice Get an proposal hash according to EIP-712\n @param proposal Proposal struct to be hashed.\n @return Proposal struct hash."
            },
            "functionSelector": "382c0cdd",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getProposalHash",
            "nameLocation": "6091:15:88",
            "parameters": {
              "id": 63941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63940,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "6125:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63954,
                  "src": "6107:26:88",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 63939,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 63938,
                      "name": "Proposal",
                      "nameLocations": [
                        "6107:8:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63896,
                      "src": "6107:8:88"
                    },
                    "referencedDeclaration": 63896,
                    "src": "6107:8:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6106:28:88"
            },
            "returnParameters": {
              "id": 63944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63943,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 63954,
                  "src": "6156:7:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 63942,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6156:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6155:9:88"
            },
            "scope": 64212,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 63983,
            "nodeType": "FunctionDefinition",
            "src": "6489:273:88",
            "nodes": [],
            "body": {
              "id": 63982,
              "nodeType": "Block",
              "src": "6579:183:88",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 63967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 63963,
                      "name": "proposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63961,
                      "src": "6589:12:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 63965,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63958,
                          "src": "6620:8:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                          }
                        ],
                        "id": 63964,
                        "name": "getProposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63954,
                        "src": "6604:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Proposal_$63896_calldata_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct PWNSimpleLoanFungibleProposal.Proposal calldata) view returns (bytes32)"
                        }
                      },
                      "id": 63966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6604:25:88",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6589:40:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 63968,
                  "nodeType": "ExpressionStatement",
                  "src": "6589:40:88"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 63970,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63961,
                        "src": "6653:12:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 63971,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63958,
                          "src": "6667:8:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                          }
                        },
                        "id": 63972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6676:8:88",
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63883,
                        "src": "6667:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 63969,
                      "name": "_makeProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64897,
                      "src": "6639:13:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 63973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6639:46:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 63974,
                  "nodeType": "ExpressionStatement",
                  "src": "6639:46:88"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 63976,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63961,
                        "src": "6713:12:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 63977,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63958,
                          "src": "6727:8:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                          }
                        },
                        "id": 63978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6736:8:88",
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63883,
                        "src": "6727:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 63979,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63958,
                        "src": "6746:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal calldata"
                        }
                      ],
                      "id": 63975,
                      "name": "ProposalMade",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63909,
                      "src": "6700:12:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_Proposal_$63896_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,struct PWNSimpleLoanFungibleProposal.Proposal memory)"
                      }
                    },
                    "id": 63980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6700:55:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 63981,
                  "nodeType": "EmitStatement",
                  "src": "6695:60:88"
                }
              ]
            },
            "documentation": {
              "id": 63955,
              "nodeType": "StructuredDocumentation",
              "src": "6252:232:88",
              "text": " @notice Make an on-chain proposal.\n @dev Function will mark a proposal hash as proposed.\n @param proposal Proposal struct containing all needed proposal data.\n @return proposalHash Proposal hash."
            },
            "functionSelector": "83f19a0b",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeProposal",
            "nameLocation": "6498:12:88",
            "parameters": {
              "id": 63959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63958,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "6529:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63983,
                  "src": "6511:26:88",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$63896_calldata_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 63957,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 63956,
                      "name": "Proposal",
                      "nameLocations": [
                        "6511:8:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63896,
                      "src": "6511:8:88"
                    },
                    "referencedDeclaration": 63896,
                    "src": "6511:8:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6510:28:88"
            },
            "returnParameters": {
              "id": 63962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63961,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "6565:12:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 63983,
                  "src": "6557:20:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 63960,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6557:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6556:22:88"
            },
            "scope": 64212,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 64002,
            "nodeType": "FunctionDefinition",
            "src": "6979:211:88",
            "nodes": [],
            "body": {
              "id": 64001,
              "nodeType": "Block",
              "src": "7130:60:88",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 63997,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63987,
                        "src": "7158:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                        }
                      },
                      {
                        "id": 63998,
                        "name": "proposalValues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63990,
                        "src": "7168:14:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                        }
                      ],
                      "expression": {
                        "id": 63995,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "7147:3:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 63996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "7151:6:88",
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "7147:10:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 63999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7147:36:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 63994,
                  "id": 64000,
                  "nodeType": "Return",
                  "src": "7140:43:88"
                }
              ]
            },
            "documentation": {
              "id": 63984,
              "nodeType": "StructuredDocumentation",
              "src": "6768:206:88",
              "text": " @notice Encode proposal data.\n @param proposal Proposal struct to be encoded.\n @param proposalValues ProposalValues struct to be encoded.\n @return Encoded proposal data."
            },
            "functionSelector": "49d2151c",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeProposalData",
            "nameLocation": "6988:18:88",
            "parameters": {
              "id": 63991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63987,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "7032:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64002,
                  "src": "7016:24:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 63986,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 63985,
                      "name": "Proposal",
                      "nameLocations": [
                        "7016:8:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63896,
                      "src": "7016:8:88"
                    },
                    "referencedDeclaration": 63896,
                    "src": "7016:8:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 63990,
                  "mutability": "mutable",
                  "name": "proposalValues",
                  "nameLocation": "7072:14:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64002,
                  "src": "7050:36:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                  },
                  "typeName": {
                    "id": 63989,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 63988,
                      "name": "ProposalValues",
                      "nameLocations": [
                        "7050:14:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63899,
                      "src": "7050:14:88"
                    },
                    "referencedDeclaration": 63899,
                    "src": "7050:14:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ProposalValues_$63899_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7006:86:88"
            },
            "returnParameters": {
              "id": 63994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63993,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 64002,
                  "src": "7116:12:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 63992,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7116:5:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7115:14:88"
            },
            "scope": 64212,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 64023,
            "nodeType": "FunctionDefinition",
            "src": "7386:192:88",
            "nodes": [],
            "body": {
              "id": 64022,
              "nodeType": "Block",
              "src": "7502:76:88",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 64016,
                        "name": "proposalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64005,
                        "src": "7530:12:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 64017,
                            "name": "Proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63896,
                            "src": "7545:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Proposal_$63896_storage_ptr_$",
                              "typeString": "type(struct PWNSimpleLoanFungibleProposal.Proposal storage pointer)"
                            }
                          },
                          {
                            "id": 64018,
                            "name": "ProposalValues",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63899,
                            "src": "7555:14:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_ProposalValues_$63899_storage_ptr_$",
                              "typeString": "type(struct PWNSimpleLoanFungibleProposal.ProposalValues storage pointer)"
                            }
                          }
                        ],
                        "id": 64019,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "7544:26:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_type$_t_struct$_Proposal_$63896_storage_ptr_$_$_t_type$_t_struct$_ProposalValues_$63899_storage_ptr_$_$",
                          "typeString": "tuple(type(struct PWNSimpleLoanFungibleProposal.Proposal storage pointer),type(struct PWNSimpleLoanFungibleProposal.ProposalValues storage pointer))"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_tuple$_t_type$_t_struct$_Proposal_$63896_storage_ptr_$_$_t_type$_t_struct$_ProposalValues_$63899_storage_ptr_$_$",
                          "typeString": "tuple(type(struct PWNSimpleLoanFungibleProposal.Proposal storage pointer),type(struct PWNSimpleLoanFungibleProposal.ProposalValues storage pointer))"
                        }
                      ],
                      "expression": {
                        "id": 64014,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "7519:3:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 64015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "7523:6:88",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "7519:10:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 64020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7519:52:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Proposal_$63896_memory_ptr_$_t_struct$_ProposalValues_$63899_memory_ptr_$",
                      "typeString": "tuple(struct PWNSimpleLoanFungibleProposal.Proposal memory,struct PWNSimpleLoanFungibleProposal.ProposalValues memory)"
                    }
                  },
                  "functionReturnParameters": 64013,
                  "id": 64021,
                  "nodeType": "Return",
                  "src": "7512:59:88"
                }
              ]
            },
            "documentation": {
              "id": 64003,
              "nodeType": "StructuredDocumentation",
              "src": "7196:185:88",
              "text": " @notice Decode proposal data.\n @param proposalData Encoded proposal data.\n @return Decoded proposal struct.\n @return Decoded proposal values struct."
            },
            "functionSelector": "2d5d17fc",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeProposalData",
            "nameLocation": "7395:18:88",
            "parameters": {
              "id": 64006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64005,
                  "mutability": "mutable",
                  "name": "proposalData",
                  "nameLocation": "7427:12:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64023,
                  "src": "7414:25:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 64004,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7414:5:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7413:27:88"
            },
            "returnParameters": {
              "id": 64013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64009,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 64023,
                  "src": "7462:15:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 64008,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 64007,
                      "name": "Proposal",
                      "nameLocations": [
                        "7462:8:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63896,
                      "src": "7462:8:88"
                    },
                    "referencedDeclaration": 63896,
                    "src": "7462:8:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64012,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 64023,
                  "src": "7479:21:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                    "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                  },
                  "typeName": {
                    "id": 64011,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 64010,
                      "name": "ProposalValues",
                      "nameLocations": [
                        "7479:14:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63899,
                      "src": "7479:14:88"
                    },
                    "referencedDeclaration": 63899,
                    "src": "7479:14:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ProposalValues_$63899_storage_ptr",
                      "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7461:40:88"
            },
            "scope": 64212,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 64041,
            "nodeType": "FunctionDefinition",
            "src": "7871:232:88",
            "nodes": [],
            "body": {
              "id": 64040,
              "nodeType": "Block",
              "src": "7985:118:88",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 64035,
                        "name": "collateralAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64026,
                        "src": "8014:16:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 64036,
                        "name": "creditPerCollateralUnit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64028,
                        "src": "8032:23:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 64037,
                        "name": "CREDIT_PER_COLLATERAL_UNIT_DENOMINATOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63846,
                        "src": "8057:38:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 64033,
                        "name": "Math",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55080,
                        "src": "8002:4:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Math_$55080_$",
                          "typeString": "type(library Math)"
                        }
                      },
                      "id": 64034,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8007:6:88",
                      "memberName": "mulDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 54428,
                      "src": "8002:11:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 64038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8002:94:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 64032,
                  "id": 64039,
                  "nodeType": "Return",
                  "src": "7995:101:88"
                }
              ]
            },
            "documentation": {
              "id": 64024,
              "nodeType": "StructuredDocumentation",
              "src": "7584:282:88",
              "text": " @notice Compute credit amount from collateral amount and credit per collateral unit.\n @param collateralAmount Amount of collateral.\n @param creditPerCollateralUnit Amount of credit per collateral unit with 38 decimals.\n @return Amount of credit."
            },
            "functionSelector": "993fba5c",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCreditAmount",
            "nameLocation": "7880:15:88",
            "parameters": {
              "id": 64029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64026,
                  "mutability": "mutable",
                  "name": "collateralAmount",
                  "nameLocation": "7904:16:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64041,
                  "src": "7896:24:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 64025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7896:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64028,
                  "mutability": "mutable",
                  "name": "creditPerCollateralUnit",
                  "nameLocation": "7930:23:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64041,
                  "src": "7922:31:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 64027,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7922:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7895:59:88"
            },
            "returnParameters": {
              "id": 64032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64031,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 64041,
                  "src": "7976:7:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 64030,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7976:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7975:9:88"
            },
            "scope": 64212,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 64211,
            "nodeType": "FunctionDefinition",
            "src": "8166:3164:88",
            "nodes": [],
            "body": {
              "id": 64210,
              "nodeType": "Block",
              "src": "8466:2864:88",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    64064,
                    64067
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 64064,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nameLocation": "8525:8:88",
                      "nodeType": "VariableDeclaration",
                      "scope": 64210,
                      "src": "8509:24:88",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                        "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                      },
                      "typeName": {
                        "id": 64063,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 64062,
                          "name": "Proposal",
                          "nameLocations": [
                            "8509:8:88"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 63896,
                          "src": "8509:8:88"
                        },
                        "referencedDeclaration": 63896,
                        "src": "8509:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$63896_storage_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 64067,
                      "mutability": "mutable",
                      "name": "proposalValues",
                      "nameLocation": "8557:14:88",
                      "nodeType": "VariableDeclaration",
                      "scope": 64210,
                      "src": "8535:36:88",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                        "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                      },
                      "typeName": {
                        "id": 64066,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 64065,
                          "name": "ProposalValues",
                          "nameLocations": [
                            "8535:14:88"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 63899,
                          "src": "8535:14:88"
                        },
                        "referencedDeclaration": 63899,
                        "src": "8535:14:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ProposalValues_$63899_storage_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 64071,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 64069,
                        "name": "proposalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64048,
                        "src": "8594:12:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 64068,
                      "name": "decodeProposalData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64023,
                      "src": "8575:18:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Proposal_$63896_memory_ptr_$_t_struct$_ProposalValues_$63899_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (struct PWNSimpleLoanFungibleProposal.Proposal memory,struct PWNSimpleLoanFungibleProposal.ProposalValues memory)"
                      }
                    },
                    "id": 64070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8575:32:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Proposal_$63896_memory_ptr_$_t_struct$_ProposalValues_$63899_memory_ptr_$",
                      "typeString": "tuple(struct PWNSimpleLoanFungibleProposal.Proposal memory,struct PWNSimpleLoanFungibleProposal.ProposalValues memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8508:99:88"
                },
                {
                  "expression": {
                    "id": 64080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 64072,
                      "name": "proposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64057,
                      "src": "8648:12:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 64074,
                          "name": "PROPOSAL_TYPEHASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63852,
                          "src": "8680:17:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "id": 64077,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "8710:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            ],
                            "expression": {
                              "id": 64075,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8699:3:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 64076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8703:6:88",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "8699:10:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 64078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8699:20:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 64073,
                        "name": "_getProposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64872,
                        "src": "8663:16:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32,bytes memory) view returns (bytes32)"
                        }
                      },
                      "id": 64079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8663:57:88",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8648:72:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 64081,
                  "nodeType": "ExpressionStatement",
                  "src": "8648:72:88"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 64085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 64082,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64064,
                        "src": "8774:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                        }
                      },
                      "id": 64083,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8783:19:88",
                      "memberName": "minCollateralAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63861,
                      "src": "8774:28:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 64084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8806:1:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8774:33:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 64090,
                  "nodeType": "IfStatement",
                  "src": "8770:98:88",
                  "trueBody": {
                    "id": 64089,
                    "nodeType": "Block",
                    "src": "8809:59:88",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 64086,
                            "name": "MinCollateralAmountNotSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63912,
                            "src": "8830:25:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 64087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8830:27:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 64088,
                        "nodeType": "RevertStatement",
                        "src": "8823:34:88"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 64095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 64091,
                        "name": "proposalValues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64067,
                        "src": "8881:14:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                        }
                      },
                      "id": 64092,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8896:16:88",
                      "memberName": "collateralAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63898,
                      "src": "8881:31:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 64093,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64064,
                        "src": "8915:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                          "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                        }
                      },
                      "id": 64094,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8924:19:88",
                      "memberName": "minCollateralAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63861,
                      "src": "8915:28:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8881:62:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 64104,
                  "nodeType": "IfStatement",
                  "src": "8877:255:88",
                  "trueBody": {
                    "id": 64103,
                    "nodeType": "Block",
                    "src": "8945:187:88",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 64097,
                                "name": "proposalValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64067,
                                "src": "9022:14:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                                }
                              },
                              "id": 64098,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9037:16:88",
                              "memberName": "collateralAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63898,
                              "src": "9022:31:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 64099,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64064,
                                "src": "9078:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                                }
                              },
                              "id": 64100,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9087:19:88",
                              "memberName": "minCollateralAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63861,
                              "src": "9078:28:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 64096,
                            "name": "InsufficientCollateralAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63919,
                            "src": "8966:28:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) pure"
                            }
                          },
                          "id": 64101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "9013:7:88",
                            "9071:5:88"
                          ],
                          "names": [
                            "current",
                            "limit"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "8966:155:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 64102,
                        "nodeType": "RevertStatement",
                        "src": "8959:162:88"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    64106
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 64106,
                      "mutability": "mutable",
                      "name": "creditAmount",
                      "nameLocation": "9185:12:88",
                      "nodeType": "VariableDeclaration",
                      "scope": 64210,
                      "src": "9177:20:88",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 64105,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9177:7:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 64113,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 64108,
                          "name": "proposalValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 64067,
                          "src": "9216:14:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                          }
                        },
                        "id": 64109,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9231:16:88",
                        "memberName": "collateralAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63898,
                        "src": "9216:31:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 64110,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 64064,
                          "src": "9249:8:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                            "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                          }
                        },
                        "id": 64111,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "9258:23:88",
                        "memberName": "creditPerCollateralUnit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63869,
                        "src": "9249:32:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 64107,
                      "name": "getCreditAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64041,
                      "src": "9200:15:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 64112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9200:82:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9177:105:88"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 64115,
                        "name": "acceptor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64044,
                        "src": "9356:8:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 64116,
                        "name": "refinancingLoanId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64046,
                        "src": "9378:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 64117,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64057,
                        "src": "9409:12:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 64118,
                        "name": "proposalInclusionProof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64051,
                        "src": "9435:22:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "id": 64119,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64053,
                        "src": "9471:9:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 64121,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9544:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64122,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9553:17:88",
                            "memberName": "collateralAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63857,
                            "src": "9544:26:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 64123,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9602:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64124,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9611:12:88",
                            "memberName": "collateralId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63859,
                            "src": "9602:21:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64125,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9674:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64126,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9683:31:88",
                            "memberName": "checkCollateralStateFingerprint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63863,
                            "src": "9674:40:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "expression": {
                              "id": 64127,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9760:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64128,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9769:26:88",
                            "memberName": "collateralStateFingerprint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63865,
                            "src": "9760:35:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 64129,
                            "name": "creditAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64106,
                            "src": "9827:12:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64130,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9879:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64131,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9888:20:88",
                            "memberName": "availableCreditLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63871,
                            "src": "9879:29:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64132,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9938:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64133,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9947:10:88",
                            "memberName": "expiration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63879,
                            "src": "9938:19:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          {
                            "expression": {
                              "id": 64134,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "9992:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64135,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10001:15:88",
                            "memberName": "allowedAcceptor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63881,
                            "src": "9992:24:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 64136,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10044:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64137,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10053:8:88",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63883,
                            "src": "10044:17:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 64138,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10088:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64139,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10097:7:88",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63887,
                            "src": "10088:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "expression": {
                              "id": 64140,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10141:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64141,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10150:17:88",
                            "memberName": "refinancingLoanId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63889,
                            "src": "10141:26:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64142,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10197:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10206:10:88",
                            "memberName": "nonceSpace",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63891,
                            "src": "10197:19:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64144,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10241:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64145,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10250:5:88",
                            "memberName": "nonce",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63893,
                            "src": "10241:14:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 64146,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10287:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64147,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10296:12:88",
                            "memberName": "loanContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63895,
                            "src": "10287:21:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 64120,
                          "name": "ProposalBase",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 64649,
                          "src": "9494:12:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ProposalBase_$64649_storage_ptr_$",
                            "typeString": "type(struct PWNSimpleLoanProposal.ProposalBase storage pointer)"
                          }
                        },
                        "id": 64148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "9525:17:88",
                          "9588:12:88",
                          "9641:31:88",
                          "9732:26:88",
                          "9813:12:88",
                          "9857:20:88",
                          "9926:10:88",
                          "9975:15:88",
                          "10034:8:88",
                          "10079:7:88",
                          "10122:17:88",
                          "10185:10:88",
                          "10234:5:88",
                          "10273:12:88"
                        ],
                        "names": [
                          "collateralAddress",
                          "collateralId",
                          "checkCollateralStateFingerprint",
                          "collateralStateFingerprint",
                          "creditAmount",
                          "availableCreditLimit",
                          "expiration",
                          "allowedAcceptor",
                          "proposer",
                          "isOffer",
                          "refinancingLoanId",
                          "nonceSpace",
                          "nonce",
                          "loanContract"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "9494:829:88",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ProposalBase_$64649_memory_ptr",
                          "typeString": "struct PWNSimpleLoanProposal.ProposalBase memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_ProposalBase_$64649_memory_ptr",
                          "typeString": "struct PWNSimpleLoanProposal.ProposalBase memory"
                        }
                      ],
                      "id": 64114,
                      "name": "_acceptProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65235,
                      "src": "9327:15:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$_t_struct$_ProposalBase_$64649_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes32,bytes32[] calldata,bytes calldata,struct PWNSimpleLoanProposal.ProposalBase memory)"
                      }
                    },
                    "id": 64149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9327:1006:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 64150,
                  "nodeType": "ExpressionStatement",
                  "src": "9327:1006:88"
                },
                {
                  "expression": {
                    "id": 64208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 64151,
                      "name": "loanTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64060,
                      "src": "10380:9:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                        "typeString": "struct PWNSimpleLoan.Terms memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "condition": {
                            "expression": {
                              "id": 64154,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10434:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64155,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10443:7:88",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63887,
                            "src": "10434:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 64158,
                            "name": "acceptor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64044,
                            "src": "10473:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 64159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "10434:47:88",
                          "trueExpression": {
                            "expression": {
                              "id": 64156,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10453:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64157,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10462:8:88",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63883,
                            "src": "10453:17:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 64160,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10505:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64161,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10514:7:88",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63887,
                            "src": "10505:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "id": 64163,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "10535:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64164,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10544:8:88",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63883,
                            "src": "10535:17:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 64165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "10505:47:88",
                          "trueExpression": {
                            "id": 64162,
                            "name": "acceptor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64044,
                            "src": "10524:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "expression": {
                            "id": 64166,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64064,
                            "src": "10576:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                              "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                            }
                          },
                          "id": 64167,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10585:8:88",
                          "memberName": "duration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63877,
                          "src": "10576:17:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 64170,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64064,
                                "src": "10664:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                                }
                              },
                              "id": 64171,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10673:18:88",
                              "memberName": "collateralCategory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63855,
                              "src": "10664:27:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Category_$50",
                                "typeString": "enum MultiToken.Category"
                              }
                            },
                            {
                              "expression": {
                                "id": 64172,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64064,
                                "src": "10723:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                                }
                              },
                              "id": 64173,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10732:17:88",
                              "memberName": "collateralAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63857,
                              "src": "10723:26:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 64174,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64064,
                                "src": "10771:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                                }
                              },
                              "id": 64175,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10780:12:88",
                              "memberName": "collateralId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63859,
                              "src": "10771:21:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 64176,
                                "name": "proposalValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64067,
                                "src": "10818:14:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ProposalValues_$63899_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.ProposalValues memory"
                                }
                              },
                              "id": 64177,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10833:16:88",
                              "memberName": "collateralAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63898,
                              "src": "10818:31:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_Category_$50",
                                "typeString": "enum MultiToken.Category"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 64168,
                              "name": "MultiToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "10619:10:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MultiToken_$1132_$",
                                "typeString": "type(library MultiToken)"
                              }
                            },
                            "id": 64169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10630:5:88",
                            "memberName": "Asset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 60,
                            "src": "10619:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Asset_$60_storage_ptr_$",
                              "typeString": "type(struct MultiToken.Asset storage pointer)"
                            }
                          },
                          "id": 64178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "10654:8:88",
                            "10709:12:88",
                            "10767:2:88",
                            "10810:6:88"
                          ],
                          "names": [
                            "category",
                            "assetAddress",
                            "id",
                            "amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "10619:245:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 64181,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 64064,
                                "src": "10935:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                                }
                              },
                              "id": 64182,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10944:13:88",
                              "memberName": "creditAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 63867,
                              "src": "10935:22:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 64183,
                              "name": "creditAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64106,
                              "src": "10983:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 64179,
                              "name": "MultiToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "10886:10:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MultiToken_$1132_$",
                                "typeString": "type(library MultiToken)"
                              }
                            },
                            "id": 64180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10897:5:88",
                            "memberName": "ERC20",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "10886:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_struct$_Asset_$60_memory_ptr_$",
                              "typeString": "function (address,uint256) pure returns (struct MultiToken.Asset memory)"
                            }
                          },
                          "id": 64184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "10921:12:88",
                            "10975:6:88"
                          ],
                          "names": [
                            "assetAddress",
                            "amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "10886:124:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          }
                        },
                        {
                          "expression": {
                            "id": 64185,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64064,
                            "src": "11045:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                              "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                            }
                          },
                          "id": 64186,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11054:19:88",
                          "memberName": "fixedInterestAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63873,
                          "src": "11045:28:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 64187,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64064,
                            "src": "11108:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                              "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                            }
                          },
                          "id": 64188,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11117:19:88",
                          "memberName": "accruingInterestAPR",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63875,
                          "src": "11108:28:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 64189,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "11166:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64190,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11175:7:88",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63887,
                            "src": "11166:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 64195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11221:1:88",
                                "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": 64194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11213:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 64193,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "11213:7:88",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 64196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11213:10:88",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 64197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11166:57:88",
                          "trueExpression": {
                            "expression": {
                              "id": 64191,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "11185:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64192,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11194:16:88",
                            "memberName": "proposerSpecHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63885,
                            "src": "11185:25:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 64198,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "11255:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64199,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11264:7:88",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63887,
                            "src": "11255:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "id": 64204,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 64064,
                              "src": "11287:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$63896_memory_ptr",
                                "typeString": "struct PWNSimpleLoanFungibleProposal.Proposal memory"
                              }
                            },
                            "id": 64205,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11296:16:88",
                            "memberName": "proposerSpecHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63885,
                            "src": "11287:25:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 64206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11255:57:88",
                          "trueExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 64202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11282:1:88",
                                "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": 64201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11274:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 64200,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "11274:7:88",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 64203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11274:10:88",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "id": 64152,
                          "name": "PWNSimpleLoan",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63281,
                          "src": "10392:13:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PWNSimpleLoan_$63281_$",
                            "typeString": "type(contract PWNSimpleLoan)"
                          }
                        },
                        "id": 64153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10406:5:88",
                        "memberName": "Terms",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 61054,
                        "src": "10392:19:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Terms_$61054_storage_ptr_$",
                          "typeString": "type(struct PWNSimpleLoan.Terms storage pointer)"
                        }
                      },
                      "id": 64207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [
                        "10426:6:88",
                        "10495:8:88",
                        "10566:8:88",
                        "10607:10:88",
                        "10878:6:88",
                        "11024:19:88",
                        "11087:19:88",
                        "11150:14:88",
                        "11237:16:88"
                      ],
                      "names": [
                        "lender",
                        "borrower",
                        "duration",
                        "collateral",
                        "credit",
                        "fixedInterestAmount",
                        "accruingInterestAPR",
                        "lenderSpecHash",
                        "borrowerSpecHash"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "10392:931:88",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                        "typeString": "struct PWNSimpleLoan.Terms memory"
                      }
                    },
                    "src": "10380:943:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                      "typeString": "struct PWNSimpleLoan.Terms memory"
                    }
                  },
                  "id": 64209,
                  "nodeType": "ExpressionStatement",
                  "src": "10380:943:88"
                }
              ]
            },
            "baseFunctions": [
              64846
            ],
            "documentation": {
              "id": 64042,
              "nodeType": "StructuredDocumentation",
              "src": "8109:52:88",
              "text": " @inheritdoc PWNSimpleLoanProposal"
            },
            "functionSelector": "01e83272",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "acceptProposal",
            "nameLocation": "8175:14:88",
            "overrides": {
              "id": 64055,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8379:8:88"
            },
            "parameters": {
              "id": 64054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64044,
                  "mutability": "mutable",
                  "name": "acceptor",
                  "nameLocation": "8207:8:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8199:16:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 64043,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8199:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64046,
                  "mutability": "mutable",
                  "name": "refinancingLoanId",
                  "nameLocation": "8233:17:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8225:25:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 64045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8225:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64048,
                  "mutability": "mutable",
                  "name": "proposalData",
                  "nameLocation": "8275:12:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8260:27:88",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 64047,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8260:5:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64051,
                  "mutability": "mutable",
                  "name": "proposalInclusionProof",
                  "nameLocation": "8316:22:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8297:41:88",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 64049,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "8297:7:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 64050,
                    "nodeType": "ArrayTypeName",
                    "src": "8297:9:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64053,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "8363:9:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8348:24:88",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 64052,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8348:5:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8189:189:88"
            },
            "returnParameters": {
              "id": 64061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 64057,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "8414:12:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8406:20:88",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 64056,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8406:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 64060,
                  "mutability": "mutable",
                  "name": "loanTerms",
                  "nameLocation": "8455:9:88",
                  "nodeType": "VariableDeclaration",
                  "scope": 64211,
                  "src": "8428:36:88",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                    "typeString": "struct PWNSimpleLoan.Terms"
                  },
                  "typeName": {
                    "id": 64059,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 64058,
                      "name": "PWNSimpleLoan.Terms",
                      "nameLocations": [
                        "8428:13:88",
                        "8442:5:88"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 61054,
                      "src": "8428:19:88"
                    },
                    "referencedDeclaration": 61054,
                    "src": "8428:19:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Terms_$61054_storage_ptr",
                      "typeString": "struct PWNSimpleLoan.Terms"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8405:60:88"
            },
            "scope": 64212,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 63838,
              "name": "PWNSimpleLoanProposal",
              "nameLocations": [
                "730:21:88"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 65236,
              "src": "730:21:88"
            },
            "id": 63839,
            "nodeType": "InheritanceSpecifier",
            "src": "730:21:88"
          }
        ],
        "canonicalName": "PWNSimpleLoanFungibleProposal",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 63837,
          "nodeType": "StructuredDocumentation",
          "src": "359:328:88",
          "text": " @title PWN Simple Loan Fungible Proposal\n @notice Contract for creating and accepting fungible loan proposals.\n         Proposals are fungible, which means that they are not tied to a specific collateral or credit amount.\n         The amount of collateral and credit is specified during the proposal acceptance."
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          64212,
          65236
        ],
        "name": "PWNSimpleLoanFungibleProposal",
        "nameLocation": "697:29:88",
        "scope": 64213,
        "usedErrors": [
          59971,
          59984,
          60778,
          60785,
          63912,
          63919,
          64666,
          64669,
          64676,
          64681,
          64686,
          64691,
          64698,
          64705,
          66360
        ]
      }
    ],
    "license": "GPL-3.0-only"
  },
  "id": 88
}