Obligation Receipt

The ObligationReceipt contract is used to handle rights and obligations of NFTs held in collateral by the borrower. The holder of an obligation receipt receives the underlying NFT when the loan is repaid and is able to control rights delegation; for example, to receive airdrops or gain access to token-gated events.

Methods

setDelegate()

function setDelegate(uint256 tokenId, address to, bool value)

Sets delegation rights for the underlying of a given obligation receipt tokenId to a given address.

Parameter Name
Type
Description

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

to

address

target address for rights delegation

value

bool

true to grant delegation rights, false to remove

View Methods

exists()

function exists(uint256 tokenId)

Checks if there exists an obligation receipt for a given tokenId.

Parameter Name
Type
Description

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

Returns true if the tokenId exists.

getLoan()

function getLoan(uint256 tokenId)

Retrieves loan data for a given tokenId.

Parameter Name
Type
Description

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

Return

Parameter Name
Type
Description

loan

DataTypes.TokenizedLoan memory

tokenized loan data consisting of the collatateral address, tokenId and loan id

ABI

Obligation Receipts ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "getLoan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.TokenizedLoan",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addressProvider_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isLiquidDelegate_",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "loans",
      "outputs": [
        {
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenizedId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        }
      ],
      "name": "setBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "setDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612817806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103ea578063d547741f146103fd578063e1ec3c6814610410578063e985e9c51461046e57600080fd5b8063a217fddf146103bc578063a22cb465146103c4578063b88d4fde146103d757600080fd5b806390bd6748116100d357806390bd67481461037b57806391d148541461038e57806394d008ef146103a157806395d89b41146103b457600080fd5b80636352211e1461034d5780636c0360eb1461036057806370a082311461036857600080fd5b80632f2ff15d1161016657806342966c681161014057806342966c68146102d65780634f558e79146102e9578063504006ca146102fc57806355f804b31461033a57600080fd5b80632f2ff15d1461029d57806336568abe146102b057806342842e0e146102c357600080fd5b8063081812fc116101a2578063081812fc1461021b578063095ea7b31461024657806323b872dd14610259578063248a9ca31461026c57600080fd5b806301ffc9a7146101c957806303baae35146101f157806306fdde0314610206575b600080fd5b6101dc6101d7366004611eff565b6104aa565b60405190151581526020015b60405180910390f35b6102046101ff366004611fe9565b6104bb565b005b61020e610608565b6040516101e891906120e5565b61022e6102293660046120f8565b61069a565b6040516001600160a01b0390911681526020016101e8565b610204610254366004612111565b6106c1565b61020461026736600461213d565b6107d6565b61028f61027a3660046120f8565b60009081526097602052604090206001015490565b6040519081526020016101e8565b6102046102ab36600461217e565b610807565b6102046102be36600461217e565b61082c565b6102046102d136600461213d565b6108aa565b6102046102e43660046120f8565b6108c5565b6101dc6102f73660046120f8565b6109be565b61030f61030a3660046120f8565b6109dd565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016101e8565b6102046103483660046121ae565b610a4c565b61022e61035b3660046120f8565b610b1b565b61020e610b7b565b61028f6103763660046121e3565b610c09565b610204610389366004612200565b610c8f565b6101dc61039c36600461217e565b610df2565b6102046103af36600461223e565b610e1d565b61020e6110a9565b61028f600081565b6102046103d2366004612297565b6110b8565b6102046103e53660046122cc565b6110c3565b61020e6103f83660046120f8565b6110fb565b61020461040b36600461217e565b611162565b61044961041e3660046120f8565b60cb602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101e8565b6101dc61047c366004612338565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006104b582611187565b92915050565b600054610100900460ff16158080156104db5750600054600160ff909116105b806104f55750303b1580156104f5575060005460ff166001145b61055d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610580576000805461ff0019166101001790555b61058a84846111ac565b610593826111dd565b60c98054861515600160a01b026001600160a81b03199091166001600160a01b038916171790558015610600576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60606065805461061790612366565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612366565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60006106a58261122b565b506000908152606960205260409020546001600160a01b031690565b60006106cc82610b1b565b9050806001600160a01b0316836001600160a01b0316036107395760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610554565b336001600160a01b03821614806107555750610755813361047c565b6107c75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610554565b6107d1838361128a565b505050565b6107e033826112f8565b6107fc5760405162461bcd60e51b8152600401610554906123a0565b6107d1838383611377565b600082815260976020526040902060010154610822816114e8565b6107d183836114f2565b6001600160a01b038116331461089c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610554565b6108a68282611578565b5050565b6107d1838383604051806020016040528060008152506110c3565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c91906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061098a5760405162461bcd60e51b815260040161055491906120e5565b50600081815260cb6020526040812080546001600160a01b031916815560018101829055600201556109bb816115df565b50565b6000818152606760205260408120546001600160a01b031615156104b5565b610a0a604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50600090815260cb6020908152604091829020825160608101845281546001600160a01b03168152600182015492810192909252600201549181019190915290565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac391906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610b115760405162461bcd60e51b815260040161055491906120e5565b506109bb816111dd565b6000818152606760205260408120546001600160a01b0316806104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b60ca8054610b8890612366565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490612366565b8015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505081565b60006001600160a01b038216610c735760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610554565b506001600160a01b031660009081526068602052604090205490565b610c9883610b1b565b6001600160a01b0316336001600160a01b031614610cea5760405162461bcd60e51b815260206004820152600f60248201526e3297b6bab9ba16b13296b7bbb732b960891b6044820152606401610554565b60c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6191906123ed565b600084815260cb6020526040908190208054600190910154915163537a5c3d60e01b81526001600160a01b038681166004830152918216602482015260448101929092528315156064830152919091169063537a5c3d90608401600060405180830381600087803b158015610dd557600080fd5b505af1158015610de9573d6000803e3d6000fd5b50505050505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610ee25760405162461bcd60e51b815260040161055491906120e5565b5060008151116040518060400160405280600381526020016238303160e81b81525090610f225760405162461bcd60e51b815260040161055491906120e5565b50600080600083806020019051810190610f3c919061240a565b604080516060810182526001600160a01b038581168252602080830186815283850186815260008e815260cb90935294909120925183546001600160a01b0319169216919091178255516001820155905160029091015591945092509050610fa5868686611682565b60c954600160a01b900460ff16156106005760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e91906123ed565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b50505050505050505050565b60606066805461061790612366565b6108a63383836116b5565b6110cd33836112f8565b6110e95760405162461bcd60e51b8152600401610554906123a0565b6110f584848484611783565b50505050565b60606111068261122b565b60006111106117b6565b90506000815111611130576040518060200160405280600081525061115b565b8061113a846117c5565b60405160200161114b929190612441565b6040516020818303038152906040525b9392505050565b60008281526097602052604090206001015461117d816114e8565b6107d18383611578565b60006001600160e01b03198216637965db0b60e01b14806104b557506104b582611858565b600054610100900460ff166111d35760405162461bcd60e51b815260040161055490612470565b6108a682826118a8565b60008151116111fb576040518060200160405280600081525061121e565b804660405160200161120e9291906124bb565b6040516020818303038152906040525b60ca906108a69082612533565b6000818152606760205260409020546001600160a01b03166109bb5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112bf82610b1b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061130483610b1b565b9050806001600160a01b0316846001600160a01b0316148061134b57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061136f5750836001600160a01b03166113648461069a565b6001600160a01b0316145b949350505050565b826001600160a01b031661138a82610b1b565b6001600160a01b0316146113b05760405162461bcd60e51b8152600401610554906125f3565b6001600160a01b0382166114125760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b61141f83838360016118e8565b826001600160a01b031661143282610b1b565b6001600160a01b0316146114585760405162461bcd60e51b8152600401610554906125f3565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109bb8133611970565b6114fc8282610df2565b6108a65760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115828282610df2565b156108a65760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115ea82610b1b565b90506115fa8160008460016118e8565b61160382610b1b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61168c83836119c9565b6116996000848484611b62565b6107d15760405162461bcd60e51b815260040161055490612638565b816001600160a01b0316836001600160a01b0316036117165760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610554565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61178e848484611377565b61179a84848484611b62565b6110f55760405162461bcd60e51b815260040161055490612638565b606060ca805461061790612366565b606060006117d283611c63565b600101905060008167ffffffffffffffff8111156117f2576117f2611f46565b6040519080825280601f01601f19166020018201604052801561181c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461182657509392505050565b60006001600160e01b031982166380ac58cd60e01b148061188957506001600160e01b03198216635b5e139f60e01b145b806104b557506301ffc9a760e01b6001600160e01b03198316146104b5565b600054610100900460ff166118cf5760405162461bcd60e51b815260040161055490612470565b60656118db8382612533565b5060666107d18282612533565b60018111156110f5576001600160a01b0384161561192e576001600160a01b038416600090815260686020526040812080548392906119289084906126a0565b90915550505b6001600160a01b038316156110f5576001600160a01b038316600090815260686020526040812080548392906119659084906126b3565b909155505050505050565b61197a8282610df2565b6108a65761198781611d3b565b611992836020611d4d565b6040516020016119a39291906126c6565b60408051601f198184030181529082905262461bcd60e51b8252610554916004016120e5565b6001600160a01b038216611a1f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610554565b6000818152606760205260409020546001600160a01b031615611a845760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b611a926000838360016118e8565b6000818152606760205260409020546001600160a01b031615611af75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611c5857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ba690339089908890889060040161273b565b6020604051808303816000875af1925050508015611be1575060408051601f3d908101601f19168201909252611bde91810190612778565b60015b611c3e573d808015611c0f576040519150601f19603f3d011682016040523d82523d6000602084013e611c14565b606091505b508051600003611c365760405162461bcd60e51b815260040161055490612638565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061136f565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ca25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611cce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611cec57662386f26fc10000830492506010015b6305f5e1008310611d04576305f5e100830492506008015b6127108310611d1857612710830492506004015b60648310611d2a576064830492506002015b600a83106104b55760010192915050565b60606104b56001600160a01b03831660145b60606000611d5c836002612795565b611d679060026126b3565b67ffffffffffffffff811115611d7f57611d7f611f46565b6040519080825280601f01601f191660200182016040528015611da9576020820181803683370190505b509050600360fc1b81600081518110611dc457611dc46127b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611df357611df36127b4565b60200101906001600160f81b031916908160001a9053506000611e17846002612795565b611e229060016126b3565b90505b6001811115611e9a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e5657611e566127b4565b1a60f81b828281518110611e6c57611e6c6127b4565b60200101906001600160f81b031916908160001a90535060049490941c93611e93816127ca565b9050611e25565b50831561115b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610554565b6001600160e01b0319811681146109bb57600080fd5b600060208284031215611f1157600080fd5b813561115b81611ee9565b6001600160a01b03811681146109bb57600080fd5b80358015158114611f4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f6d57600080fd5b813567ffffffffffffffff80821115611f8857611f88611f46565b604051601f8301601f19908116603f01168101908282118183101715611fb057611fb0611f46565b81604052838152866020858801011115611fc957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561200157600080fd5b853561200c81611f1c565b945061201a60208701611f31565b9350604086013567ffffffffffffffff8082111561203757600080fd5b61204389838a01611f5c565b9450606088013591508082111561205957600080fd5b61206589838a01611f5c565b9350608088013591508082111561207b57600080fd5b5061208888828901611f5c565b9150509295509295909350565b60005b838110156120b0578181015183820152602001612098565b50506000910152565b600081518084526120d1816020860160208601612095565b601f01601f19169290920160200192915050565b60208152600061115b60208301846120b9565b60006020828403121561210a57600080fd5b5035919050565b6000806040838503121561212457600080fd5b823561212f81611f1c565b946020939093013593505050565b60008060006060848603121561215257600080fd5b833561215d81611f1c565b9250602084013561216d81611f1c565b929592945050506040919091013590565b6000806040838503121561219157600080fd5b8235915060208301356121a381611f1c565b809150509250929050565b6000602082840312156121c057600080fd5b813567ffffffffffffffff8111156121d757600080fd5b61136f84828501611f5c565b6000602082840312156121f557600080fd5b813561115b81611f1c565b60008060006060848603121561221557600080fd5b83359250602084013561222781611f1c565b915061223560408501611f31565b90509250925092565b60008060006060848603121561225357600080fd5b833561225e81611f1c565b925060208401359150604084013567ffffffffffffffff81111561228157600080fd5b61228d86828701611f5c565b9150509250925092565b600080604083850312156122aa57600080fd5b82356122b581611f1c565b91506122c360208401611f31565b90509250929050565b600080600080608085870312156122e257600080fd5b84356122ed81611f1c565b935060208501356122fd81611f1c565b925060408501359150606085013567ffffffffffffffff81111561232057600080fd5b61232c87828801611f5c565b91505092959194509250565b6000806040838503121561234b57600080fd5b823561235681611f1c565b915060208301356121a381611f1c565b600181811c9082168061237a57607f821691505b60208210810361239a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6000602082840312156123ff57600080fd5b815161115b81611f1c565b60008060006060848603121561241f57600080fd5b835161242a81611f1c565b602085015160409095015190969495509392505050565b60008351612453818460208801612095565b835190830190612467818360208801612095565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600083516124cd818460208801612095565b602f60f81b92018281526001810193909352506021820152602201919050565b601f8211156107d157600081815260208120601f850160051c810160208610156125145750805b601f850160051c820191505b8181101561060057828155600101612520565b815167ffffffffffffffff81111561254d5761254d611f46565b6125618161255b8454612366565b846124ed565b602080601f831160018114612596576000841561257e5750858301515b600019600386901b1c1916600185901b178555610600565b600085815260208120601f198616915b828110156125c5578886015182559484019460019091019084016125a6565b50858210156125e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b5576104b561268a565b808201808211156104b5576104b561268a565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516126fe816017850160208801612095565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161272f816028840160208801612095565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276e908301846120b9565b9695505050505050565b60006020828403121561278a57600080fd5b815161115b81611ee9565b60008160001904831182151516156127af576127af61268a565b500290565b634e487b7160e01b600052603260045260246000fd5b6000816127d9576127d961268a565b50600019019056fea2646970667358221220d4068efbf84400b60cda169f6074a2a96ca499a2d6aa63d578341ba5e624fd2f64736f6c63430008100033",
    "sourceMap": "198:1328:159:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103ea578063d547741f146103fd578063e1ec3c6814610410578063e985e9c51461046e57600080fd5b8063a217fddf146103bc578063a22cb465146103c4578063b88d4fde146103d757600080fd5b806390bd6748116100d357806390bd67481461037b57806391d148541461038e57806394d008ef146103a157806395d89b41146103b457600080fd5b80636352211e1461034d5780636c0360eb1461036057806370a082311461036857600080fd5b80632f2ff15d1161016657806342966c681161014057806342966c68146102d65780634f558e79146102e9578063504006ca146102fc57806355f804b31461033a57600080fd5b80632f2ff15d1461029d57806336568abe146102b057806342842e0e146102c357600080fd5b8063081812fc116101a2578063081812fc1461021b578063095ea7b31461024657806323b872dd14610259578063248a9ca31461026c57600080fd5b806301ffc9a7146101c957806303baae35146101f157806306fdde0314610206575b600080fd5b6101dc6101d7366004611eff565b6104aa565b60405190151581526020015b60405180910390f35b6102046101ff366004611fe9565b6104bb565b005b61020e610608565b6040516101e891906120e5565b61022e6102293660046120f8565b61069a565b6040516001600160a01b0390911681526020016101e8565b610204610254366004612111565b6106c1565b61020461026736600461213d565b6107d6565b61028f61027a3660046120f8565b60009081526097602052604090206001015490565b6040519081526020016101e8565b6102046102ab36600461217e565b610807565b6102046102be36600461217e565b61082c565b6102046102d136600461213d565b6108aa565b6102046102e43660046120f8565b6108c5565b6101dc6102f73660046120f8565b6109be565b61030f61030a3660046120f8565b6109dd565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016101e8565b6102046103483660046121ae565b610a4c565b61022e61035b3660046120f8565b610b1b565b61020e610b7b565b61028f6103763660046121e3565b610c09565b610204610389366004612200565b610c8f565b6101dc61039c36600461217e565b610df2565b6102046103af36600461223e565b610e1d565b61020e6110a9565b61028f600081565b6102046103d2366004612297565b6110b8565b6102046103e53660046122cc565b6110c3565b61020e6103f83660046120f8565b6110fb565b61020461040b36600461217e565b611162565b61044961041e3660046120f8565b60cb602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101e8565b6101dc61047c366004612338565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006104b582611187565b92915050565b600054610100900460ff16158080156104db5750600054600160ff909116105b806104f55750303b1580156104f5575060005460ff166001145b61055d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610580576000805461ff0019166101001790555b61058a84846111ac565b610593826111dd565b60c98054861515600160a01b026001600160a81b03199091166001600160a01b038916171790558015610600576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60606065805461061790612366565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612366565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60006106a58261122b565b506000908152606960205260409020546001600160a01b031690565b60006106cc82610b1b565b9050806001600160a01b0316836001600160a01b0316036107395760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610554565b336001600160a01b03821614806107555750610755813361047c565b6107c75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610554565b6107d1838361128a565b505050565b6107e033826112f8565b6107fc5760405162461bcd60e51b8152600401610554906123a0565b6107d1838383611377565b600082815260976020526040902060010154610822816114e8565b6107d183836114f2565b6001600160a01b038116331461089c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610554565b6108a68282611578565b5050565b6107d1838383604051806020016040528060008152506110c3565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c91906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061098a5760405162461bcd60e51b815260040161055491906120e5565b50600081815260cb6020526040812080546001600160a01b031916815560018101829055600201556109bb816115df565b50565b6000818152606760205260408120546001600160a01b031615156104b5565b610a0a604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50600090815260cb6020908152604091829020825160608101845281546001600160a01b03168152600182015492810192909252600201549181019190915290565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac391906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610b115760405162461bcd60e51b815260040161055491906120e5565b506109bb816111dd565b6000818152606760205260408120546001600160a01b0316806104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b60ca8054610b8890612366565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490612366565b8015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505081565b60006001600160a01b038216610c735760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610554565b506001600160a01b031660009081526068602052604090205490565b610c9883610b1b565b6001600160a01b0316336001600160a01b031614610cea5760405162461bcd60e51b815260206004820152600f60248201526e3297b6bab9ba16b13296b7bbb732b960891b6044820152606401610554565b60c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6191906123ed565b600084815260cb6020526040908190208054600190910154915163537a5c3d60e01b81526001600160a01b038681166004830152918216602482015260448101929092528315156064830152919091169063537a5c3d90608401600060405180830381600087803b158015610dd557600080fd5b505af1158015610de9573d6000803e3d6000fd5b50505050505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610ee25760405162461bcd60e51b815260040161055491906120e5565b5060008151116040518060400160405280600381526020016238303160e81b81525090610f225760405162461bcd60e51b815260040161055491906120e5565b50600080600083806020019051810190610f3c919061240a565b604080516060810182526001600160a01b038581168252602080830186815283850186815260008e815260cb90935294909120925183546001600160a01b0319169216919091178255516001820155905160029091015591945092509050610fa5868686611682565b60c954600160a01b900460ff16156106005760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e91906123ed565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b50505050505050505050565b60606066805461061790612366565b6108a63383836116b5565b6110cd33836112f8565b6110e95760405162461bcd60e51b8152600401610554906123a0565b6110f584848484611783565b50505050565b60606111068261122b565b60006111106117b6565b90506000815111611130576040518060200160405280600081525061115b565b8061113a846117c5565b60405160200161114b929190612441565b6040516020818303038152906040525b9392505050565b60008281526097602052604090206001015461117d816114e8565b6107d18383611578565b60006001600160e01b03198216637965db0b60e01b14806104b557506104b582611858565b600054610100900460ff166111d35760405162461bcd60e51b815260040161055490612470565b6108a682826118a8565b60008151116111fb576040518060200160405280600081525061121e565b804660405160200161120e9291906124bb565b6040516020818303038152906040525b60ca906108a69082612533565b6000818152606760205260409020546001600160a01b03166109bb5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112bf82610b1b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061130483610b1b565b9050806001600160a01b0316846001600160a01b0316148061134b57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061136f5750836001600160a01b03166113648461069a565b6001600160a01b0316145b949350505050565b826001600160a01b031661138a82610b1b565b6001600160a01b0316146113b05760405162461bcd60e51b8152600401610554906125f3565b6001600160a01b0382166114125760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b61141f83838360016118e8565b826001600160a01b031661143282610b1b565b6001600160a01b0316146114585760405162461bcd60e51b8152600401610554906125f3565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109bb8133611970565b6114fc8282610df2565b6108a65760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115828282610df2565b156108a65760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115ea82610b1b565b90506115fa8160008460016118e8565b61160382610b1b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61168c83836119c9565b6116996000848484611b62565b6107d15760405162461bcd60e51b815260040161055490612638565b816001600160a01b0316836001600160a01b0316036117165760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610554565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61178e848484611377565b61179a84848484611b62565b6110f55760405162461bcd60e51b815260040161055490612638565b606060ca805461061790612366565b606060006117d283611c63565b600101905060008167ffffffffffffffff8111156117f2576117f2611f46565b6040519080825280601f01601f19166020018201604052801561181c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461182657509392505050565b60006001600160e01b031982166380ac58cd60e01b148061188957506001600160e01b03198216635b5e139f60e01b145b806104b557506301ffc9a760e01b6001600160e01b03198316146104b5565b600054610100900460ff166118cf5760405162461bcd60e51b815260040161055490612470565b60656118db8382612533565b5060666107d18282612533565b60018111156110f5576001600160a01b0384161561192e576001600160a01b038416600090815260686020526040812080548392906119289084906126a0565b90915550505b6001600160a01b038316156110f5576001600160a01b038316600090815260686020526040812080548392906119659084906126b3565b909155505050505050565b61197a8282610df2565b6108a65761198781611d3b565b611992836020611d4d565b6040516020016119a39291906126c6565b60408051601f198184030181529082905262461bcd60e51b8252610554916004016120e5565b6001600160a01b038216611a1f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610554565b6000818152606760205260409020546001600160a01b031615611a845760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b611a926000838360016118e8565b6000818152606760205260409020546001600160a01b031615611af75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611c5857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ba690339089908890889060040161273b565b6020604051808303816000875af1925050508015611be1575060408051601f3d908101601f19168201909252611bde91810190612778565b60015b611c3e573d808015611c0f576040519150601f19603f3d011682016040523d82523d6000602084013e611c14565b606091505b508051600003611c365760405162461bcd60e51b815260040161055490612638565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061136f565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ca25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611cce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611cec57662386f26fc10000830492506010015b6305f5e1008310611d04576305f5e100830492506008015b6127108310611d1857612710830492506004015b60648310611d2a576064830492506002015b600a83106104b55760010192915050565b60606104b56001600160a01b03831660145b60606000611d5c836002612795565b611d679060026126b3565b67ffffffffffffffff811115611d7f57611d7f611f46565b6040519080825280601f01601f191660200182016040528015611da9576020820181803683370190505b509050600360fc1b81600081518110611dc457611dc46127b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611df357611df36127b4565b60200101906001600160f81b031916908160001a9053506000611e17846002612795565b611e229060016126b3565b90505b6001811115611e9a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e5657611e566127b4565b1a60f81b828281518110611e6c57611e6c6127b4565b60200101906001600160f81b031916908160001a90535060049490941c93611e93816127ca565b9050611e25565b50831561115b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610554565b6001600160e01b0319811681146109bb57600080fd5b600060208284031215611f1157600080fd5b813561115b81611ee9565b6001600160a01b03811681146109bb57600080fd5b80358015158114611f4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f6d57600080fd5b813567ffffffffffffffff80821115611f8857611f88611f46565b604051601f8301601f19908116603f01168101908282118183101715611fb057611fb0611f46565b81604052838152866020858801011115611fc957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561200157600080fd5b853561200c81611f1c565b945061201a60208701611f31565b9350604086013567ffffffffffffffff8082111561203757600080fd5b61204389838a01611f5c565b9450606088013591508082111561205957600080fd5b61206589838a01611f5c565b9350608088013591508082111561207b57600080fd5b5061208888828901611f5c565b9150509295509295909350565b60005b838110156120b0578181015183820152602001612098565b50506000910152565b600081518084526120d1816020860160208601612095565b601f01601f19169290920160200192915050565b60208152600061115b60208301846120b9565b60006020828403121561210a57600080fd5b5035919050565b6000806040838503121561212457600080fd5b823561212f81611f1c565b946020939093013593505050565b60008060006060848603121561215257600080fd5b833561215d81611f1c565b9250602084013561216d81611f1c565b929592945050506040919091013590565b6000806040838503121561219157600080fd5b8235915060208301356121a381611f1c565b809150509250929050565b6000602082840312156121c057600080fd5b813567ffffffffffffffff8111156121d757600080fd5b61136f84828501611f5c565b6000602082840312156121f557600080fd5b813561115b81611f1c565b60008060006060848603121561221557600080fd5b83359250602084013561222781611f1c565b915061223560408501611f31565b90509250925092565b60008060006060848603121561225357600080fd5b833561225e81611f1c565b925060208401359150604084013567ffffffffffffffff81111561228157600080fd5b61228d86828701611f5c565b9150509250925092565b600080604083850312156122aa57600080fd5b82356122b581611f1c565b91506122c360208401611f31565b90509250929050565b600080600080608085870312156122e257600080fd5b84356122ed81611f1c565b935060208501356122fd81611f1c565b925060408501359150606085013567ffffffffffffffff81111561232057600080fd5b61232c87828801611f5c565b91505092959194509250565b6000806040838503121561234b57600080fd5b823561235681611f1c565b915060208301356121a381611f1c565b600181811c9082168061237a57607f821691505b60208210810361239a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6000602082840312156123ff57600080fd5b815161115b81611f1c565b60008060006060848603121561241f57600080fd5b835161242a81611f1c565b602085015160409095015190969495509392505050565b60008351612453818460208801612095565b835190830190612467818360208801612095565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600083516124cd818460208801612095565b602f60f81b92018281526001810193909352506021820152602201919050565b601f8211156107d157600081815260208120601f850160051c810160208610156125145750805b601f850160051c820191505b8181101561060057828155600101612520565b815167ffffffffffffffff81111561254d5761254d611f46565b6125618161255b8454612366565b846124ed565b602080601f831160018114612596576000841561257e5750858301515b600019600386901b1c1916600185901b178555610600565b600085815260208120601f198616915b828110156125c5578886015182559484019460019091019084016125a6565b50858210156125e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b5576104b561268a565b808201808211156104b5576104b561268a565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516126fe816017850160208801612095565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161272f816028840160208801612095565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276e908301846120b9565b9695505050505050565b60006020828403121561278a57600080fd5b815161115b81611ee9565b60008160001904831182151516156127af576127af61268a565b500290565b634e487b7160e01b600052603260045260246000fd5b6000816127d9576127d961268a565b50600019019056fea2646970667358221220d4068efbf84400b60cda169f6074a2a96ca499a2d6aa63d578341ba5e624fd2f64736f6c63430008100033",
    "sourceMap": "198:1328:159:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3310:198:164;;;;;;:::i;:::-;;:::i;:::-;;;565:14:187;;558:22;540:41;;528:2;513:18;3310:198:164;;;;;;;;1066:407;;;;;;:::i;:::-;;:::i;:::-;;2932:98:28;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3807:32:187;;;3789:51;;3777:2;3762:18;4407:167:28;3643:203:187;3929:417:28;;;;;;:::i;:::-;;:::i;5084:326::-;;;;;;:::i;:::-;;:::i;4708:129:16:-;;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;;;;4963:25:187;;;4951:2;4936:18;4708:129:16;4817:177:187;5133:145:16;;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;:::i;:::-;;:::i;5476:179:28:-;;;;;;:::i;:::-;;:::i;2615:129:164:-;;;;;;:::i;:::-;;:::i;2880:102::-;;;;;;:::i;:::-;;:::i;2988:127::-;;;;;;:::i;:::-;;:::i;:::-;;;;5551:13:187;;-1:-1:-1;;;;;5547:39:187;5529:58;;5643:4;5631:17;;;5625:24;5603:20;;;5596:54;5694:17;;;5688:24;5666:20;;;5659:54;5517:2;5502:18;2988:127:164;5319:400:187;2750:121:164;;;;;;:::i;:::-;;:::i;2651:219:28:-;;;;;;:::i;:::-;;:::i;952:21:164:-;;;:::i;2390:204:28:-;;;;;;:::i;:::-;;:::i;627:354:159:-;;;;;;:::i;:::-;;:::i;3203:145:16:-;;;;;;:::i;:::-;;:::i;1793:816:164:-;;;;;;:::i;:::-;;:::i;3094:102:28:-;;;:::i;2324:49:16:-;;2369:4;2324:49;;4641:153:28;;;;;;:::i;:::-;;:::i;5721:314::-;;;;;;:::i;:::-;;:::i;3262:276::-;;;;;;:::i;:::-;;:::i;5558:147:16:-;;;;;;:::i;:::-;;:::i;1003:56:164:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1003:56:164;;;;;;;;;;;-1:-1:-1;;;;;8613:32:187;;;8595:51;;8677:2;8662:18;;8655:34;;;;8705:18;;;8698:34;8583:2;8568:18;1003:56:164;8393:345:187;4860:162:28;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;3310:198:164;3441:4;3464:37;3488:12;3464:23;:37::i;:::-;3457:44;3310:198;-1:-1:-1;;3310:198:164:o;1066:407::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;9338:2:187;3314:201:18;;;9320:21:187;9377:2;9357:18;;;9350:30;9416:34;9396:18;;;9389:62;-1:-1:-1;;;9467:18:187;;;9460:44;9521:19;;3314:201:18;;;;;;;;;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;1288:29:164::1;1302:5;1309:7;1288:13;:29::i;:::-;1327:27;1339:14;1327:11;:27::i;:::-;1364:16;:54:::0;;1428:38;::::1;;-1:-1:-1::0;;;1428:38:164::1;-1:-1:-1::0;;;;;;1428:38:164;;;-1:-1:-1;;;;;1364:54:164;::::1;1428:38:::0;::::1;::::0;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;9703:36:187;;3710:14:18;;9691:2:187;9676:18;3710:14:18;;;;;;;3636:99;3258:483;1066:407:164;;;;;:::o;2932:98:28:-;2986:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:28;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:28;;4407:167::o;3929:417::-;4009:13;4025:34;4051:7;4025:25;:34::i;:::-;4009:50;;4083:5;-1:-1:-1;;;;;4077:11:28;:2;-1:-1:-1;;;;;4077:11:28;;4069:57;;;;-1:-1:-1;;;4069:57:28;;10337:2:187;4069:57:28;;;10319:21:187;10376:2;10356:18;;;10349:30;10415:34;10395:18;;;10388:62;-1:-1:-1;;;10466:18:187;;;10459:31;10507:19;;4069:57:28;10135:397:187;4069:57:28;929:10:33;-1:-1:-1;;;;;4158:21:28;;;;:62;;-1:-1:-1;4183:37:28;4200:5;929:10:33;4860:162:28;:::i;4183:37::-;4137:170;;;;-1:-1:-1;;;4137:170:28;;10739:2:187;4137:170:28;;;10721:21:187;10778:2;10758:18;;;10751:30;10817:34;10797:18;;;10790:62;10888:31;10868:18;;;10861:59;10937:19;;4137:170:28;10537:425:187;4137:170:28;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3999:347;3929:417;;:::o;5084:326::-;5273:41;929:10:33;5306:7:28;5273:18;:41::i;:::-;5265:99;;;;-1:-1:-1;;;5265:99:28;;;;;;;:::i;:::-;5375:28;5385:4;5391:2;5395:7;5375:9;:28::i;5133:145:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;6242:214::-:0;-1:-1:-1;;;;;6337:23:16;;929:10:33;6337:23:16;6329:83;;;;-1:-1:-1;;;6329:83:16;;11583:2:187;6329:83:16;;;11565:21:187;11622:2;11602:18;;;11595:30;11661:34;11641:18;;;11634:62;-1:-1:-1;;;11712:18:187;;;11705:45;11767:19;;6329:83:16;11381:411:187;6329:83:16;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;5476:179:28:-;5609:39;5626:4;5632:2;5636:7;5609:39;;;;;;;;;;;;:16;:39::i;2615:129:164:-;1540:16;;;;;;;;;-1:-1:-1;;;;;1540:16:164;-1:-1:-1;;;;;1540:31:164;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1524:49:164;929:10:33;-1:-1:-1;;;;;1524:49:164;;1575:37;;;;;;;;;;;;;-1:-1:-1;;;1575:37:164;;;1516:97;;;;;-1:-1:-1;;;1516:97:164;;;;;;;;:::i;:::-;-1:-1:-1;2697:15:164::1;::::0;;;:5:::1;:15;::::0;;;;2690:22;;-1:-1:-1;;;;;;2690:22:164::1;::::0;;;;::::1;::::0;;;::::1;;::::0;2722:15:::1;2703:8:::0;2722:5:::1;:15::i;:::-;2615:129:::0;:::o;2880:102::-;2935:4;7402:16:28;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;;2958:17:164;7728:126:28;2988:127:164;3044:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3044:30:164;-1:-1:-1;3093:15:164;;;;:5;:15;;;;;;;;;3086:22;;;;;;;;;-1:-1:-1;;;;;3086:22:164;;;;;;;;;;;;;;;;;;;;;;;;;2988:127::o;2750:121::-;1699:16;;;;;;;;;-1:-1:-1;;;;;1699:16:164;-1:-1:-1;;;;;1699:32:164;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1683:50:164;929:10:33;-1:-1:-1;;;;;1683:50:164;;1735:33;;;;;;;;;;;;;-1:-1:-1;;;1735:33:164;;;1675:94;;;;;-1:-1:-1;;;1675:94:164;;;;;;;;:::i;:::-;;2837:27:::1;2849:14;2837:11;:27::i;2651:219:28:-:0;2723:7;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;;2785:56;;;;-1:-1:-1;;;2785:56:28;;12255:2:187;2785:56:28;;;12237:21:187;12294:2;12274:18;;;12267:30;-1:-1:-1;;;12313:18:187;;;12306:54;12377:18;;2785:56:28;12053:348:187;952:21:164;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2390:204:28:-;2462:7;-1:-1:-1;;;;;2489:19:28;;2481:73;;;;-1:-1:-1;;;2481:73:28;;12608:2:187;2481:73:28;;;12590:21:187;12647:2;12627:18;;;12620:30;12686:34;12666:18;;;12659:62;-1:-1:-1;;;12737:18:187;;;12730:39;12786:19;;2481:73:28;12406:405:187;2481:73:28;-1:-1:-1;;;;;;2571:16:28;;;;;:9;:16;;;;;;;2390:204::o;627:354:159:-;730:16;738:7;730;:16::i;:::-;-1:-1:-1;;;;;716:30:159;:10;-1:-1:-1;;;;;716:30:159;;708:58;;;;-1:-1:-1;;;708:58:159;;13018:2:187;708:58:159;;;13000:21:187;13057:2;13037:18;;;13030:30;-1:-1:-1;;;13076:18:187;;;13069:45;13131:18;;708:58:159;12816:339:187;708:58:159;796:16;;;;;;;;;-1:-1:-1;;;;;796:16:159;-1:-1:-1;;;;;796:38:159;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;884:14;;;;:5;:14;;;;;;;:25;;;923:22;;;;776:198;;-1:-1:-1;;;776:198:159;;-1:-1:-1;;;;;13441:15:187;;;776:198:159;;;13423:34:187;884:25:159;;;13473:18:187;;;13466:43;13525:18;;;13518:34;;;;13595:14;;13588:22;13568:18;;;13561:50;776:78:159;;;;;;;13357:19:187;;776:198:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;627:354;;;:::o;3203:145:16:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:16;;;;;;;;;;;;;;;3203:145::o;1793:816:164:-;1540:16;;;;;;;;;-1:-1:-1;;;;;1540:16:164;-1:-1:-1;;;;;1540:31:164;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1524:49:164;929:10:33;-1:-1:-1;;;;;1524:49:164;;1575:37;;;;;;;;;;;;;-1:-1:-1;;;1575:37:164;;;1516:97;;;;;-1:-1:-1;;;1516:97:164;;;;;;;;:::i;:::-;;1922:1:::1;1907:5;:12;:16;1925:29;;;;;;;;;;;;;-1:-1:-1::0;;;1925:29:164::1;;::::0;1899:56:::1;;;;;-1:-1:-1::0;;;1899:56:164::1;;;;;;;;:::i;:::-;;1979:18;2011:15:::0;2040:14:::1;2079:5;2068:46;;;;;;;;;;;;:::i;:::-;2146:125;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;2146:125:164;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;2124:19:164;;;:5:::1;:19:::0;;;;;;;:147;;;;-1:-1:-1;;;;;;2124:147:164::1;::::0;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;2124:147:164;::::1;::::0;;;::::1;::::0;;::::1;::::0;2146:125;;-1:-1:-1;2146:125:164;-1:-1:-1;2146:125:164;-1:-1:-1;2282:37:164::1;2292:5:::0;2124:19;2313:5;2282:9:::1;:37::i;:::-;2334:17;::::0;-1:-1:-1;;;2334:17:164;::::1;;;2330:273;;;2422:16;;;;;;;;;-1:-1:-1::0;;;;;2422:16:164::1;-1:-1:-1::0;;;;;2422:38:164::1;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2402:190;::::0;-1:-1:-1;;;2402:190:164;;-1:-1:-1;;;;;13441:15:187;;;2402:190:164::1;::::0;::::1;13423:34:187::0;13493:15;;;13473:18;;;13466:43;13525:18;;;13518:34;;;2574:4:164::1;13568:18:187::0;;;13561:50;2402:78:164;;;::::1;::::0;::::1;::::0;13357:19:187;;2402:190:164::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1889:720;;;1793:816:::0;;;:::o;3094:102:28:-;3150:13;3182:7;3175:14;;;;;:::i;4641:153::-;4735:52;929:10:33;4768:8:28;4778;4735:18;:52::i;5721:314::-;5889:41;929:10:33;5922:7:28;5889:18;:41::i;:::-;5881:99;;;;-1:-1:-1;;;5881:99:28;;;;;;;:::i;:::-;5990:38;6004:4;6010:2;6014:7;6023:4;5990:13;:38::i;:::-;5721:314;;;;:::o;3262:276::-;3335:13;3360:23;3375:7;3360:14;:23::i;:::-;3394:21;3418:10;:8;:10::i;:::-;3394:34;;3469:1;3451:7;3445:21;:25;:86;;;;;;;;;;;;;;;;;3497:7;3506:18;:7;:16;:18::i;:::-;3480:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3445:86;3438:93;3262:276;-1:-1:-1;;;3262:276:28:o;5558:147:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2903:213::-:0;2988:4;-1:-1:-1;;;;;;3011:58:16;;-1:-1:-1;;;3011:58:16;;:98;;;3073:36;3097:11;3073:23;:36::i;1605:149:28:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1708:39:28::1;1732:5;1739:7;1708:23;:39::i;3618:215:164:-:0;3729:1;3704:14;3698:28;:32;:128;;;;;;;;;;;;;;;;;3769:14;3790:13;3752:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3698:128;3688:7;;:138;;:7;:138;:::i;14004:133:28:-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;14077:53;;;;-1:-1:-1;;;14077:53:28;;12255:2:187;14077:53:28;;;12237:21:187;12294:2;12274:18;;;12267:30;-1:-1:-1;;;12313:18:187;;;12306:54;12377:18;;14077:53:28;12053:348:187;13295:182:28;13369:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;13369:29:28;-1:-1:-1;;;;;13369:29:28;;;;;;;;:24;;13422:34;13369:24;13422:25;:34::i;:::-;-1:-1:-1;;;;;13413:57:28;;;;;;;;;;;13295:182;;:::o;8012:272::-;8105:4;8121:13;8137:34;8163:7;8137:25;:34::i;:::-;8121:50;;8200:5;-1:-1:-1;;;;;8189:16:28;:7;-1:-1:-1;;;;;8189:16:28;;:52;;;-1:-1:-1;;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;8209:32;8189:87;;;;8269:7;-1:-1:-1;;;;;8245:31:28;:20;8257:7;8245:11;:20::i;:::-;-1:-1:-1;;;;;8245:31:28;;8189:87;8181:96;8012:272;-1:-1:-1;;;;8012:272:28:o;11928:1255::-;12093:4;-1:-1:-1;;;;;12055:42:28;:34;12081:7;12055:25;:34::i;:::-;-1:-1:-1;;;;;12055:42:28;;12047:92;;;;-1:-1:-1;;;12047:92:28;;;;;;;:::i;:::-;-1:-1:-1;;;;;12157:16:28;;12149:65;;;;-1:-1:-1;;;12149:65:28;;18414:2:187;12149:65:28;;;18396:21:187;18453:2;18433:18;;;18426:30;18492:34;18472:18;;;18465:62;-1:-1:-1;;;18543:18:187;;;18536:34;18587:19;;12149:65:28;18212:400:187;12149:65:28;12225:42;12246:4;12252:2;12256:7;12265:1;12225:20;:42::i;:::-;12405:4;-1:-1:-1;;;;;12367:42:28;:34;12393:7;12367:25;:34::i;:::-;-1:-1:-1;;;;;12367:42:28;;12359:92;;;;-1:-1:-1;;;12359:92:28;;;;;;;:::i;:::-;12520:24;;;;:15;:24;;;;;;;;12513:31;;-1:-1:-1;;;;;;12513:31:28;;;;;;-1:-1:-1;;;;;12988:15:28;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12988:20:28;;;13022:13;;;;;;;;;:18;;12513:31;13022:18;;;13060:16;;;:7;:16;;;;;;:21;;;;;;;;;;13097:27;;12536:7;;13097:27;;;3999:347;3929:417;;:::o;3642:103:16:-;3708:30;3719:4;929:10:33;3708::16;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:16;;;;;;;;;:36;;-1:-1:-1;;7912:36:16;7944:4;7912:36;;;7994:12;929:10:33;;850:96;7994:12:16;-1:-1:-1;;;;;7967:40:16;7985:7;-1:-1:-1;;;;;7967:40:16;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:16;;;;;;;;;;:37;;-1:-1:-1;;8316:37:16;;;8372:40;929:10:33;;8316:12:16;;8372:40;;8348:5;8372:40;8195:234;;:::o;10820:784:28:-;10879:13;10895:34;10921:7;10895:25;:34::i;:::-;10879:50;;10940:51;10961:5;10976:1;10980:7;10989:1;10940:20;:51::i;:::-;11101:34;11127:7;11101:25;:34::i;:::-;11180:24;;;;:15;:24;;;;;;;;11173:31;;-1:-1:-1;;;;;;11173:31:28;;;;;;-1:-1:-1;;;;;11420:16:28;;;;;:9;:16;;;;;:21;;-1:-1:-1;;11420:21:28;;;11468:16;;;:7;:16;;;;;;11461:23;;;;;;;11500:36;11093:42;;-1:-1:-1;11196:7:28;;11500:36;;11180:24;;11500:36;6242:214:16;;:::o;8943:309:28:-;9067:18;9073:2;9077:7;9067:5;:18::i;:::-;9116:53;9147:1;9151:2;9155:7;9164:4;9116:22;:53::i;:::-;9095:150;;;;-1:-1:-1;;;9095:150:28;;;;;;;:::i;13613:307::-;13763:8;-1:-1:-1;;;;;13754:17:28;:5;-1:-1:-1;;;;;13754:17:28;;13746:55;;;;-1:-1:-1;;;13746:55:28;;19238:2:187;13746:55:28;;;19220:21:187;19277:2;19257:18;;;19250:30;19316:27;19296:18;;;19289:55;19361:18;;13746:55:28;19036:349:187;13746:55:28;-1:-1:-1;;;;;13811:25:28;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13811:46:28;;;;;;;;;;13872:41;;540::187;;;13872::28;;513:18:187;13872:41:28;;;;;;;13613:307;;;:::o;6896:305::-;7046:28;7056:4;7062:2;7066:7;7046:9;:28::i;:::-;7092:47;7115:4;7121:2;7125:7;7134:4;7092:22;:47::i;:::-;7084:110;;;;-1:-1:-1;;;7084:110:28;;;;;;;:::i;3514:98:164:-;3566:13;3598:7;3591:14;;;;;:::i;437:707:35:-;493:13;542:14;559:28;581:5;559:21;:28::i;:::-;590:1;559:32;542:49;;605:20;639:6;628:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:18:35;-1:-1:-1;605:41:35;-1:-1:-1;766:28:35;;;782:2;766:28;821:280;-1:-1:-1;;852:5:35;-1:-1:-1;;;986:2:35;975:14;;970:30;852:5;957:44;1045:2;1036:11;;;-1:-1:-1;1065:21:35;821:280;1065:21;-1:-1:-1;1121:6:35;437:707;-1:-1:-1;;;437:707:35:o;1987:344:28:-;2111:4;-1:-1:-1;;;;;;2146:51:28;;-1:-1:-1;;;2146:51:28;;:126;;-1:-1:-1;;;;;;;2213:59:28;;-1:-1:-1;;;2213:59:28;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:36;;;2288:36:28;1060:166:36;1760:160:28;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1873:5:28::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:28::1;:17;1906:7:::0;1896;:17:::1;:::i;16258:396::-:0;16442:1;16430:9;:13;16426:222;;;-1:-1:-1;;;;;16463:18:28;;;16459:85;;-1:-1:-1;;;;;16501:15:28;;;;;;:9;:15;;;;;:28;;16520:9;;16501:15;:28;;16520:9;;16501:28;:::i;:::-;;;;-1:-1:-1;;16459:85:28;-1:-1:-1;;;;;16561:16:28;;;16557:81;;-1:-1:-1;;;;;16597:13:28;;;;;;:9;:13;;;;;:26;;16614:9;;16597:13;:26;;16614:9;;16597:26;:::i;:::-;;;;-1:-1:-1;;16258:396:28;;;;:::o;4026:501:16:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:16;;;;;;;;;;-1:-1:-1;;;4152:358:16;;;;;;;:::i;9574:920:28:-;-1:-1:-1;;;;;9653:16:28;;9645:61;;;;-1:-1:-1;;;9645:61:28;;20936:2:187;9645:61:28;;;20918:21:187;;;20955:18;;;20948:30;21014:34;20994:18;;;20987:62;21066:18;;9645:61:28;20734:356:187;9645:61:28;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9716:58;;;;-1:-1:-1;;;9716:58:28;;21297:2:187;9716:58:28;;;21279:21:187;21336:2;21316:18;;;21309:30;21375;21355:18;;;21348:58;21423:18;;9716:58:28;21095:352:187;9716:58:28;9785:48;9814:1;9818:2;9822:7;9831:1;9785:20;:48::i;:::-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9920:58;;;;-1:-1:-1;;;9920:58:28;;21297:2:187;9920:58:28;;;21279:21:187;21336:2;21316:18;;;21309:30;21375;21355:18;;;21348:58;21423:18;;9920:58:28;21095:352:187;9920:58:28;-1:-1:-1;;;;;10320:13:28;;;;;;:9;:13;;;;;;;;:18;;10337:1;10320:18;;;10359:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10359:21:28;;;;;10396:33;10367:7;;10320:13;;10396:33;;10320:13;;10396:33;6242:214:16;;:::o;14689:853:28:-;14838:4;-1:-1:-1;;;;;14858:13:28;;1476:19:32;:23;14854:682:28;;14893:82;;-1:-1:-1;;;14893:82:28;;-1:-1:-1;;;;;14893:47:28;;;;;:82;;929:10:33;;14955:4:28;;14961:7;;14970:4;;14893:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14893:82:28;;;;;;;;-1:-1:-1;;14893:82:28;;;;;;;;;;;;:::i;:::-;;;14889:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15153:6;:13;15170:1;15153:18;15149:321;;15195:60;;-1:-1:-1;;;15195:60:28;;;;;;;:::i;15149:321::-;15422:6;15416:13;15407:6;15403:2;15399:15;15392:38;14889:595;-1:-1:-1;;;;;;15025:62:28;-1:-1:-1;;;15025:62:28;;-1:-1:-1;15018:69:28;;14854:682;-1:-1:-1;15521:4:28;14689:853;;;;;;:::o;9900:890:38:-;9953:7;;-1:-1:-1;;;10028:15:38;;10024:99;;-1:-1:-1;;;10063:15:38;;;-1:-1:-1;10106:2:38;10096:12;10024:99;10149:6;10140:5;:15;10136:99;;10184:6;10175:15;;;-1:-1:-1;10218:2:38;10208:12;10136:99;10261:6;10252:5;:15;10248:99;;10296:6;10287:15;;;-1:-1:-1;10330:2:38;10320:12;10248:99;10373:5;10364;:14;10360:96;;10407:5;10398:14;;;-1:-1:-1;10440:1:38;10430:11;10360:96;10482:5;10473;:14;10469:96;;10516:5;10507:14;;;-1:-1:-1;10549:1:38;10539:11;10469:96;10591:5;10582;:14;10578:96;;10625:5;10616:14;;;-1:-1:-1;10658:1:38;10648:11;10578:96;10700:5;10691;:14;10687:64;;10735:1;10725:11;10777:6;9900:890;-1:-1:-1;;9900:890:38:o;2146:149:35:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:35;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;1679:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:35;;1657:47;;-1:-1:-1;;;1714:6:35;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:35;;;;;;;;;-1:-1:-1;;;1739:6:35;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:35;;;;;;;;-1:-1:-1;1769:9:35;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:35;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:35;;;;;;;;-1:-1:-1;1880:1:35;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:35;;1901:55;;;;-1:-1:-1;;;1901:55:35;;22848:2:187;1901:55:35;;;22830:21:187;;;22867:18;;;22860:30;22926:34;22906:18;;;22899:62;22978:18;;1901:55:35;22646:356:187;14:131;-1:-1:-1;;;;;;88:32:187;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:131::-;-1:-1:-1;;;;;667:31:187;;657:42;;647:70;;713:1;710;703:12;728:160;793:20;;849:13;;842:21;832:32;;822:60;;878:1;875;868:12;822:60;728:160;;;:::o;893:127::-;954:10;949:3;945:20;942:1;935:31;985:4;982:1;975:15;1009:4;1006:1;999:15;1025:719;1068:5;1121:3;1114:4;1106:6;1102:17;1098:27;1088:55;;1139:1;1136;1129:12;1088:55;1175:6;1162:20;1201:18;1238:2;1234;1231:10;1228:36;;;1244:18;;:::i;:::-;1319:2;1313:9;1287:2;1373:13;;-1:-1:-1;;1369:22:187;;;1393:2;1365:31;1361:40;1349:53;;;1417:18;;;1437:22;;;1414:46;1411:72;;;1463:18;;:::i;:::-;1503:10;1499:2;1492:22;1538:2;1530:6;1523:18;1584:3;1577:4;1572:2;1564:6;1560:15;1556:26;1553:35;1550:55;;;1601:1;1598;1591:12;1550:55;1665:2;1658:4;1650:6;1646:17;1639:4;1631:6;1627:17;1614:54;1712:1;1705:4;1700:2;1692:6;1688:15;1684:26;1677:37;1732:6;1723:15;;;;;;1025:719;;;;:::o;1749:948::-;1871:6;1879;1887;1895;1903;1956:3;1944:9;1935:7;1931:23;1927:33;1924:53;;;1973:1;1970;1963:12;1924:53;2012:9;1999:23;2031:31;2056:5;2031:31;:::i;:::-;2081:5;-1:-1:-1;2105:35:187;2136:2;2121:18;;2105:35;:::i;:::-;2095:45;;2191:2;2180:9;2176:18;2163:32;2214:18;2255:2;2247:6;2244:14;2241:34;;;2271:1;2268;2261:12;2241:34;2294:50;2336:7;2327:6;2316:9;2312:22;2294:50;:::i;:::-;2284:60;;2397:2;2386:9;2382:18;2369:32;2353:48;;2426:2;2416:8;2413:16;2410:36;;;2442:1;2439;2432:12;2410:36;2465:52;2509:7;2498:8;2487:9;2483:24;2465:52;:::i;:::-;2455:62;;2570:3;2559:9;2555:19;2542:33;2526:49;;2600:2;2590:8;2587:16;2584:36;;;2616:1;2613;2606:12;2584:36;;2639:52;2683:7;2672:8;2661:9;2657:24;2639:52;:::i;:::-;2629:62;;;1749:948;;;;;;;;:::o;2702:250::-;2787:1;2797:113;2811:6;2808:1;2805:13;2797:113;;;2887:11;;;2881:18;2868:11;;;2861:39;2833:2;2826:10;2797:113;;;-1:-1:-1;;2944:1:187;2926:16;;2919:27;2702:250::o;2957:271::-;2999:3;3037:5;3031:12;3064:6;3059:3;3052:19;3080:76;3149:6;3142:4;3137:3;3133:14;3126:4;3119:5;3115:16;3080:76;:::i;:::-;3210:2;3189:15;-1:-1:-1;;3185:29:187;3176:39;;;;3217:4;3172:50;;2957:271;-1:-1:-1;;2957:271:187:o;3233:220::-;3382:2;3371:9;3364:21;3345:4;3402:45;3443:2;3432:9;3428:18;3420:6;3402:45;:::i;3458:180::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:52;;;3586:1;3583;3576:12;3538:52;-1:-1:-1;3609:23:187;;3458:180;-1:-1:-1;3458:180:187:o;3851:315::-;3919:6;3927;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;4035:9;4022:23;4054:31;4079:5;4054:31;:::i;:::-;4104:5;4156:2;4141:18;;;;4128:32;;-1:-1:-1;;;3851:315:187:o;4171:456::-;4248:6;4256;4264;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4372:9;4359:23;4391:31;4416:5;4391:31;:::i;:::-;4441:5;-1:-1:-1;4498:2:187;4483:18;;4470:32;4511:33;4470:32;4511:33;:::i;:::-;4171:456;;4563:7;;-1:-1:-1;;;4617:2:187;4602:18;;;;4589:32;;4171:456::o;4999:315::-;5067:6;5075;5128:2;5116:9;5107:7;5103:23;5099:32;5096:52;;;5144:1;5141;5134:12;5096:52;5180:9;5167:23;5157:33;;5240:2;5229:9;5225:18;5212:32;5253:31;5278:5;5253:31;:::i;:::-;5303:5;5293:15;;;4999:315;;;;;:::o;5724:322::-;5793:6;5846:2;5834:9;5825:7;5821:23;5817:32;5814:52;;;5862:1;5859;5852:12;5814:52;5902:9;5889:23;5935:18;5927:6;5924:30;5921:50;;;5967:1;5964;5957:12;5921:50;5990;6032:7;6023:6;6012:9;6008:22;5990:50;:::i;6051:247::-;6110:6;6163:2;6151:9;6142:7;6138:23;6134:32;6131:52;;;6179:1;6176;6169:12;6131:52;6218:9;6205:23;6237:31;6262:5;6237:31;:::i;6485:383::-;6559:6;6567;6575;6628:2;6616:9;6607:7;6603:23;6599:32;6596:52;;;6644:1;6641;6634:12;6596:52;6680:9;6667:23;6657:33;;6740:2;6729:9;6725:18;6712:32;6753:31;6778:5;6753:31;:::i;:::-;6803:5;-1:-1:-1;6827:35:187;6858:2;6843:18;;6827:35;:::i;:::-;6817:45;;6485:383;;;;;:::o;6873:524::-;6959:6;6967;6975;7028:2;7016:9;7007:7;7003:23;6999:32;6996:52;;;7044:1;7041;7034:12;6996:52;7083:9;7070:23;7102:31;7127:5;7102:31;:::i;:::-;7152:5;-1:-1:-1;7204:2:187;7189:18;;7176:32;;-1:-1:-1;7259:2:187;7244:18;;7231:32;7286:18;7275:30;;7272:50;;;7318:1;7315;7308:12;7272:50;7341;7383:7;7374:6;7363:9;7359:22;7341:50;:::i;:::-;7331:60;;;6873:524;;;;;:::o;7402:315::-;7467:6;7475;7528:2;7516:9;7507:7;7503:23;7499:32;7496:52;;;7544:1;7541;7534:12;7496:52;7583:9;7570:23;7602:31;7627:5;7602:31;:::i;:::-;7652:5;-1:-1:-1;7676:35:187;7707:2;7692:18;;7676:35;:::i;:::-;7666:45;;7402:315;;;;;:::o;7722:666::-;7817:6;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;7969:31;7994:5;7969:31;:::i;:::-;8019:5;-1:-1:-1;8076:2:187;8061:18;;8048:32;8089:33;8048:32;8089:33;:::i;:::-;8141:7;-1:-1:-1;8195:2:187;8180:18;;8167:32;;-1:-1:-1;8250:2:187;8235:18;;8222:32;8277:18;8266:30;;8263:50;;;8309:1;8306;8299:12;8263:50;8332;8374:7;8365:6;8354:9;8350:22;8332:50;:::i;:::-;8322:60;;;7722:666;;;;;;;:::o;8743:388::-;8811:6;8819;8872:2;8860:9;8851:7;8847:23;8843:32;8840:52;;;8888:1;8885;8878:12;8840:52;8927:9;8914:23;8946:31;8971:5;8946:31;:::i;:::-;8996:5;-1:-1:-1;9053:2:187;9038:18;;9025:32;9066:33;9025:32;9066:33;:::i;9750:380::-;9829:1;9825:12;;;;9872;;;9893:61;;9947:4;9939:6;9935:17;9925:27;;9893:61;10000:2;9992:6;9989:14;9969:18;9966:38;9963:161;;10046:10;10041:3;10037:20;10034:1;10027:31;10081:4;10078:1;10071:15;10109:4;10106:1;10099:15;9963:161;;9750:380;;;:::o;10967:409::-;11169:2;11151:21;;;11208:2;11188:18;;;11181:30;11247:34;11242:2;11227:18;;11220:62;-1:-1:-1;;;11313:2:187;11298:18;;11291:43;11366:3;11351:19;;10967:409::o;11797:251::-;11867:6;11920:2;11908:9;11899:7;11895:23;11891:32;11888:52;;;11936:1;11933;11926:12;11888:52;11968:9;11962:16;11987:31;12012:5;11987:31;:::i;13622:381::-;13718:6;13726;13734;13787:2;13775:9;13766:7;13762:23;13758:32;13755:52;;;13803:1;13800;13793:12;13755:52;13835:9;13829:16;13854:31;13879:5;13854:31;:::i;:::-;13949:2;13934:18;;13928:25;13993:2;13978:18;;;13972:25;13904:5;;13928:25;;-1:-1:-1;13972:25:187;13622:381;-1:-1:-1;;;13622:381:187:o;14008:496::-;14187:3;14225:6;14219:13;14241:66;14300:6;14295:3;14288:4;14280:6;14276:17;14241:66;:::i;:::-;14370:13;;14329:16;;;;14392:70;14370:13;14329:16;14439:4;14427:17;;14392:70;:::i;:::-;14478:20;;14008:496;-1:-1:-1;;;;14008:496:187:o;14509:407::-;14711:2;14693:21;;;14750:2;14730:18;;;14723:30;14789:34;14784:2;14769:18;;14762:62;-1:-1:-1;;;14855:2:187;14840:18;;14833:41;14906:3;14891:19;;14509:407::o;14921:676::-;15282:3;15320:6;15314:13;15336:66;15395:6;15390:3;15383:4;15375:6;15371:17;15336:66;:::i;:::-;-1:-1:-1;;;15424:16:187;;15471:17;;;15515:1;15504:13;;15497:29;;;;-1:-1:-1;15553:2:187;15542:14;;15535:26;15588:2;15577:14;;14921:676;-1:-1:-1;14921:676:187:o;15728:545::-;15830:2;15825:3;15822:11;15819:448;;;15866:1;15891:5;15887:2;15880:17;15936:4;15932:2;15922:19;16006:2;15994:10;15990:19;15987:1;15983:27;15977:4;15973:38;16042:4;16030:10;16027:20;16024:47;;;-1:-1:-1;16065:4:187;16024:47;16120:2;16115:3;16111:12;16108:1;16104:20;16098:4;16094:31;16084:41;;16175:82;16193:2;16186:5;16183:13;16175:82;;;16238:17;;;16219:1;16208:13;16175:82;;16449:1352;16575:3;16569:10;16602:18;16594:6;16591:30;16588:56;;;16624:18;;:::i;:::-;16653:97;16743:6;16703:38;16735:4;16729:11;16703:38;:::i;:::-;16697:4;16653:97;:::i;:::-;16805:4;;16869:2;16858:14;;16886:1;16881:663;;;;17588:1;17605:6;17602:89;;;-1:-1:-1;17657:19:187;;;17651:26;17602:89;-1:-1:-1;;16406:1:187;16402:11;;;16398:24;16394:29;16384:40;16430:1;16426:11;;;16381:57;17704:81;;16851:944;;16881:663;15675:1;15668:14;;;15712:4;15699:18;;-1:-1:-1;;16917:20:187;;;17035:236;17049:7;17046:1;17043:14;17035:236;;;17138:19;;;17132:26;17117:42;;17230:27;;;;17198:1;17186:14;;;;17065:19;;17035:236;;;17039:3;17299:6;17290:7;17287:19;17284:201;;;17360:19;;;17354:26;-1:-1:-1;;17443:1:187;17439:14;;;17455:3;17435:24;17431:37;17427:42;17412:58;17397:74;;17284:201;-1:-1:-1;;;;;17531:1:187;17515:14;;;17511:22;17498:36;;-1:-1:-1;16449:1352:187:o;17806:401::-;18008:2;17990:21;;;18047:2;18027:18;;;18020:30;18086:34;18081:2;18066:18;;18059:62;-1:-1:-1;;;18152:2:187;18137:18;;18130:35;18197:3;18182:19;;17806:401::o;18617:414::-;18819:2;18801:21;;;18858:2;18838:18;;;18831:30;18897:34;18892:2;18877:18;;18870:62;-1:-1:-1;;;18963:2:187;18948:18;;18941:48;19021:3;19006:19;;18617:414::o;19522:127::-;19583:10;19578:3;19574:20;19571:1;19564:31;19614:4;19611:1;19604:15;19638:4;19635:1;19628:15;19654:128;19721:9;;;19742:11;;;19739:37;;;19756:18;;:::i;19787:125::-;19852:9;;;19873:10;;;19870:36;;;19886:18;;:::i;19917:812::-;20328:25;20323:3;20316:38;20298:3;20383:6;20377:13;20399:75;20467:6;20462:2;20457:3;20453:12;20446:4;20438:6;20434:17;20399:75;:::i;:::-;-1:-1:-1;;;20533:2:187;20493:16;;;20525:11;;;20518:40;20583:13;;20605:76;20583:13;20667:2;20659:11;;20652:4;20640:17;;20605:76;:::i;:::-;20701:17;20720:2;20697:26;;19917:812;-1:-1:-1;;;;19917:812:187:o;21452:489::-;-1:-1:-1;;;;;21721:15:187;;;21703:34;;21773:15;;21768:2;21753:18;;21746:43;21820:2;21805:18;;21798:34;;;21868:3;21863:2;21848:18;;21841:31;;;21646:4;;21889:46;;21915:19;;21907:6;21889:46;:::i;:::-;21881:54;21452:489;-1:-1:-1;;;;;;21452:489:187:o;21946:249::-;22015:6;22068:2;22056:9;22047:7;22043:23;22039:32;22036:52;;;22084:1;22081;22074:12;22036:52;22116:9;22110:16;22135:30;22159:5;22135:30;:::i;22200:168::-;22240:7;22306:1;22302;22298:6;22294:14;22291:1;22288:21;22283:1;22276:9;22269:17;22265:45;22262:71;;;22313:18;;:::i;:::-;-1:-1:-1;22353:9:187;;22200:168::o;22373:127::-;22434:10;22429:3;22425:20;22422:1;22415:31;22465:4;22462:1;22455:15;22489:4;22486:1;22479:15;22505:136;22544:3;22572:5;22562:39;;22581:18;;:::i;:::-;-1:-1:-1;;;22617:18:187;;22505:136::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "DEFAULT_ADMIN_ROLE()": "a217fddf",
    "approve(address,uint256)": "095ea7b3",
    "balanceOf(address)": "70a08231",
    "baseURI()": "6c0360eb",
    "burn(uint256)": "42966c68",
    "exists(uint256)": "4f558e79",
    "getApproved(uint256)": "081812fc",
    "getLoan(uint256)": "504006ca",
    "getRoleAdmin(bytes32)": "248a9ca3",
    "grantRole(bytes32,address)": "2f2ff15d",
    "hasRole(bytes32,address)": "91d14854",
    "initialize(address,bool,string,string,string)": "03baae35",
    "isApprovedForAll(address,address)": "e985e9c5",
    "loans(uint256)": "e1ec3c68",
    "mint(address,uint256,bytes)": "94d008ef",
    "name()": "06fdde03",
    "ownerOf(uint256)": "6352211e",
    "renounceRole(bytes32,address)": "36568abe",
    "revokeRole(bytes32,address)": "d547741f",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "setBaseURI(string)": "55f804b3",
    "setDelegate(uint256,address,bool)": "90bd6748",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenURI(uint256)": "c87b56dd",
    "transferFrom(address,address,uint256)": "23b872dd"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getLoan\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.TokenizedLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressProvider_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isLiquidDelegate_\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"loans\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenizedId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setDelegate(uint256,address,bool)\":{\"details\":\"must be holder of obligation receipt to control delegation rights of the underlying - delegation right transfered to new owner as per _beforeTokenTransfer\",\"params\":{\"to\":\"the target address for delegation rights\",\"tokenId\":\"the tokenId of the obligation receipt\",\"value\":\"true if giving and false if removing delegation rights\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"----------------------------------------------------------------------- Internal / Overrides -----------------------------------------------------------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/ObligationReceipt.sol\":\"ObligationReceipt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/integrations/IDelegationRegistry.sol\":{\"keccak256\":\"0x1d09c96620cb6253c701f5f085f5b3d720fed3998cf137ae473f5b46c7f08b00\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://2ccccee556054de055b6b98d477cb3f97a8492246bffb726a99cd2d5c98dbaca\",\"dweb:/ipfs/QmRwW9St3JwZC2o4g2YWv2H6xi7qknqJjqc9TBVBnzcGQd\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/IRedeemable.sol\":{\"keccak256\":\"0x31c4714398dee1b9e7b31dd9f74c19d2d9b9e9647756cc34b5c5d2ee1c7110c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://288505b7d83d903156e9aa5b8383ed2e779104d8d27f9c45299f556e0e554ac0\",\"dweb:/ipfs/QmSms1HVzDWrneXp74CZqKj6HRuQejhkhAuxVqww14toRX\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/ObligationReceipt.sol\":{\"keccak256\":\"0xba811b7cecc33f3345b942324b795ba5c066e74b32642e2d2a7a0b7fb92511e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9c91b8f31b7ecef26cb3028c10f8a00bbb92616c052a922fcc796cf0cf8b76c0\",\"dweb:/ipfs/QmQhikCUeyR1RVgCU4tVp4xet5v5rQRVoqWzy6v2H3ETct\"]},\"src/protocol/tokenization/base/Redeemable.sol\":{\"keccak256\":\"0xb49005bc57bdfb2e2e0f2c155dbdd3a6ff51067d40ee72c3c6c742bec465f413\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://790ae5927466f43419196c9255e44848c57678800003f92d3b28c8848c4533bf\",\"dweb:/ipfs/QmfAEBRJa42D41ziGmitjh8fVfpLG1CFe3dRNqq4EKbfWD\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "approved",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ApprovalForAll",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleAdminChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleGranted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleRevoked",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "baseURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "burn"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "exists",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getApproved",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",