@cryptoalgebra/integral-periphery
Version:
Peripheral smart contracts of Algebra Integral protocol
384 lines (383 loc) • 40.2 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "V3Migrator",
"sourceName": "contracts/V3Migrator.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_factory",
"type": "address"
},
{
"internalType": "address",
"name": "_WNativeToken",
"type": "address"
},
{
"internalType": "address",
"name": "_nonfungiblePositionManager",
"type": "address"
},
{
"internalType": "address",
"name": "_poolDeployer",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "WNativeToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token0",
"type": "address"
},
{
"internalType": "address",
"name": "token1",
"type": "address"
},
{
"internalType": "address",
"name": "deployer",
"type": "address"
},
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "createAndInitializePoolIfNecessary",
"outputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"internalType": "uint256",
"name": "liquidityToMigrate",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "percentageToMigrate",
"type": "uint8"
},
{
"internalType": "address",
"name": "token0",
"type": "address"
},
{
"internalType": "address",
"name": "token1",
"type": "address"
},
{
"internalType": "address",
"name": "deployer",
"type": "address"
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
},
{
"internalType": "uint256",
"name": "amount0Min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Min",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "bool",
"name": "refundAsNative",
"type": "bool"
}
],
"internalType": "struct IV3Migrator.MigrateParams",
"name": "params",
"type": "tuple"
}
],
"name": "migrate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes[]",
"name": "data",
"type": "bytes[]"
}
],
"name": "multicall",
"outputs": [
{
"internalType": "bytes[]",
"name": "results",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "nonfungiblePositionManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poolDeployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "selfPermit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "selfPermitAllowed",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "selfPermitAllowedIfNecessary",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "selfPermitIfNecessary",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6101006040523480156200001257600080fd5b5060405162001f9138038062001f91833981016040819052620000359162000075565b6001600160a01b03938416608052831660a05290821660c0521660e052620000d2565b80516001600160a01b03811681146200007057600080fd5b919050565b600080600080608085870312156200008c57600080fd5b620000978562000058565b9350620000a76020860162000058565b9250620000b76040860162000058565b9150620000c76060860162000058565b905092959194509250565b60805160a05160c05160e051611e40620001516000396000818161028d01528181610b5f01528181610b9901528181610bc30152610da201526000818160dd0152818161020601528181610e0601528181610e8201528181610f7f0152610ffb015260006101820152600081816102d4015261045d0152611e406000f3fe6080604052600436106100c05760003560e01c8063ac9650d811610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063ac9650d81461023b578063ad40d1311461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638af3ac85146101f4578063a4a78f0c1461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116bd565b610309565b6101a46101ef366004611719565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102363660046116bd565b610713565b61024e6102493660046117d5565b610759565b6040516101c5919061186e565b34801561026757600080fd5b50610169610276366004611924565b61087a565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116bd565b611099565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116bd565b6110b3565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f919061193d565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061193d565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b9089908990600401611961565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa919061193d565b91506106b68286611130565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff166111ad565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611130565b505b509695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61073d8761122a565b101561075157610751868686868686610309565b505050505050565b60608167ffffffffffffffff811115610774576107746119d9565b6040519080825280602002602001820160405280156107a757816020015b60608152602001906001900390816107925790505b50905060005b8281101561087357600080308686858181106107cb576107cb611a08565b90506020028101906107dd9190611a37565b6040516107eb929190611aa3565b600060405180830381855af49150503d8060008114610826576040519150601f19603f3d011682016040523d82523d6000602084013e61082b565b606091505b50915091508161084b57600081511161084357600080fd5b805181602001fd5b8084848151811061085e5761085e611a08565b602090810291909101015250506001016107ad565b5092915050565b600061088c6060830160408401611ab3565b60ff16116108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646109086060830160408401611ab3565b60ff161115610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6109806020820182611ad0565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336109a96020850185611ad0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190611afb565b50600080610a5a6020840184611ad0565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190611b18565b909250905060006064610b046060860160408701611ab3565b610b119060ff1685611b6b565b610b1b9190611b82565b905060006064610b316060870160408801611ab3565b610b3e9060ff1685611b6b565b610b489190611b82565b9050610b84610b5d6080870160608801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000846112c7565b610bbe610b9760a0870160808801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000836112c7565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe3f3be76040518061016001604052808a6060016020810190610c1c9190611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c4760a08c0160808d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c7260c08c0160a08d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c9d60e08c0160c08d01611bcc565b60020b8152602001610cb66101008c0160e08d01611bcc565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610cf46101608c016101408d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610d349190611be9565b6080604051808303816000875af1158015610d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d779190611ce5565b93509350505085821015610f1e5783821015610dc857610dc8610da06080890160608a01611ad0565b7f000000000000000000000000000000000000000000000000000000000000000060006112c7565b6000610dd48388611d38565b9050610de86101a089016101808a01611d4b565b8015610e4e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610e3660808a0160608b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f02576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b50505050610efd3382611437565b610f1c565b610f1c610f1560808a0160608b01611ad0565b3383611520565b505b848110156110905782811015610f4157610f41610da060a0890160808a01611ad0565b6000610f4d8287611d38565b9050610f616101a089016101808a01611d4b565b8015610fc7575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610faf60a08a0160808b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b1561107b576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b505050506110763382611437565b61108e565b61108e610f1560a08a0160808b01611ad0565b505b50505050505050565b846110a38761122a565b1015610751576107518686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b15801561119957600080fd5b505af1158015610751573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e9190611d7f565b50939695505050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c19190611dfe565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161135e9190611e17565b6000604051808303816000865af19150503d806000811461139b576040519150601f19603f3d011682016040523d82523d6000602084013e6113a0565b606091505b50915091508180156113ca5750805115806113ca5750808060200190518101906113ca9190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161146e9190611e17565b60006040518083038185875af1925050503d80600081146114ab576040519150601f19603f3d011682016040523d82523d6000602084013e6114b0565b606091505b505090508061151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115b79190611e17565b6000604051808303816000865af19150503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50915091508180156116235750805115806116235750808060200190518101906116239190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff811681146116ab57600080fd5b50565b60ff811681146116ab57600080fd5b60008060008060008060c087890312156116d657600080fd5b86356116e181611689565b9550602087013594506040870135935060608701356116ff816116ae565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561173257600080fd5b863561173d81611689565b9550602087013561174d81611689565b9450604087013561175d81611689565b9350606087013561176d81611689565b9250608087013567ffffffffffffffff8082111561178a57600080fd5b818901915089601f83011261179e57600080fd5b8135818111156117ad57600080fd5b8a60208285010111156117bf57600080fd5b6020830194508093505050509295509295509295565b600080602083850312156117e857600080fd5b823567ffffffffffffffff8082111561180057600080fd5b818501915085601f83011261181457600080fd5b81358181111561182357600080fd5b8660208260051b850101111561183857600080fd5b60209290920196919550909350505050565b60005b8381101561186557818101518382015260200161184d565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526118da818989018a850161184a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101611895565b5092979650505050505050565b60006101a0828403121561193757600080fd5b50919050565b60006020828403121561194f57600080fd5b815161195a81611689565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6c57600080fd5b83018035915067ffffffffffffffff821115611a8757600080fd5b602001915036819003821315611a9c57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611ac557600080fd5b813561195a816116ae565b600060208284031215611ae257600080fd5b813561195a81611689565b80151581146116ab57600080fd5b600060208284031215611b0d57600080fd5b815161195a81611aed565b60008060408385031215611b2b57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176112c1576112c1611b3c565b600082611bb8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b81146116ab57600080fd5b600060208284031215611bde57600080fd5b813561195a81611bbd565b815173ffffffffffffffffffffffffffffffffffffffff16815261016081016020830151611c2f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611c57604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151611c6c606084018260020b9052565b506080830151611c81608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611cd48285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061014092830151919092015290565b60008060008060808587031215611cfb57600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d2257600080fd5b6040860151606090960151949790965092505050565b818103818111156112c1576112c1611b3c565b600060208284031215611d5d57600080fd5b813561195a81611aed565b805161ffff81168114611d7a57600080fd5b919050565b60008060008060008060c08789031215611d9857600080fd5b8651611da381611689565b6020880151909650611db481611bbd565b9450611dc260408801611d68565b93506060870151611dd2816116ae565b9250611de060808801611d68565b915060a0870151611df081611aed565b809150509295509295509295565b600060208284031215611e1057600080fd5b5051919050565b60008251611e2981846020870161184a565b919091019291505056fea164736f6c6343000814000a",
"deployedBytecode": "0x6080604052600436106100c05760003560e01c8063ac9650d811610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063ac9650d81461023b578063ad40d1311461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638af3ac85146101f4578063a4a78f0c1461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116bd565b610309565b6101a46101ef366004611719565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102363660046116bd565b610713565b61024e6102493660046117d5565b610759565b6040516101c5919061186e565b34801561026757600080fd5b50610169610276366004611924565b61087a565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116bd565b611099565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116bd565b6110b3565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f919061193d565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061193d565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b9089908990600401611961565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa919061193d565b91506106b68286611130565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff166111ad565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611130565b505b509695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61073d8761122a565b101561075157610751868686868686610309565b505050505050565b60608167ffffffffffffffff811115610774576107746119d9565b6040519080825280602002602001820160405280156107a757816020015b60608152602001906001900390816107925790505b50905060005b8281101561087357600080308686858181106107cb576107cb611a08565b90506020028101906107dd9190611a37565b6040516107eb929190611aa3565b600060405180830381855af49150503d8060008114610826576040519150601f19603f3d011682016040523d82523d6000602084013e61082b565b606091505b50915091508161084b57600081511161084357600080fd5b805181602001fd5b8084848151811061085e5761085e611a08565b602090810291909101015250506001016107ad565b5092915050565b600061088c6060830160408401611ab3565b60ff16116108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646109086060830160408401611ab3565b60ff161115610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6109806020820182611ad0565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336109a96020850185611ad0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190611afb565b50600080610a5a6020840184611ad0565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190611b18565b909250905060006064610b046060860160408701611ab3565b610b119060ff1685611b6b565b610b1b9190611b82565b905060006064610b316060870160408801611ab3565b610b3e9060ff1685611b6b565b610b489190611b82565b9050610b84610b5d6080870160608801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000846112c7565b610bbe610b9760a0870160808801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000836112c7565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe3f3be76040518061016001604052808a6060016020810190610c1c9190611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c4760a08c0160808d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c7260c08c0160a08d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c9d60e08c0160c08d01611bcc565b60020b8152602001610cb66101008c0160e08d01611bcc565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610cf46101608c016101408d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610d349190611be9565b6080604051808303816000875af1158015610d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d779190611ce5565b93509350505085821015610f1e5783821015610dc857610dc8610da06080890160608a01611ad0565b7f000000000000000000000000000000000000000000000000000000000000000060006112c7565b6000610dd48388611d38565b9050610de86101a089016101808a01611d4b565b8015610e4e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610e3660808a0160608b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f02576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b50505050610efd3382611437565b610f1c565b610f1c610f1560808a0160608b01611ad0565b3383611520565b505b848110156110905782811015610f4157610f41610da060a0890160808a01611ad0565b6000610f4d8287611d38565b9050610f616101a089016101808a01611d4b565b8015610fc7575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610faf60a08a0160808b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b1561107b576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b505050506110763382611437565b61108e565b61108e610f1560a08a0160808b01611ad0565b505b50505050505050565b846110a38761122a565b1015610751576107518686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b15801561119957600080fd5b505af1158015610751573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e9190611d7f565b50939695505050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c19190611dfe565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161135e9190611e17565b6000604051808303816000865af19150503d806000811461139b576040519150601f19603f3d011682016040523d82523d6000602084013e6113a0565b606091505b50915091508180156113ca5750805115806113ca5750808060200190518101906113ca9190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161146e9190611e17565b60006040518083038185875af1925050503d80600081146114ab576040519150601f19603f3d011682016040523d82523d6000602084013e6114b0565b606091505b505090508061151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115b79190611e17565b6000604051808303816000865af19150503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50915091508180156116235750805115806116235750808060200190518101906116239190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff811681146116ab57600080fd5b50565b60ff811681146116ab57600080fd5b60008060008060008060c087890312156116d657600080fd5b86356116e181611689565b9550602087013594506040870135935060608701356116ff816116ae565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561173257600080fd5b863561173d81611689565b9550602087013561174d81611689565b9450604087013561175d81611689565b9350606087013561176d81611689565b9250608087013567ffffffffffffffff8082111561178a57600080fd5b818901915089601f83011261179e57600080fd5b8135818111156117ad57600080fd5b8a60208285010111156117bf57600080fd5b6020830194508093505050509295509295509295565b600080602083850312156117e857600080fd5b823567ffffffffffffffff8082111561180057600080fd5b818501915085601f83011261181457600080fd5b81358181111561182357600080fd5b8660208260051b850101111561183857600080fd5b60209290920196919550909350505050565b60005b8381101561186557818101518382015260200161184d565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526118da818989018a850161184a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101611895565b5092979650505050505050565b60006101a0828403121561193757600080fd5b50919050565b60006020828403121561194f57600080fd5b815161195a81611689565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6c57600080fd5b83018035915067ffffffffffffffff821115611a8757600080fd5b602001915036819003821315611a9c57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611ac557600080fd5b813561195a816116ae565b600060208284031215611ae257600080fd5b813561195a81611689565b80151581146116ab57600080fd5b600060208284031215611b0d57600080fd5b815161195a81611aed565b60008060408385031215611b2b57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176112c1576112c1611b3c565b600082611bb8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b81146116ab57600080fd5b600060208284031215611bde57600080fd5b813561195a81611bbd565b815173ffffffffffffffffffffffffffffffffffffffff16815261016081016020830151611c2f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611c57604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151611c6c606084018260020b9052565b506080830151611c81608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611cd48285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061014092830151919092015290565b60008060008060808587031215611cfb57600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d2257600080fd5b6040860151606090960151949790965092505050565b818103818111156112c1576112c1611b3c565b600060208284031215611d5d57600080fd5b813561195a81611aed565b805161ffff81168114611d7a57600080fd5b919050565b60008060008060008060c08789031215611d9857600080fd5b8651611da381611689565b6020880151909650611db481611bbd565b9450611dc260408801611d68565b93506060870151611dd2816116ae565b9250611de060808801611d68565b915060a0870151611df081611aed565b809150509295509295509295565b600060208284031215611e1057600080fd5b5051919050565b60008251611e2981846020870161184a565b919091019291505056fea164736f6c6343000814000a",
"linkReferences": {},
"deployedLinkReferences": {}
}