{
  "name": "LongerBuyback",
  "compiler": "0.8.28+commit.7893614a",
  "settings": {
    "compilationTarget": {
      "src/LongerBuyback.sol": "LongerBuyback"
    },
    "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": "zeroForOne",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "recipient",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "burn",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "minimum",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "maximum",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "outputFloor",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "interval",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "priceLimit",
          "type": "uint160",
          "internalType": "uint160"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "receive",
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "burnSupply",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "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": "deliverHeld",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "destination",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "execute",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "hookCodeHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "input",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "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": "maxSpend",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "minOutputPer1e18",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "minSpend",
      "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": "output",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "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": "sqrtPriceLimitX96",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint160",
          "internalType": "uint160"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "unlockCallback",
      "inputs": [
        {
          "name": "data",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "Executed",
      "inputs": [
        {
          "name": "spent",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "acquired",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "destination",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "burned",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        }
      ],
      "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": "0x610240604052348015610010575f5ffd5b5060405161217a38038061217a83398101604081905261002f91610435565b89896001600160a01b0382163b1580610061575080602001516001600160a01b0316815f01516001600160a01b031610155b8061007357505f816060015160020b13155b806100865750617fff816060015160020b135b806100b35750620f4240816040015162ffffff161180156100b35750806040015162ffffff166280000014155b806100e1575060808101516001600160a01b0316158015906100e1575060808101516001600160a01b03163b155b156100ff5760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b038083166080818152903f60a0528251600180549184166001600160a01b03199283161790556020808501516002805460408089015160608a015162ffffff908116600160b81b0262ffffff60b81b1991909216600160a01b026001600160b81b0319909416958a16959095179290921793909316179055928501516003805491909516921682179093553f60c052516101a291839101610579565b60408051601f19818403018152919052805160209091012060e052508890506101cf5788602001516101d2565b88515b6001600160a01b031661010052876101eb5788516101f1565b88602001515b6001600160a01b0316610120819052158061021357506001600160801b038316155b8061022557506001600160801b038516155b806102415750846001600160801b0316846001600160801b0316105b8061025b575060016001607f1b036001600160801b038516115b8061026a575063ffffffff8216155b8061028357506401000276a3816001600160a01b031611155b806102ab575073fffd8963efd1fc6a506488495d951d5263988d26816001600160a01b031610155b806102d85750851580156102d857506001600160a01b03871615806102d857506001600160a01b03871630145b806102f357508580156102f357506001600160a01b03871615155b156103115760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b0380881661014052861515610160526001600160801b038087166101a0528581166101805284166101c05263ffffffff83166101e0528181166102005260808a01516040516103879246928e928383163f928f92163f908e908e908e908e908e908e908e908e906020016105cb565b60408051601f198184030181529190528051602090910120610220525061069f98505050505050505050565b6001600160a01b03811681146103c7575f5ffd5b50565b80516103d5816103b3565b919050565b805162ffffff811681146103d5575f5ffd5b8051600281900b81146103d5575f5ffd5b805180151581146103d5575f5ffd5b80516001600160801b03811681146103d5575f5ffd5b805163ffffffff811681146103d5575f5ffd5b5f5f5f5f5f5f5f5f5f5f8a8c036101c0811215610450575f5ffd5b8b5161045b816103b3565b9a5060a0601f198201121561046e575f5ffd5b5060405160a081016001600160401b038111828210171561049d57634e487b7160e01b5f52604160045260245ffd5b6040526104ac60208d016103ca565b81526104ba60408d016103ca565b60208201526104cb60608d016103da565b60408201526104dc60808d016103ec565b60608201526104ed60a08d016103ca565b6080820152985061050060c08c016103fd565b975061050e60e08c016103ca565b965061051d6101008c016103fd565b955061052c6101208c0161040c565b945061053b6101408c0161040c565b935061054a6101608c0161040c565b92506105596101808c01610422565b91506105686101a08c016103ca565b90509295989b9194979a5092959850565b60a081016105c5828480516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b92915050565b8d81526001600160a01b038d166020820152604081018c90526102208101610634606083018d80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b61010082019a909a529715156101208901526001600160a01b039687166101408901529415156101608801526001600160801b039384166101808801529183166101a08701529091166101c085015263ffffffff166101e08401521661020090910152949350505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516119566108245f395f6104a601525f8181610473015261106c01525f8181610356015261069901525f8181610247015261076101525f81816102c50152818161061b01526107cd01525f81816101bb015281816105b801526105e801525f81816103fd015281816108790152610c4301525f81816104400152818161084b0152610c8c01525f81816105200152818161066901528181610723015281816109a301528181610c6b01528181610ce901528181610d9f01528181610dc701528181610ecd0152610f7f01525f81816104ed0152818161058f015281816106ec0152610ffe01525f61020601525f81816103ca0152610b3a01525f818161030e0152610ac401525f818161027a015281816108e401528181610ae501528181610b9d0152818161102a015281816112e50152818161138b015281816113e80152818161140f01526114cd01526119565ff3fe608060405260043610610113575f3560e01c8063787a08a61161009d578063b38ca79911610062578063b38ca79914610462578063e1f1176d14610495578063e7b3d684146104c8578063eaed3f4f146104dc578063f20eaeb81461050f575f5ffd5b8063787a08a61461034557806391dd73461461038d578063a4522535146103b9578063b03e6478146103ec578063b269681d1461042f575f5ffd5b8063481c6a75116100e3578063481c6a751461026957806348dddca8146102b457806361461954146102e75780636774a7d8146102fd57806371dbc3f514610330575f5ffd5b8063182148ef1461011e5780633c3f4c63146101aa5780633e0dc34e146101f55780633fe1b98014610236575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b5060015460028054600354610165936001600160a01b03908116938382169362ffffff600160a01b82041693600160b81b90910490910b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0015b60405180910390f35b3480156101b5575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b0390911681526020016101a1565b348015610200575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a1565b348015610241575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610274575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101a1565b3480156102bf575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f2575f5ffd5b506102fb610542565b005b348015610308575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b34801561033b575f5ffd5b5061022860055481565b348015610350575f5ffd5b506103787f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101a1565b348015610398575f5ffd5b506103ac6103a73660046115fa565b6108d7565b6040516101a19190611696565b3480156103c4575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f7575f5ffd5b5061041f7f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016101a1565b34801561043a575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046d575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d3575f5ffd5b506102fb610977565b3480156104e7575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b5f5415610562576040516306fda65d60e31b815260040160405180910390fd5b60015f556005544210156105895760405163011850d160e61b815260040160405180910390fd5b5f6105b37f00000000000000000000000000000000000000000000000000000000000000006109d1565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168210610615577f00000000000000000000000000000000000000000000000000000000000000006001600160801b0316610617565b815b90507f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168110156106635760405163011850d160e61b815260040160405180910390fd5b5f61068d7f00000000000000000000000000000000000000000000000000000000000000006109d1565b90506106bf63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426116c3565b60055560408051602081018490526106e69101604051602081830303815290604052610ac2565b5f6107107f00000000000000000000000000000000000000000000000000000000000000006109d1565b61071a90856116d6565b90505f826107477f00000000000000000000000000000000000000000000000000000000000000006109d1565b61075191906116d6565b90505f6107876001600160801b037f000000000000000000000000000000000000000000000000000000000000000016846116e9565b90505f61079c670de0b6b3a764000083611714565b156107a85760016107aa565b5f5b60ff166107bf670de0b6b3a764000084611727565b6107c991906116c3565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160801b031684108061080157508584115b8061080a575082155b8061081457508083105b156108325760405163011850d160e61b815260040160405180910390fd5b61083b83610c37565b60408051858152602081018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316818301527f00000000000000000000000000000000000000000000000000000000000000001515606082015290517fbe879e4a96692ae2b7163206e55c3b390395b97e094bacf797a51b9f544b3b7e9181900360800190a150505f80555050505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806109115750600454155b806109355750600454838360405161092a92919061173a565b604051809103902014155b1561095357604051637ae3640d60e11b815260040160405180910390fd5b5f6004556109618383610fd5565b5060408051602081019091525f81525b92915050565b5f5415610997576040516306fda65d60e31b815260040160405180910390fd5b60015f556109cc6109c77f00000000000000000000000000000000000000000000000000000000000000006109d1565b610c37565b5f8055565b5f6001600160a01b0382166109e7575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b17905251610a379190611749565b5f60405180830381855afa9150503d805f8114610a6f576040519150601f19603f3d011682016040523d82523d5f602084013e610a74565b606091505b5091509150811580610a8857508051602014155b15610aa6576040516312171d8360e31b815260040160405180910390fd5b80806020019051810190610aba919061175f565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163f141580610b5c57506003546001600160a01b031615801590610b5c57506003546001600160a01b03163f7f000000000000000000000000000000000000000000000000000000000000000014155b15610b7a5760405163255e8c8d60e01b815260040160405180910390fd5b8051602082012060049081556040516348c8949160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916348c8949191610bd091859101611696565b5f604051808303815f875af1158015610beb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c12919081019061178a565b5060045415610c3457604051637ae3640d60e11b815260040160405180910390fd5b50565b805f03610c415750565b7f0000000000000000000000000000000000000000000000000000000000000000610cb157610c347f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836111b3565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290515f9182916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610d1391611749565b5f60405180830381855afa9150503d805f8114610d4b576040519150601f19603f3d011682016040523d82523d5f602084013e610d50565b606091505b5091509150811580610d6457508051602014155b15610d82576040516312171d8360e31b815260040160405180910390fd5b5f81806020019051810190610d97919061175f565b90505f610dc37f00000000000000000000000000000000000000000000000000000000000000006109d1565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604051602401610e0291815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b17905251610e379190611749565b5f604051808303815f865af19150503d805f8114610e70576040519150601f19603f3d011682016040523d82523d5f602084013e610e75565b606091505b50508094505083610e99576040516312171d8360e31b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610ef791611749565b5f60405180830381855afa9150503d805f8114610f2f576040519150601f19603f3d011682016040523d82523d5f602084013e610f34565b606091505b509094509250831580610f4957508251602014155b80610f725750818584806020019051810190610f65919061175f565b610f6f91906116c3565b14155b80610fb057508085610fa37f00000000000000000000000000000000000000000000000000000000000000006109d1565b610fad91906116c3565b14155b15610fce576040516312171d8360e31b815260040160405180910390fd5b5050505050565b5f610fe28284018461183d565b6001805460408051606081019091526001600160a01b039182167f00000000000000000000000000000000000000000000000000000000000000008316148082529394505f927f00000000000000000000000000000000000000000000000000000000000000009092169163f3cd914c916020810161106088611854565b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020918201526040805191820181525f8252516001600160e01b031960e086901b1681526110bf9392919060040161186e565b6020604051808303815f875af11580156110db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ff919061175f565b9050608081901d8183801561112457505f82600f0b12158061112457505f81600f0b13155b8061114857508315801561114857505f81600f0b12158061114857505f82600f0b13155b156111665760405163011850d160e61b815260040160405180910390fd5b600154611188906001600160a01b03168386611182575f611299565b87611299565b6002546111aa906001600160a01b031682866111a45787611299565b5f611299565b50505050505050565b805f036111bf57505050565b6001600160a01b038316611243575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611216576040519150601f19603f3d011682016040523d82523d5f602084013e61121b565b606091505b505090508061123d576040516312171d8360e31b815260040160405180910390fd5b50505050565b6040516001600160a01b03831660248201526044810182905261129490849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052611520565b505050565b5f82600f0b121561148e575f82600f0b6112b290611854565b9050818111156112d55760405163011850d160e61b815260040160405180910390fd5b6001600160a01b03841661136c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015611341573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611366919061175f565b5061123d565b604051632961046560e21b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b1580156113cc575f5ffd5b505af11580156113de573d5f5f3e3d5ffd5b5050505061140d847f0000000000000000000000000000000000000000000000000000000000000000836111b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561146a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fce919061175f565b5f82600f0b131561129457604051630b0d9c0960e01b81526001600160a01b0384811660048301523060248301526001600160801b03841660448301527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b15801561150e575f5ffd5b505af11580156111aa573d5f5f3e3d5ffd5b816001600160a01b03163b5f0361154a576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b0316836040516115649190611749565b5f604051808303815f865af19150503d805f811461159d576040519150601f19603f3d011682016040523d82523d5f602084013e6115a2565b606091505b50915091508115806115dc57508051158015906115dc5750805160201415806115dc5750808060200190518101906115da9190611901565b155b1561123d576040516312171d8360e31b815260040160405180910390fd5b5f5f6020838503121561160b575f5ffd5b823567ffffffffffffffff811115611621575f5ffd5b8301601f81018513611631575f5ffd5b803567ffffffffffffffff811115611647575f5ffd5b856020828401011115611658575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6116a86020830184611668565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610971576109716116af565b81810381811115610971576109716116af565b8082028115828204841417610971576109716116af565b634e487b7160e01b5f52601260045260245ffd5b5f8261172257611722611700565b500690565b5f8261173557611735611700565b500490565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561176f575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561179a575f5ffd5b815167ffffffffffffffff8111156117b0575f5ffd5b8201601f810184136117c0575f5ffd5b805167ffffffffffffffff8111156117da576117da611776565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561180957611809611776565b604052818152828201602001861015611820575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561184d575f5ffd5b5035919050565b5f600160ff1b8201611868576118686116af565b505f0390565b83546001600160a01b0390811682526001850154808216602084015260a081811c62ffffff16604085015260b89190911c600290810b606085015286015490911660808301525f906118e190830185805115158252602080820151908301526040908101516001600160a01b0316910152565b6101206101008301526118f8610120830184611668565b95945050505050565b5f60208284031215611911575f5ffd5b815180151581146116a8575f5ffdfea264697066735822122023db6dad5ef49f66ade45271ae5bdbe53c7cf0a96f6aeccddd9a5ca7777c07cb64736f6c634300081c0033",
  "deployedBytecode": "0x608060405260043610610113575f3560e01c8063787a08a61161009d578063b38ca79911610062578063b38ca79914610462578063e1f1176d14610495578063e7b3d684146104c8578063eaed3f4f146104dc578063f20eaeb81461050f575f5ffd5b8063787a08a61461034557806391dd73461461038d578063a4522535146103b9578063b03e6478146103ec578063b269681d1461042f575f5ffd5b8063481c6a75116100e3578063481c6a751461026957806348dddca8146102b457806361461954146102e75780636774a7d8146102fd57806371dbc3f514610330575f5ffd5b8063182148ef1461011e5780633c3f4c63146101aa5780633e0dc34e146101f55780633fe1b98014610236575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b5060015460028054600354610165936001600160a01b03908116938382169362ffffff600160a01b82041693600160b81b90910490910b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a0015b60405180910390f35b3480156101b5575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b0390911681526020016101a1565b348015610200575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a1565b348015610241575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610274575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101a1565b3480156102bf575f5ffd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f2575f5ffd5b506102fb610542565b005b348015610308575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b34801561033b575f5ffd5b5061022860055481565b348015610350575f5ffd5b506103787f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101a1565b348015610398575f5ffd5b506103ac6103a73660046115fa565b6108d7565b6040516101a19190611696565b3480156103c4575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f7575f5ffd5b5061041f7f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016101a1565b34801561043a575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046d575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506102287f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d3575f5ffd5b506102fb610977565b3480156104e7575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a575f5ffd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b5f5415610562576040516306fda65d60e31b815260040160405180910390fd5b60015f556005544210156105895760405163011850d160e61b815260040160405180910390fd5b5f6105b37f00000000000000000000000000000000000000000000000000000000000000006109d1565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168210610615577f00000000000000000000000000000000000000000000000000000000000000006001600160801b0316610617565b815b90507f00000000000000000000000000000000000000000000000000000000000000006001600160801b03168110156106635760405163011850d160e61b815260040160405180910390fd5b5f61068d7f00000000000000000000000000000000000000000000000000000000000000006109d1565b90506106bf63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426116c3565b60055560408051602081018490526106e69101604051602081830303815290604052610ac2565b5f6107107f00000000000000000000000000000000000000000000000000000000000000006109d1565b61071a90856116d6565b90505f826107477f00000000000000000000000000000000000000000000000000000000000000006109d1565b61075191906116d6565b90505f6107876001600160801b037f000000000000000000000000000000000000000000000000000000000000000016846116e9565b90505f61079c670de0b6b3a764000083611714565b156107a85760016107aa565b5f5b60ff166107bf670de0b6b3a764000084611727565b6107c991906116c3565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160801b031684108061080157508584115b8061080a575082155b8061081457508083105b156108325760405163011850d160e61b815260040160405180910390fd5b61083b83610c37565b60408051858152602081018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316818301527f00000000000000000000000000000000000000000000000000000000000000001515606082015290517fbe879e4a96692ae2b7163206e55c3b390395b97e094bacf797a51b9f544b3b7e9181900360800190a150505f80555050505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806109115750600454155b806109355750600454838360405161092a92919061173a565b604051809103902014155b1561095357604051637ae3640d60e11b815260040160405180910390fd5b5f6004556109618383610fd5565b5060408051602081019091525f81525b92915050565b5f5415610997576040516306fda65d60e31b815260040160405180910390fd5b60015f556109cc6109c77f00000000000000000000000000000000000000000000000000000000000000006109d1565b610c37565b5f8055565b5f6001600160a01b0382166109e7575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b17905251610a379190611749565b5f60405180830381855afa9150503d805f8114610a6f576040519150601f19603f3d011682016040523d82523d5f602084013e610a74565b606091505b5091509150811580610a8857508051602014155b15610aa6576040516312171d8360e31b815260040160405180910390fd5b80806020019051810190610aba919061175f565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163f141580610b5c57506003546001600160a01b031615801590610b5c57506003546001600160a01b03163f7f000000000000000000000000000000000000000000000000000000000000000014155b15610b7a5760405163255e8c8d60e01b815260040160405180910390fd5b8051602082012060049081556040516348c8949160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916348c8949191610bd091859101611696565b5f604051808303815f875af1158015610beb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c12919081019061178a565b5060045415610c3457604051637ae3640d60e11b815260040160405180910390fd5b50565b805f03610c415750565b7f0000000000000000000000000000000000000000000000000000000000000000610cb157610c347f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836111b3565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290515f9182916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610d1391611749565b5f60405180830381855afa9150503d805f8114610d4b576040519150601f19603f3d011682016040523d82523d5f602084013e610d50565b606091505b5091509150811580610d6457508051602014155b15610d82576040516312171d8360e31b815260040160405180910390fd5b5f81806020019051810190610d97919061175f565b90505f610dc37f00000000000000000000000000000000000000000000000000000000000000006109d1565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604051602401610e0291815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b17905251610e379190611749565b5f604051808303815f865af19150503d805f8114610e70576040519150601f19603f3d011682016040523d82523d5f602084013e610e75565b606091505b50508094505083610e99576040516312171d8360e31b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610ef791611749565b5f60405180830381855afa9150503d805f8114610f2f576040519150601f19603f3d011682016040523d82523d5f602084013e610f34565b606091505b509094509250831580610f4957508251602014155b80610f725750818584806020019051810190610f65919061175f565b610f6f91906116c3565b14155b80610fb057508085610fa37f00000000000000000000000000000000000000000000000000000000000000006109d1565b610fad91906116c3565b14155b15610fce576040516312171d8360e31b815260040160405180910390fd5b5050505050565b5f610fe28284018461183d565b6001805460408051606081019091526001600160a01b039182167f00000000000000000000000000000000000000000000000000000000000000008316148082529394505f927f00000000000000000000000000000000000000000000000000000000000000009092169163f3cd914c916020810161106088611854565b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020918201526040805191820181525f8252516001600160e01b031960e086901b1681526110bf9392919060040161186e565b6020604051808303815f875af11580156110db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ff919061175f565b9050608081901d8183801561112457505f82600f0b12158061112457505f81600f0b13155b8061114857508315801561114857505f81600f0b12158061114857505f82600f0b13155b156111665760405163011850d160e61b815260040160405180910390fd5b600154611188906001600160a01b03168386611182575f611299565b87611299565b6002546111aa906001600160a01b031682866111a45787611299565b5f611299565b50505050505050565b805f036111bf57505050565b6001600160a01b038316611243575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611216576040519150601f19603f3d011682016040523d82523d5f602084013e61121b565b606091505b505090508061123d576040516312171d8360e31b815260040160405180910390fd5b50505050565b6040516001600160a01b03831660248201526044810182905261129490849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052611520565b505050565b5f82600f0b121561148e575f82600f0b6112b290611854565b9050818111156112d55760405163011850d160e61b815260040160405180910390fd5b6001600160a01b03841661136c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015611341573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611366919061175f565b5061123d565b604051632961046560e21b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b1580156113cc575f5ffd5b505af11580156113de573d5f5f3e3d5ffd5b5050505061140d847f0000000000000000000000000000000000000000000000000000000000000000836111b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561146a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fce919061175f565b5f82600f0b131561129457604051630b0d9c0960e01b81526001600160a01b0384811660048301523060248301526001600160801b03841660448301527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b15801561150e575f5ffd5b505af11580156111aa573d5f5f3e3d5ffd5b816001600160a01b03163b5f0361154a576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b0316836040516115649190611749565b5f604051808303815f865af19150503d805f811461159d576040519150601f19603f3d011682016040523d82523d5f602084013e6115a2565b606091505b50915091508115806115dc57508051158015906115dc5750805160201415806115dc5750808060200190518101906115da9190611901565b155b1561123d576040516312171d8360e31b815260040160405180910390fd5b5f5f6020838503121561160b575f5ffd5b823567ffffffffffffffff811115611621575f5ffd5b8301601f81018513611631575f5ffd5b803567ffffffffffffffff811115611647575f5ffd5b856020828401011115611658575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6116a86020830184611668565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610971576109716116af565b81810381811115610971576109716116af565b8082028115828204841417610971576109716116af565b634e487b7160e01b5f52601260045260245ffd5b5f8261172257611722611700565b500690565b5f8261173557611735611700565b500490565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561176f575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561179a575f5ffd5b815167ffffffffffffffff8111156117b0575f5ffd5b8201601f810184136117c0575f5ffd5b805167ffffffffffffffff8111156117da576117da611776565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561180957611809611776565b604052818152828201602001861015611820575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561184d575f5ffd5b5035919050565b5f600160ff1b8201611868576118686116af565b505f0390565b83546001600160a01b0390811682526001850154808216602084015260a081811c62ffffff16604085015260b89190911c600290810b606085015286015490911660808301525f906118e190830185805115158252602080820151908301526040908101516001600160a01b0316910152565b6101206101008301526118f8610120830184611668565b95945050505050565b5f60208284031215611911575f5ffd5b815180151581146116a8575f5ffdfea264697066735822122023db6dad5ef49f66ade45271ae5bdbe53c7cf0a96f6aeccddd9a5ca7777c07cb64736f6c634300081c0033",
  "immutableReferences": {
    "9": [
      {
        "start": 1261,
        "length": 32
      },
      {
        "start": 1423,
        "length": 32
      },
      {
        "start": 1772,
        "length": 32
      },
      {
        "start": 4094,
        "length": 32
      }
    ],
    "11": [
      {
        "start": 1312,
        "length": 32
      },
      {
        "start": 1641,
        "length": 32
      },
      {
        "start": 1827,
        "length": 32
      },
      {
        "start": 2467,
        "length": 32
      },
      {
        "start": 3179,
        "length": 32
      },
      {
        "start": 3305,
        "length": 32
      },
      {
        "start": 3487,
        "length": 32
      },
      {
        "start": 3527,
        "length": 32
      },
      {
        "start": 3789,
        "length": 32
      },
      {
        "start": 3967,
        "length": 32
      }
    ],
    "13": [
      {
        "start": 1088,
        "length": 32
      },
      {
        "start": 2123,
        "length": 32
      },
      {
        "start": 3212,
        "length": 32
      }
    ],
    "15": [
      {
        "start": 1021,
        "length": 32
      },
      {
        "start": 2169,
        "length": 32
      },
      {
        "start": 3139,
        "length": 32
      }
    ],
    "17": [
      {
        "start": 443,
        "length": 32
      },
      {
        "start": 1464,
        "length": 32
      },
      {
        "start": 1512,
        "length": 32
      }
    ],
    "19": [
      {
        "start": 709,
        "length": 32
      },
      {
        "start": 1563,
        "length": 32
      },
      {
        "start": 1997,
        "length": 32
      }
    ],
    "21": [
      {
        "start": 583,
        "length": 32
      },
      {
        "start": 1889,
        "length": 32
      }
    ],
    "23": [
      {
        "start": 854,
        "length": 32
      },
      {
        "start": 1689,
        "length": 32
      }
    ],
    "25": [
      {
        "start": 1139,
        "length": 32
      },
      {
        "start": 4204,
        "length": 32
      }
    ],
    "27": [
      {
        "start": 1190,
        "length": 32
      }
    ],
    "3273": [
      {
        "start": 634,
        "length": 32
      },
      {
        "start": 2276,
        "length": 32
      },
      {
        "start": 2789,
        "length": 32
      },
      {
        "start": 2973,
        "length": 32
      },
      {
        "start": 4138,
        "length": 32
      },
      {
        "start": 4837,
        "length": 32
      },
      {
        "start": 5003,
        "length": 32
      },
      {
        "start": 5096,
        "length": 32
      },
      {
        "start": 5135,
        "length": 32
      },
      {
        "start": 5325,
        "length": 32
      }
    ],
    "3275": [
      {
        "start": 782,
        "length": 32
      },
      {
        "start": 2756,
        "length": 32
      }
    ],
    "3277": [
      {
        "start": 970,
        "length": 32
      },
      {
        "start": 2874,
        "length": 32
      }
    ],
    "3279": [
      {
        "start": 518,
        "length": 32
      }
    ]
  },
  "creationCodeHash": "0x3d79a3d8e450983a41071bdf16f83a3f8b66fb209ebc1c8bffb256e7cd312568"
}
