{
  "name": "LongerLiquidityVault",
  "compiler": "0.8.28+commit.7893614a",
  "settings": {
    "compilationTarget": {
      "src/LongerLiquidityVault.sol": "LongerLiquidityVault"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "remappings": []
  },
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "pm",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "key",
          "type": "tuple",
          "internalType": "struct ILongerPoolManager.PoolKey",
          "components": [
            {
              "name": "currency0",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "currency1",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "fee",
              "type": "uint24",
              "internalType": "uint24"
            },
            {
              "name": "tickSpacing",
              "type": "int24",
              "internalType": "int24"
            },
            {
              "name": "hooks",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "name": "lower",
          "type": "int24",
          "internalType": "int24"
        },
        {
          "name": "upper",
          "type": "int24",
          "internalType": "int24"
        },
        {
          "name": "liquidity",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "cap0",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "cap1",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "interval",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "recipient",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "receive",
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "POSITION_SALT",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "collectFees",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "configHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "cooldown",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint32",
          "internalType": "uint32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "execute",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "feeCredit",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "feeRecipient",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "hookCodeHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "liquidityAdded",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "liquidityPerExecution",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "manager",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract ILongerPoolManager"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "managerCodeHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "maxAmount0",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "maxAmount1",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nextExecution",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "payoutFees",
      "inputs": [
        {
          "name": "currency",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "poolId",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "poolKey",
      "inputs": [],
      "outputs": [
        {
          "name": "currency0",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "currency1",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "fee",
          "type": "uint24",
          "internalType": "uint24"
        },
        {
          "name": "tickSpacing",
          "type": "int24",
          "internalType": "int24"
        },
        {
          "name": "hooks",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tickLower",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "int24",
          "internalType": "int24"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tickUpper",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "int24",
          "internalType": "int24"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "unlockCallback",
      "inputs": [
        {
          "name": "data",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "FeesDelivered",
      "inputs": [
        {
          "name": "amount0",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "amount1",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "destination",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "LiquidityAdded",
      "inputs": [
        {
          "name": "liquidity",
          "type": "uint128",
          "indexed": false,
          "internalType": "uint128"
        },
        {
          "name": "amount0",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "amount1",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "BalanceDecreased",
      "inputs": []
    },
    {
      "type": "error",
      "name": "DependencyChanged",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ExecutionLimit",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidConfiguration",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ReentrantCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "TransferFailed",
      "inputs": []
    },
    {
      "type": "error",
      "name": "UnauthorizedCallback",
      "inputs": []
    },
    {
      "type": "error",
      "name": "UnsupportedCurrency",
      "inputs": []
    }
  ],
  "bytecode": "0x610200604052348015610010575f5ffd5b5060405161208b38038061208b83398101604081905261002f916103cc565b88886001600160a01b0382163b1580610061575080602001516001600160a01b0316815f01516001600160a01b031610155b8061007357505f816060015160020b13155b806100865750617fff816060015160020b135b806100b35750620f4240816040015162ffffff161180156100b35750806040015162ffffff166280000014155b806100e1575060808101516001600160a01b0316158015906100e1575060808101516001600160a01b03163b155b156100ff5760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b038083166080818152903f60a0528251600180549184166001600160a01b03199283161790556020808501516002805460408089015160608a015162ffffff908116600160b81b0262ffffff60b81b1991909216600160a01b026001600160b81b0319909416958a16959095179290921793909316179055928501516003805491909516921682179093553f60c052516101a2918391016104fc565b6040516020818303038152906040528051906020012060e0818152505050508560020b8760020b1215806101dc5750620d89e7198760020b125b806101ec5750620d89e88660020b135b8061020757506060880151610201908861054e565b60020b15155b806102225750606088015161021c908761054e565b60020b15155b8061023457506001600160801b038516155b8061024e575060016001607f1b036001600160801b038616115b8061027257506001600160801b03841615801561027257506001600160801b038316155b80610281575063ffffffff8216155b8061029357506001600160a01b038116155b806102a657506001600160a01b03811630145b156102c45760405163c52a9bd360e01b815260040160405180910390fd5b600287810b6101005286900b610120526001600160801b03808616610140528481166101605283166101805263ffffffff82166101a0526001600160a01b038082166101c052608089015160405161033a9246928d928383163f928e92163f908d908d908d908d908d908d908d9060200161057b565b60408051601f1981840301815291905280516020909101206101e0525061064b975050505050505050565b80516001600160a01b038116811461037b575f5ffd5b919050565b805162ffffff8116811461037b575f5ffd5b8051600281900b811461037b575f5ffd5b80516001600160801b038116811461037b575f5ffd5b805163ffffffff8116811461037b575f5ffd5b5f5f5f5f5f5f5f5f5f898b036101a08112156103e6575f5ffd5b6103ef8b610365565b995060a0601f1982011215610402575f5ffd5b5060405160a081016001600160401b038111828210171561043157634e487b7160e01b5f52604160045260245ffd5b60405261044060208c01610365565b815261044e60408c01610365565b602082015261045f60608c01610380565b604082015261047060808c01610392565b606082015261048160a08c01610365565b6080820152975061049460c08b01610392565b96506104a260e08b01610392565b95506104b16101008b016103a3565b94506104c06101208b016103a3565b93506104cf6101408b016103a3565b92506104de6101608b016103b9565b91506104ed6101808b01610365565b90509295985092959850929598565b60a08101610548828480516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b92915050565b5f8260020b8061056c57634e487b7160e01b5f52601260045260245ffd5b808360020b0791505092915050565b8c81526001600160a01b038c166020820152604081018b905261020081016105e4606083018c80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b610100820199909952600297880b6101208201529590960b6101408601526001600160801b039384166101608601529183166101808501529091166101a083015263ffffffff166101c08201526001600160a01b039091166101e090910152949350505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161190e61077d5f395f61051201525f81816102250152818161078a015261082401525f81816103f001526105b801525f81816102a301528181610d9301528181610f530152610f8301525f81816104ca01528181610d5801528181610ed20152610f0201525f81816105450152818161061801528181610bac0152610e2301525f81816102ee0152610b7801525f81816103340152610b4f01525f6101f201525f81816104640152610a0301525f81816103a8015261098d01525f818161027001528181610667015281816109ae01528181610a6601528181610b130152818161125b015281816113010152818161135e01528181611385015261144a015261190e5ff3fe608060405260043610610129575f3560e01c80636774a7d8116100a8578063b9e42c5b1161006d578063b9e42c5b14610486578063c8796572146104a5578063d0abd1ad146104b9578063d9443923146104ec578063e1f1176d14610501578063e257170414610534575f5ffd5b80636774a7d81461039757806371dbc3f5146103ca578063787a08a6146103df57806391dd734614610427578063a452253514610453575f5ffd5b806350a8c639116100ee57806350a8c6391461029257806355b812a8146102dd57806359c4f905146103235780635c584c88146103565780636146195414610381575f5ffd5b8063182148ef146101345780631bec3a19146101c05780633e0dc34e146101e15780634690484014610214578063481c6a751461025f575f5ffd5b3661013057005b5f5ffd5b34801561013f575f5ffd5b506001546002805460035461017b936001600160a01b03908116938382169362ffffff600160a01b82041693600160b81b90910490910b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0015b60405180910390f35b3480156101cb575f5ffd5b506101d35f81565b6040519081526020016101b7565b3480156101ec575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b34801561021f575f5ffd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b7565b34801561026a575f5ffd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b34801561029d575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b0390911681526020016101b7565b3480156102e8575f5ffd5b506103107f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016101b7565b34801561032e575f5ffd5b506103107f000000000000000000000000000000000000000000000000000000000000000081565b348015610361575f5ffd5b506101d3610370366004611580565b60076020525f908152604090205481565b34801561038c575f5ffd5b50610395610567565b005b3480156103a2575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d5575f5ffd5b506101d360055481565b3480156103ea575f5ffd5b506104127f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101b7565b348015610432575f5ffd5b506104466104413660046115ad565b61065a565b6040516101b79190611649565b34801561045e575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b348015610491575f5ffd5b506103956104a0366004611580565b6106fa565b3480156104b0575f5ffd5b5061039561085a565b3480156104c4575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f7575f5ffd5b506101d360065481565b34801561050c575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b34801561053f575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b5f5415610587576040516306fda65d60e31b815260040160405180910390fd5b60015f556005544210156105ae5760405163011850d160e61b815260040160405180910390fd5b6105de63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261166f565b600555600654156105f1576105f1610893565b604080516001602082015261061691015b60405160208183030381529060405261098b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b031660065f828254610650919061166f565b90915550505f8055565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806106945750600454155b806106b8575060045483836040516106ad929190611682565b604051809103902014155b156106d657604051637ae3640d60e11b815260040160405180910390fd5b5f6004556106e48383610b00565b5060408051602081019091525f81525b92915050565b5f541561071a576040516306fda65d60e31b815260040160405180910390fd5b60015f819055546001600160a01b0382811691161480159061074a57506002546001600160a01b03828116911614155b1561076857604051631131fa7160e11b815260040160405180910390fd5b6001600160a01b0381165f90815260076020526040812080549190556107af827f000000000000000000000000000000000000000000000000000000000000000083611038565b6001547fcc5ab2d67fce0ef6e30ed52136606f84a8252cfca146d339fad3fb653ba41bfa906001600160a01b038481169116146107ec575f6107ee565b815b6002546001600160a01b03858116911614610809575f61080b565b825b6040805192835260208301919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082015260600160405180910390a150505f8055565b5f541561087a576040516306fda65d60e31b815260040160405180910390fd5b60015f556006541561088e5761088e610893565b5f8055565b6001545f906108aa906001600160a01b031661111e565b6002549091505f906108c4906001600160a01b031661111e565b604080515f60208201529192506108db9101610602565b6001545f9083906108f4906001600160a01b031661111e565b6108fe9190611691565b6002549091505f90839061091a906001600160a01b031661111e565b6109249190611691565b6001546001600160a01b03165f9081526007602052604081208054929350849290919061095290849061166f565b90915550506002546001600160a01b03165f908152600760205260408120805483929061098090849061166f565b909155505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163f141580610a2557506003546001600160a01b031615801590610a2557506003546001600160a01b03163f7f000000000000000000000000000000000000000000000000000000000000000014155b15610a435760405163255e8c8d60e01b815260040160405180910390fd5b8051602082012060049081556040516348c8949160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916348c8949191610a9991859101611649565b5f604051808303815f875af1158015610ab4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610adb91908101906116b8565b5060045415610afd57604051637ae3640d60e11b815260040160405180910390fd5b50565b5f610b0d82840184611778565b90505f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda600160405180608001604052807f000000000000000000000000000000000000000000000000000000000000000060020b81526020017f000000000000000000000000000000000000000000000000000000000000000060020b815260200187610baa575f610bd5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03165b81525f6020918201819052604080519283018152908252516001600160e01b031960e086901b168152610c0d93929190600401611793565b60408051808303815f875af1158015610c28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4c919061182e565b915091505f5f610c5e84608081901d91565b915091505f5f610c7085608081901d91565b6001546001600160a01b03165f81815260076020526040812054939550919350909190610c9c9061111e565b610ca69190611691565b6002546001600160a01b03165f818152600760205260408120549293509190610cce9061111e565b610cd89190611691565b90508815610e83575f84600f0b1280610cf357505f83600f0b125b15610d115760405163011850d160e61b815260040160405180910390fd5b5f84600f0b87600f0b610d249190611850565b90505f84600f0b87600f0b610d399190611850565b90505f821380610d4857505f81135b80610d8357506001600160801b037f000000000000000000000000000000000000000000000000000000000000000016610d8183611876565b115b80610dbe57506001600160801b037f000000000000000000000000000000000000000000000000000000000000000016610dbc82611876565b115b80610dd0575083610dce83611876565b115b80610de2575082610de082611876565b115b15610e005760405163011850d160e61b815260040160405180910390fd5b7f3149f3087c0a473b1b76a754bc7818c65f2feb368e6172b2fbb82d31bd0c27ea7f0000000000000000000000000000000000000000000000000000000000000000610e4b84611876565b610e5484611876565b604080516001600160801b03909416845260208401929092529082015260600160405180910390a15050610eb4565b5f86600f0b1280610e9657505f85600f0b125b15610eb45760405163011850d160e61b815260040160405180910390fd5b600154610f35906001600160a01b0316878b610ed0575f61120f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168510610f2f577f00000000000000000000000000000000000000000000000000000000000000006001600160801b031661120f565b8461120f565b600254610fb6906001600160a01b0316868b610f51575f61120f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168410610fb0577f00000000000000000000000000000000000000000000000000000000000000006001600160801b031661120f565b8361120f565b881561102b576001546001600160a01b03165f90815260076020526040812080546001600160801b0387169290610fee90849061166f565b90915550506002546001600160a01b03165f90815260076020526040812080546001600160801b038616929061102590849061166f565b90915550505b5050505050505050505050565b805f0361104457505050565b6001600160a01b0383166110c8575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461109b576040519150601f19603f3d011682016040523d82523d5f602084013e6110a0565b606091505b50509050806110c2576040516312171d8360e31b815260040160405180910390fd5b50505050565b6040516001600160a01b03831660248201526044810182905261111990849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b1790526114a6565b505050565b5f6001600160a01b038216611134575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b179052516111849190611890565b5f60405180830381855afa9150503d805f81146111bc576040519150601f19603f3d011682016040523d82523d5f602084013e6111c1565b606091505b50915091508115806111d557508051602014155b156111f3576040516312171d8360e31b815260040160405180910390fd5b8080602001905181019061120791906118a6565b949350505050565b5f82600f0b121561140b575f82600f0b61122890611876565b90508181111561124b5760405163011850d160e61b815260040160405180910390fd5b6001600160a01b0384166112e2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156112b7573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112dc91906118a6565b506110c2565b604051632961046560e21b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015611342575f5ffd5b505af1158015611354573d5f5f3e3d5ffd5b50505050611383847f000000000000000000000000000000000000000000000000000000000000000083611038565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156113e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140491906118a6565b5050505050565b5f82600f0b131561111957604051630b0d9c0960e01b81526001600160a01b0384811660048301523060248301526001600160801b03841660448301527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b15801561148b575f5ffd5b505af115801561149d573d5f5f3e3d5ffd5b50505050505050565b816001600160a01b03163b5f036114d0576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b0316836040516114ea9190611890565b5f604051808303815f865af19150503d805f8114611523576040519150601f19603f3d011682016040523d82523d5f602084013e611528565b606091505b5091509150811580611562575080511580159061156257508051602014158061156257508080602001905181019061156091906118bd565b155b156110c2576040516312171d8360e31b815260040160405180910390fd5b5f60208284031215611590575f5ffd5b81356001600160a01b03811681146115a6575f5ffd5b9392505050565b5f5f602083850312156115be575f5ffd5b823567ffffffffffffffff8111156115d4575f5ffd5b8301601f810185136115e4575f5ffd5b803567ffffffffffffffff8111156115fa575f5ffd5b85602082840101111561160b575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115a6602083018461161b565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f4576106f461165b565b818382375f9101908152919050565b818103818111156106f4576106f461165b565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156116c8575f5ffd5b815167ffffffffffffffff8111156116de575f5ffd5b8201601f810184136116ee575f5ffd5b805167ffffffffffffffff811115611708576117086116a4565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611737576117376116a4565b60405281815282820160200186101561174e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b8015158114610afd575f5ffd5b5f60208284031215611788575f5ffd5b81356115a68161176b565b83546001600160a01b0390811682526001850154808216602084015260a081811c62ffffff16604085015260b89190911c600290810b606085015286015490911660808301525f9061180e90830185805160020b8252602081015160020b602083015260408101516040830152606081015160608301525050565b61014061012083015261182561014083018461161b565b95945050505050565b5f5f6040838503121561183f575f5ffd5b505080516020909101519092909150565b8181035f83128015838313168383128216171561186f5761186f61165b565b5092915050565b5f600160ff1b820161188a5761188a61165b565b505f0390565b5f82518060208501845e5f920191825250919050565b5f602082840312156118b6575f5ffd5b5051919050565b5f602082840312156118cd575f5ffd5b81516115a68161176b56fea264697066735822122062ee8ba1143e8e0ee47f15da787e7e2d6a7edf3c188edae4cbacc2e857b79c9364736f6c634300081c0033",
  "deployedBytecode": "0x608060405260043610610129575f3560e01c80636774a7d8116100a8578063b9e42c5b1161006d578063b9e42c5b14610486578063c8796572146104a5578063d0abd1ad146104b9578063d9443923146104ec578063e1f1176d14610501578063e257170414610534575f5ffd5b80636774a7d81461039757806371dbc3f5146103ca578063787a08a6146103df57806391dd734614610427578063a452253514610453575f5ffd5b806350a8c639116100ee57806350a8c6391461029257806355b812a8146102dd57806359c4f905146103235780635c584c88146103565780636146195414610381575f5ffd5b8063182148ef146101345780631bec3a19146101c05780633e0dc34e146101e15780634690484014610214578063481c6a751461025f575f5ffd5b3661013057005b5f5ffd5b34801561013f575f5ffd5b506001546002805460035461017b936001600160a01b03908116938382169362ffffff600160a01b82041693600160b81b90910490910b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0015b60405180910390f35b3480156101cb575f5ffd5b506101d35f81565b6040519081526020016101b7565b3480156101ec575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b34801561021f575f5ffd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b7565b34801561026a575f5ffd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b34801561029d575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b0390911681526020016101b7565b3480156102e8575f5ffd5b506103107f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016101b7565b34801561032e575f5ffd5b506103107f000000000000000000000000000000000000000000000000000000000000000081565b348015610361575f5ffd5b506101d3610370366004611580565b60076020525f908152604090205481565b34801561038c575f5ffd5b50610395610567565b005b3480156103a2575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d5575f5ffd5b506101d360055481565b3480156103ea575f5ffd5b506104127f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101b7565b348015610432575f5ffd5b506104466104413660046115ad565b61065a565b6040516101b79190611649565b34801561045e575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b348015610491575f5ffd5b506103956104a0366004611580565b6106fa565b3480156104b0575f5ffd5b5061039561085a565b3480156104c4575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f7575f5ffd5b506101d360065481565b34801561050c575f5ffd5b506101d37f000000000000000000000000000000000000000000000000000000000000000081565b34801561053f575f5ffd5b506102c57f000000000000000000000000000000000000000000000000000000000000000081565b5f5415610587576040516306fda65d60e31b815260040160405180910390fd5b60015f556005544210156105ae5760405163011850d160e61b815260040160405180910390fd5b6105de63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261166f565b600555600654156105f1576105f1610893565b604080516001602082015261061691015b60405160208183030381529060405261098b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b031660065f828254610650919061166f565b90915550505f8055565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806106945750600454155b806106b8575060045483836040516106ad929190611682565b604051809103902014155b156106d657604051637ae3640d60e11b815260040160405180910390fd5b5f6004556106e48383610b00565b5060408051602081019091525f81525b92915050565b5f541561071a576040516306fda65d60e31b815260040160405180910390fd5b60015f819055546001600160a01b0382811691161480159061074a57506002546001600160a01b03828116911614155b1561076857604051631131fa7160e11b815260040160405180910390fd5b6001600160a01b0381165f90815260076020526040812080549190556107af827f000000000000000000000000000000000000000000000000000000000000000083611038565b6001547fcc5ab2d67fce0ef6e30ed52136606f84a8252cfca146d339fad3fb653ba41bfa906001600160a01b038481169116146107ec575f6107ee565b815b6002546001600160a01b03858116911614610809575f61080b565b825b6040805192835260208301919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082015260600160405180910390a150505f8055565b5f541561087a576040516306fda65d60e31b815260040160405180910390fd5b60015f556006541561088e5761088e610893565b5f8055565b6001545f906108aa906001600160a01b031661111e565b6002549091505f906108c4906001600160a01b031661111e565b604080515f60208201529192506108db9101610602565b6001545f9083906108f4906001600160a01b031661111e565b6108fe9190611691565b6002549091505f90839061091a906001600160a01b031661111e565b6109249190611691565b6001546001600160a01b03165f9081526007602052604081208054929350849290919061095290849061166f565b90915550506002546001600160a01b03165f908152600760205260408120805483929061098090849061166f565b909155505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163f141580610a2557506003546001600160a01b031615801590610a2557506003546001600160a01b03163f7f000000000000000000000000000000000000000000000000000000000000000014155b15610a435760405163255e8c8d60e01b815260040160405180910390fd5b8051602082012060049081556040516348c8949160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916348c8949191610a9991859101611649565b5f604051808303815f875af1158015610ab4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610adb91908101906116b8565b5060045415610afd57604051637ae3640d60e11b815260040160405180910390fd5b50565b5f610b0d82840184611778565b90505f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda600160405180608001604052807f000000000000000000000000000000000000000000000000000000000000000060020b81526020017f000000000000000000000000000000000000000000000000000000000000000060020b815260200187610baa575f610bd5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03165b81525f6020918201819052604080519283018152908252516001600160e01b031960e086901b168152610c0d93929190600401611793565b60408051808303815f875af1158015610c28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4c919061182e565b915091505f5f610c5e84608081901d91565b915091505f5f610c7085608081901d91565b6001546001600160a01b03165f81815260076020526040812054939550919350909190610c9c9061111e565b610ca69190611691565b6002546001600160a01b03165f818152600760205260408120549293509190610cce9061111e565b610cd89190611691565b90508815610e83575f84600f0b1280610cf357505f83600f0b125b15610d115760405163011850d160e61b815260040160405180910390fd5b5f84600f0b87600f0b610d249190611850565b90505f84600f0b87600f0b610d399190611850565b90505f821380610d4857505f81135b80610d8357506001600160801b037f000000000000000000000000000000000000000000000000000000000000000016610d8183611876565b115b80610dbe57506001600160801b037f000000000000000000000000000000000000000000000000000000000000000016610dbc82611876565b115b80610dd0575083610dce83611876565b115b80610de2575082610de082611876565b115b15610e005760405163011850d160e61b815260040160405180910390fd5b7f3149f3087c0a473b1b76a754bc7818c65f2feb368e6172b2fbb82d31bd0c27ea7f0000000000000000000000000000000000000000000000000000000000000000610e4b84611876565b610e5484611876565b604080516001600160801b03909416845260208401929092529082015260600160405180910390a15050610eb4565b5f86600f0b1280610e9657505f85600f0b125b15610eb45760405163011850d160e61b815260040160405180910390fd5b600154610f35906001600160a01b0316878b610ed0575f61120f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168510610f2f577f00000000000000000000000000000000000000000000000000000000000000006001600160801b031661120f565b8461120f565b600254610fb6906001600160a01b0316868b610f51575f61120f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168410610fb0577f00000000000000000000000000000000000000000000000000000000000000006001600160801b031661120f565b8361120f565b881561102b576001546001600160a01b03165f90815260076020526040812080546001600160801b0387169290610fee90849061166f565b90915550506002546001600160a01b03165f90815260076020526040812080546001600160801b038616929061102590849061166f565b90915550505b5050505050505050505050565b805f0361104457505050565b6001600160a01b0383166110c8575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461109b576040519150601f19603f3d011682016040523d82523d5f602084013e6110a0565b606091505b50509050806110c2576040516312171d8360e31b815260040160405180910390fd5b50505050565b6040516001600160a01b03831660248201526044810182905261111990849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b1790526114a6565b505050565b5f6001600160a01b038216611134575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b179052516111849190611890565b5f60405180830381855afa9150503d805f81146111bc576040519150601f19603f3d011682016040523d82523d5f602084013e6111c1565b606091505b50915091508115806111d557508051602014155b156111f3576040516312171d8360e31b815260040160405180910390fd5b8080602001905181019061120791906118a6565b949350505050565b5f82600f0b121561140b575f82600f0b61122890611876565b90508181111561124b5760405163011850d160e61b815260040160405180910390fd5b6001600160a01b0384166112e2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156112b7573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112dc91906118a6565b506110c2565b604051632961046560e21b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b158015611342575f5ffd5b505af1158015611354573d5f5f3e3d5ffd5b50505050611383847f000000000000000000000000000000000000000000000000000000000000000083611038565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156113e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140491906118a6565b5050505050565b5f82600f0b131561111957604051630b0d9c0960e01b81526001600160a01b0384811660048301523060248301526001600160801b03841660448301527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b15801561148b575f5ffd5b505af115801561149d573d5f5f3e3d5ffd5b50505050505050565b816001600160a01b03163b5f036114d0576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b0316836040516114ea9190611890565b5f604051808303815f865af19150503d805f8114611523576040519150601f19603f3d011682016040523d82523d5f602084013e611528565b606091505b5091509150811580611562575080511580159061156257508051602014158061156257508080602001905181019061156091906118bd565b155b156110c2576040516312171d8360e31b815260040160405180910390fd5b5f60208284031215611590575f5ffd5b81356001600160a01b03811681146115a6575f5ffd5b9392505050565b5f5f602083850312156115be575f5ffd5b823567ffffffffffffffff8111156115d4575f5ffd5b8301601f810185136115e4575f5ffd5b803567ffffffffffffffff8111156115fa575f5ffd5b85602082840101111561160b575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115a6602083018461161b565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f4576106f461165b565b818382375f9101908152919050565b818103818111156106f4576106f461165b565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156116c8575f5ffd5b815167ffffffffffffffff8111156116de575f5ffd5b8201601f810184136116ee575f5ffd5b805167ffffffffffffffff811115611708576117086116a4565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611737576117376116a4565b60405281815282820160200186101561174e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b8015158114610afd575f5ffd5b5f60208284031215611788575f5ffd5b81356115a68161176b565b83546001600160a01b0390811682526001850154808216602084015260a081811c62ffffff16604085015260b89190911c600290810b606085015286015490911660808301525f9061180e90830185805160020b8252602081015160020b602083015260408101516040830152606081015160608301525050565b61014061012083015261182561014083018461161b565b95945050505050565b5f5f6040838503121561183f575f5ffd5b505080516020909101519092909150565b8181035f83128015838313168383128216171561186f5761186f61165b565b5092915050565b5f600160ff1b820161188a5761188a61165b565b505f0390565b5f82518060208501845e5f920191825250919050565b5f602082840312156118b6575f5ffd5b5051919050565b5f602082840312156118cd575f5ffd5b81516115a68161176b56fea264697066735822122062ee8ba1143e8e0ee47f15da787e7e2d6a7edf3c188edae4cbacc2e857b79c9364736f6c634300081c0033",
  "immutableReferences": {
    "1439": [
      {
        "start": 820,
        "length": 32
      },
      {
        "start": 2895,
        "length": 32
      }
    ],
    "1441": [
      {
        "start": 750,
        "length": 32
      },
      {
        "start": 2936,
        "length": 32
      }
    ],
    "1443": [
      {
        "start": 1349,
        "length": 32
      },
      {
        "start": 1560,
        "length": 32
      },
      {
        "start": 2988,
        "length": 32
      },
      {
        "start": 3619,
        "length": 32
      }
    ],
    "1445": [
      {
        "start": 1226,
        "length": 32
      },
      {
        "start": 3416,
        "length": 32
      },
      {
        "start": 3794,
        "length": 32
      },
      {
        "start": 3842,
        "length": 32
      }
    ],
    "1447": [
      {
        "start": 675,
        "length": 32
      },
      {
        "start": 3475,
        "length": 32
      },
      {
        "start": 3923,
        "length": 32
      },
      {
        "start": 3971,
        "length": 32
      }
    ],
    "1449": [
      {
        "start": 1008,
        "length": 32
      },
      {
        "start": 1464,
        "length": 32
      }
    ],
    "1451": [
      {
        "start": 549,
        "length": 32
      },
      {
        "start": 1930,
        "length": 32
      },
      {
        "start": 2084,
        "length": 32
      }
    ],
    "1453": [
      {
        "start": 1298,
        "length": 32
      }
    ],
    "3273": [
      {
        "start": 624,
        "length": 32
      },
      {
        "start": 1639,
        "length": 32
      },
      {
        "start": 2478,
        "length": 32
      },
      {
        "start": 2662,
        "length": 32
      },
      {
        "start": 2835,
        "length": 32
      },
      {
        "start": 4699,
        "length": 32
      },
      {
        "start": 4865,
        "length": 32
      },
      {
        "start": 4958,
        "length": 32
      },
      {
        "start": 4997,
        "length": 32
      },
      {
        "start": 5194,
        "length": 32
      }
    ],
    "3275": [
      {
        "start": 936,
        "length": 32
      },
      {
        "start": 2445,
        "length": 32
      }
    ],
    "3277": [
      {
        "start": 1124,
        "length": 32
      },
      {
        "start": 2563,
        "length": 32
      }
    ],
    "3279": [
      {
        "start": 498,
        "length": 32
      }
    ]
  },
  "creationCodeHash": "0x0d2a2c8a0ad27b263ed48f69d3beb951ce84954daf1e44fca1c45eae2ce3e08a"
}
