harb/subgraph/base_sepolia/abis/Stake.json
giteadmin c5d94403e1 Rename project from HARB/Harberg to KRAIKEN with KRK token symbol
- Renamed core contract from Harberg.sol to Kraiken.sol
- Updated token symbol from HARB to KRK
- Renamed TypeScript library from harb-lib to kraiken-lib
- Updated all contract imports and references across the codebase
- Modified subgraph schema and source files for new naming
- Updated transaction bot dependencies and service references
- Fixed test files to use new contract and token names
- Updated documentation in CLAUDE.md and README.md
- Regenerated subgraph types and ABI files

All components compile successfully and tests pass.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 13:47:00 +02:00

1 line
No EOL
103 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"_kraiken","type":"address","internalType":"address"},{"name":"_taxReceiver","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"TAX_RATES","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"assetsToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"changeTax","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"taxRate","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exitPosition","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAverageTaxRate","inputs":[],"outputs":[{"name":"averageTaxRate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPercentageStaked","inputs":[],"outputs":[{"name":"percentageStaked","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nextPositionId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"outstandingStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payTax","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"permitAndSnatch","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRate","type":"uint32","internalType":"uint32"},{"name":"positionsToSnatch","type":"uint256[]","internalType":"uint256[]"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"positions","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"share","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"},{"name":"creationTime","type":"uint32","internalType":"uint32"},{"name":"lastTaxTime","type":"uint32","internalType":"uint32"},{"name":"taxRate","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"sharesToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"snatch","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRate","type":"uint32","internalType":"uint32"},{"name":"positionsToSnatch","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"taxDue","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"taxFloorDuration","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountDue","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSharesAtTaxRate","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"PositionCreated","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"kraikenDeposit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"share","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"taxRate","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"PositionRateHiked","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"newTaxRate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionRemoved","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"kraikenPayout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionShrunk","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"newShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"kraikenPayout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionTaxPaid","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"taxPaid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"taxRate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ExceededAvailableStake","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"stakeWanted","type":"uint256","internalType":"uint256"},{"name":"availableStake","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NoPermission","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"PositionNotFound","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"requester","type":"address","internalType":"address"}]},{"type":"error","name":"StakeTooLow","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"minStake","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TaxTooLow","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRateWanted","type":"uint64","internalType":"uint64"},{"name":"taxRateMet","type":"uint64","internalType":"uint64"},{"name":"positionId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TooMuchSnatch","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"stakeWanted","type":"uint256","internalType":"uint256"},{"name":"availableStake","type":"uint256","internalType":"uint256"},{"name":"smallestShare","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60075f556104a0604052600160e08181526003610100526005610120526008610140908152600c6101605260126101805260186101a052601e6101c081905260286101e052603261020052603c6102205260506102405260646102605260826102805260b46102a05260fa6102c0526102e0919091526101a46103005261021c610320526102bc61034052610398610360526104b0610380526106406103a0526107d06103c052610a286103e052610d48610400526111306104205261164461044052611d4c610460526125e4610480526100db929190610200565b503480156100e7575f5ffd5b506040516122cb3803806122cb833981016040819052610106916102b7565b6001600160a01b03808316608081905290821660a0525f546040805163313ce56760e01b8152905191929163313ce567916004808201926020929091908290030181865afa15801561015a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017e91906102e8565b60ff1661018b9190610323565b61019690600a61041f565b60c0526209fbf16003556001546001600160401b038111156101ba576101ba61042a565b6040519080825280602002602001820160405280156101e3578160200160208202803683370190505b5080516101f89160059160209091019061024f565b50505061043e565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f578251829061ffff1690559160200191906001019061021e565b5061024b929150610288565b5090565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f57825182559160200191906001019061026d565b5b8082111561024b575f8155600101610289565b80516001600160a01b03811681146102b2575f5ffd5b919050565b5f5f604083850312156102c8575f5ffd5b6102d18361029c565b91506102df6020840161029c565b90509250929050565b5f602082840312156102f8575f5ffd5b815160ff81168114610308575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103365761033661030f565b92915050565b6001815b60018411156103775780850481111561035b5761035b61030f565b600184161561036957908102905b60019390931c928002610340565b935093915050565b5f8261038d57506001610336565b8161039957505f610336565b81600181146103af57600281146103b9576103d5565b6001915050610336565b60ff8411156103ca576103ca61030f565b50506001821b610336565b5060208310610133831016604e8410600b84101617156103f8575081810a610336565b6104045f19848461033c565b805f19048211156104175761041761030f565b029392505050565b5f610308838361037f565b634e487b7160e01b5f52604160045260245ffd5b60805160a05160c051611e166104b55f395f818161012a015281816105860152818161094201528181610b2801526115e301525f61144801525f81816103de015281816105040152818161096301528181610a1801528181610f58015281816114270152818161155001526117220152611e165ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122098374021a393cce0ff30820fda72b3b8d4f50edf8c1b7f7b1daf2751405049c764736f6c634300081c0033","sourceMap":"1918:5:78:-:0;1884:39;;2314:418;1663:17901;2314:418;2353:1;1663:17901;2314:418;;;2364:1;2314:418;;2375:1;2314:418;;2386:1;2314:418;;;;2397:2;2314:418;;2409:2;2314:418;;2421:2;2314:418;;2433:2;2314:418;;;;2445:2;2314:418;;2457:2;2314:418;;2469:2;2314:418;;2481:2;2314:418;;2493:3;2314:418;;2506:3;2314:418;;2519:3;2314:418;;2532:3;2314:418;;;;;;;2558:3;2314:418;;2571:3;2314:418;;2584:3;2314:418;;2597:3;2314:418;;2610:4;2314:418;;2624:4;2314:418;;2638:4;2314:418;;2652:4;2314:418;;2666:4;2314:418;;2680:4;2314:418;;2694:4;2314:418;;2708:4;2314:418;;2722:4;2314:418;;;;2353:1;1663:17901;2314:418;:::i;:::-;;4749:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4811:27:78;;;;;;;4848:26;;;;;4926:14;;4905:18;;;-1:-1:-1;;;4905:18:78;;;;4926:14;;4811:27;4905:16;;:18;;;;;;;;;;;;;;;4811:27;4905:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;;;;;:::i;:::-;4898:43;;:2;:43;:::i;:::-;4884:57;;5004:6;4987:14;:23;5106:9;:16;-1:-1:-1;;;;;5092:31:78;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5092:31:78;-1:-1:-1;5069:54:78;;;;:20;;:54;;;;;;:::i;:::-;;4749:381;;1663:17901;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1663:17901:78;;;-1:-1:-1;1663:17901:78;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:177:98;93:13;;-1:-1:-1;;;;;135:31:98;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:273::-;562:6;615:2;603:9;594:7;590:23;586:32;583:52;;;631:1;628;621:12;583:52;663:9;657:16;713:4;706:5;702:16;695:5;692:27;682:55;;733:1;730;723:12;682:55;756:5;494:273;-1:-1:-1;;;494:273:98:o;772:127::-;833:10;828:3;824:20;821:1;814:31;864:4;861:1;854:15;888:4;885:1;878:15;904:125;969:9;;;990:10;;;987:36;;;1003:18;;:::i;:::-;904:125;;;;:::o;1034:375::-;1122:1;1140:5;1154:249;1175:1;1165:8;1162:15;1154:249;;;1225:4;1220:3;1216:14;1210:4;1207:24;1204:50;;;1234:18;;:::i;:::-;1284:1;1274:8;1270:16;1267:49;;;1298:16;;;;1267:49;1381:1;1377:16;;;;;1337:15;;1154:249;;;1034:375;;;;;;:::o;1414:902::-;1463:5;1493:8;1483:80;;-1:-1:-1;1534:1:98;1548:5;;1483:80;1582:4;1572:76;;-1:-1:-1;1619:1:98;1633:5;;1572:76;1664:4;1682:1;1677:59;;;;1750:1;1745:174;;;;1657:262;;1677:59;1707:1;1698:10;;1721:5;;;1745:174;1782:3;1772:8;1769:17;1766:43;;;1789:18;;:::i;:::-;-1:-1:-1;;1845:1:98;1831:16;;1904:5;;1657:262;;2003:2;1993:8;1990:16;1984:3;1978:4;1975:13;1971:36;1965:2;1955:8;1952:16;1947:2;1941:4;1938:12;1934:35;1931:77;1928:203;;;-1:-1:-1;2040:19:98;;;2116:5;;1928:203;2163:42;-1:-1:-1;;2188:8:98;2182:4;2163:42;:::i;:::-;2241:6;2237:1;2233:6;2229:19;2220:7;2217:32;2214:58;;;2252:18;;:::i;:::-;2290:20;;1414:902;-1:-1:-1;;;1414:902:98:o;2321:131::-;2381:5;2410:36;2437:8;2431:4;2410:36;:::i;2457:127::-;2518:10;2513:3;2509:20;2506:1;2499:31;2549:4;2546:1;2539:15;2573:4;2570:1;2563:15;2457:127;1663:17901:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122098374021a393cce0ff30820fda72b3b8d4f50edf8c1b7f7b1daf2751405049c764736f6c634300081c0033","sourceMap":"1663:17901:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:418;;;;;;:::i;:::-;;:::i;:::-;;;391:25:98;;;379:2;364:18;2314:418:78;;;;;;;;4150:36;;;;;18634:545;;;:::i;4192:31::-;;;;;;14647:524;;;;;;:::i;:::-;;:::i;16583:504::-;;;;;;:::i;:::-;;:::i;:::-;;9142:163;;;;;;:::i;:::-;;:::i;4229:29::-;;;;;;4265:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4265:52:78;;;;-1:-1:-1;;;4265:52:78;;;;;-1:-1:-1;;;4265:52:78;;;;;-1:-1:-1;;;4265:52:78;;;;;;;;;;2630:25:98;;;-1:-1:-1;;;;;2691:32:98;;;2686:2;2671:18;;2664:60;2772:10;2760:23;;;2740:18;;;2733:51;;;;2820:23;;2815:2;2800:18;;2793:51;2881:23;2875:3;2860:19;;2853:52;2617:3;2602:19;4265:52:78;2377:534:98;17931:605:78;;;;;;:::i;:::-;;:::i;17351:258::-;;;;;;:::i;:::-;;:::i;15497:801::-;;;;;;:::i;:::-;;:::i;4384:37::-;;;;;;:::i;:::-;;:::i;8756:163::-;;;;;;:::i;:::-;;:::i;19401:161::-;;;:::i;9923:4075::-;;;;;;:::i;:::-;;:::i;2314:418::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2314:418:78;:::o;18634:545::-;18807:16;;18686:22;;18807:20;18803:370;;18848:9;18843:136;18867:9;:16;18863:20;;18843:136;;;18941:20;18962:1;18941:23;;;;;;;;:::i;:::-;;;;;;;;;18926:9;18936:1;18926:12;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;:::i;:::-;18908:56;;;;:::i;:::-;;-1:-1:-1;18885:3:78;;18843:136;;;-1:-1:-1;19026:16:78;;19009:33;;:14;:33;:::i;:::-;19131:9;19141:16;;18992:50;;-1:-1:-1;19131:9:78;19141:20;;19131:9;;19141:20;:::i;:::-;19131:31;;;;;;;;:::i;:::-;;;;;;;;;19107:14;19124:4;19107:21;;;;:::i;:::-;:55;;;;:::i;:::-;19090:72;;18803:370;18634:545;:::o;14647:524::-;15007:88;;-1:-1:-1;;;15007:88:78;;-1:-1:-1;;;;;5656:32:98;;;15007:88:78;;;5638:51:98;15062:4:78;5705:18:98;;;5698:60;5774:18;;;5767:34;;;5817:18;;;5810:34;;;5893:4;5881:17;;5860:19;;;5853:46;5915:19;;;5908:35;;;5959:19;;;5952:35;;;14977:18:78;;15027:7;15007:36;;;;;;5610:19:98;;15007:88:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15112:52;15119:6;15127:8;15137:7;15146:17;;15112:6;:52::i;:::-;15105:59;14647:524;-1:-1:-1;;;;;;;;;;14647:524:78:o;16583:504::-;16644:27;16674:21;;;:9;:21;;;;;16709:9;;;;-1:-1:-1;;;;;16709:9:78;16722:10;16709:23;16705:96;;16780:9;;;;16755:35;;-1:-1:-1;;;16755:35:78;;16768:10;16755:35;;;6172:51:98;-1:-1:-1;;;;;16780:9:78;;;6239:18:98;;;6232:60;6145:18;;16755:35:78;;;;;;;;16705:96;16814:16;;;;-1:-1:-1;;;16814:16:78;;;;16834:1;16814:21;16810:99;;16858:40;;-1:-1:-1;;;16858:40:78;;;;;6477:25:98;;;16887:10:78;6518:18:98;;;6511:60;6450:18;;16858:40:78;6303:274:98;16810:99:78;16996:44;17004:10;17016:3;2106:16;16996:7;:44::i;:::-;17050:30;17064:10;17076:3;17050:13;:30::i;:::-;16634:453;16583:504;:::o;9142:163::-;9203:7;9229:69;9243:7;-1:-1:-1;;;;;9243:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9229:6;;9266:11;9279:18;9229:13;:69::i;:::-;9222:76;9142:163;-1:-1:-1;;9142:163:78:o;17931:605::-;18014:17;18073:21;;;:9;:21;;;;;18189:16;;;;18014:17;;18208:16;;18171:34;;-1:-1:-1;;;18189:16:78;;;;18171:15;:34;:::i;:::-;:53;18170:135;;18290:15;18170:135;;;18240:16;;;;:35;;18259:16;;-1:-1:-1;;;18240:16:78;;;;:35;:::i;:::-;18344:15;;;;18155:150;;-1:-1:-1;18315:19:78;;18337:22;;-1:-1:-1;;;18344:15:78;;;;18155:150;18337:22;:::i;:::-;18315:44;;18369:20;18392:25;18407:3;:9;;;18392:14;:25::i;:::-;18369:48;;2855:3;18494:18;18479:11;18454:9;18464:3;:11;;;;;;;;;;;;18454:22;;;;;;;;;;:::i;:::-;;;;;;;;;18439:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;18427:102;17931:605;-1:-1:-1;;;;;;;17931:605:78:o;17351:258::-;17406:27;17436:21;;;:9;:21;;;;;17471:16;;;;17436:21;;-1:-1:-1;;;17471:16:78;;;;;:21;;17467:99;;17515:40;;-1:-1:-1;;;17515:40:78;;;;;6477:25:98;;;17544:10:78;6518:18:98;;;6511:60;6450:18;;17515:40:78;6303:274:98;17467:99:78;17575:27;17583:10;17595:3;17600:1;17575:7;:27::i;15497:801::-;15589:9;:16;15579:26;;;;15571:61;;;;-1:-1:-1;;;15571:61:78;;6973:2:98;15571:61:78;;;6955:21:98;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:98;;;7024:52;7093:18;;15571:61:78;6771:346:98;15571:61:78;15642:27;15672:21;;;:9;:21;;;;;15707:16;;;;15672:21;;-1:-1:-1;;;15707:16:78;;;;;:21;;15703:99;;15751:40;;-1:-1:-1;;;15751:40:78;;;;;6477:25:98;;;15780:10:78;6518:18:98;;;6511:60;6450:18;;15751:40:78;6303:274:98;15703:99:78;15815:9;;;;-1:-1:-1;;;;;15815:9:78;15828:10;15815:23;15811:96;;15886:9;;;;15861:35;;-1:-1:-1;;;15861:35:78;;15874:10;15861:35;;;6172:51:98;-1:-1:-1;;;;;15886:9:78;;;6239:18:98;;;6232:60;6145:18;;15861:35:78;5998:300:98;15811:96:78;16014:11;;;;;-1:-1:-1;;;16014:11:78;;;;;16004:21;;;;15996:55;;;;-1:-1:-1;;;15996:55:78;;7324:2:98;15996:55:78;;;7306:21:98;7363:2;7343:18;;;7336:30;-1:-1:-1;;;7382:18:98;;;7375:51;7443:18;;15996:55:78;7122:345:98;15996:55:78;16061:27;16069:10;16081:3;16086:1;16061:7;:27::i;:::-;16135:9;;16119:11;;;;16098:20;:33;;:20;;-1:-1:-1;;;16119:11:78;;;;;16098:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;16187:9:78;;16154:20;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;16206:11:78;;;:21;;-1:-1:-1;;;;;16206:21:78;;-1:-1:-1;;;16206:21:78;;;;;;;;;;;;16242:49;;7617:42:98;;;-1:-1:-1;;;;;16272:9:78;;;;;;;16260:10;;16242:49;;7605:2:98;7590:18;16242:49:78;;;;;;;15561:737;15497:801;;:::o;4384:37::-;;;;;;;;;;;;8756:163;8817:7;8843:69;8857:11;8870:7;-1:-1:-1;;;;;8870:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8843:6;;:69;8893:18;8843:13;:69::i;19401:161::-;19455:24;19538:17;:15;:17::i;:::-;19511:16;;:23;;19530:4;19511:23;:::i;9923:4075::-;10059:18;10125:20;10148:22;10163:6;10148:14;:22::i;:::-;10125:45;;10329:16;10348:7;-1:-1:-1;;;;;10348:16:78;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10329:37;;10393:8;10384:6;:17;10380:102;;;10428:39;;-1:-1:-1;;;10428:39:78;;-1:-1:-1;;;;;7890:32:98;;10428:39:78;;;7872:51:98;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;10428:39:78;7670:345:98;10380:102:78;-1:-1:-1;10519:9:78;:16;10509:26;;;;10501:61;;;;-1:-1:-1;;;10501:61:78;;6973:2:98;10501:61:78;;;6955:21:98;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:98;;;7024:52;7093:18;;10501:61:78;6771:346:98;10501:61:78;10671:16;;10605:11;;10573:29;;10651:17;:15;:17::i;:::-;:36;;;;:::i;:::-;10626:61;-1:-1:-1;10730:1:78;10702:29;;10698:888;;10812:9;10807:769;10831:28;10858:1;10831:17;:28;:::i;:::-;10827:1;:32;10807:769;;;10884:27;10914:9;:31;10924:17;;10942:1;10924:20;;;;;;;:::i;:::-;;;;;;;10914:31;;;;;;;;;;;10884:61;;10967:3;:16;;;;;;;;;;;;:21;;10987:1;10967:21;10963:123;;11036:17;;11054:1;11036:20;;;;;;;:::i;:::-;11019:48;;-1:-1:-1;;;11019:48:78;;11036:20;;;;;;;;;11019:48;;;6477:25:98;-1:-1:-1;;;;;;6538:32:98;;6518:18;;;6511:60;6450:18;;11019:48:78;6303:274:98;10963:123:78;11158:11;;;;;-1:-1:-1;;;11158:11:78;;;;;11147:22;;;;11143:139;;11229:11;;;;11210:8;;11220:7;;-1:-1:-1;;;11229:11:78;;;;11242:17;;11260:1;11242:20;;;;;;;:::i;:::-;11200:63;;-1:-1:-1;;;11200:63:78;;-1:-1:-1;;;;;8265:32:98;;;;11200:63:78;;;8247:51:98;8346:10;8334:23;;;8314:18;;;8307:51;8394:23;;;;8374:18;;;8367:51;11242:20:78;;;;;;8434:18:98;;;8427:34;-1:-1:-1;8219:19:98;;11200:63:78;8020:447:98;11143:139:78;11303:9;;:33;-1:-1:-1;11299:113:78;;;11384:9;;;-1:-1:-1;11299:113:78;11466:37;11474:17;;11492:1;11474:20;;;;;;;:::i;:::-;;;;;;;11496:3;11501:1;11466:7;:37::i;:::-;11521:40;11535:17;;11553:1;11535:20;;;;;;;:::i;:::-;;;;;;;11557:3;11521:13;:40::i;:::-;-1:-1:-1;10861:3:78;;10807:769;;;;10698:888;11632:16;;11612:17;:15;:17::i;:::-;:36;;;;:::i;:::-;11595:53;-1:-1:-1;11663:28:78;;11659:1294;;11768:13;11784:28;11811:1;11784:17;:28;:::i;:::-;11768:44;;11826:31;11860:9;:35;11870:17;;11888:5;11870:24;;;;;;;:::i;:::-;;;;;;;11860:35;;;;;;;;;;;11826:69;;11913:7;:20;;;;;;;;;;;;:25;;11937:1;11913:25;11909:123;;11982:17;;12000:5;11982:24;;;;;;;:::i;11909:123::-;12096:15;;;;;-1:-1:-1;;;12096:15:78;;;;;12085:26;;;;12081:143;;12167:15;;;;12148:8;;12158:7;;-1:-1:-1;;;12167:15:78;;;;12184:17;;12202:5;12184:24;;;;;;;:::i;12081:143::-;12241:13;;:37;-1:-1:-1;12237:113:78;;;12322:13;;;-1:-1:-1;12237:113:78;12396:62;12404:17;;12422:5;12404:24;;;;;;;:::i;:::-;;;;;;;12430:7;2106:16;12396:7;:62::i;:::-;12493:12;12476:14;:29;12472:151;;;12532:76;;-1:-1:-1;;;12532:76:78;;-1:-1:-1;;;;;8721:32:98;;12532:76:78;;;8703:51:98;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;12532:76:78;8472:417:98;12472:151:78;12636:24;12663:29;12678:14;12663:12;:29;:::i;:::-;12729:13;;12636:56;;-1:-1:-1;12750:3:78;;12729:18;;12745:2;12729:18;:::i;:::-;:24;;;;:::i;:::-;12710:16;:43;12706:237;;;12773:48;12787:17;;12805:5;12787:24;;;;;;;:::i;:::-;;;;;;;12813:7;12773:13;:48::i;:::-;12706:237;;;12860:68;12876:17;;12894:5;12876:24;;;;;;;:::i;:::-;;;;;;;12902:7;12911:16;12860:15;:68::i;:::-;11693:1260;;;11659:1294;12999:16;;12979:17;:15;:17::i;:::-;:36;;;;:::i;:::-;12962:53;;13045:14;13030:12;:29;13026:129;;;13082:62;;-1:-1:-1;;;13082:62:78;;-1:-1:-1;;;;;7890:32:98;;13082:62:78;;;7872:51:98;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;13082:62:78;7670:345:98;13026:129:78;13271:21;13239:29;13256:12;13239:14;:29;:::i;:::-;:53;13235:167;;;13315:76;;-1:-1:-1;;;13315:76:78;;-1:-1:-1;;;;;8721:32:98;;13315:76:78;;;8703:51:98;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;13315:76:78;8472:417:98;13235:167:78;13432:70;13459:7;13468:10;13488:4;13495:6;13432:26;:70::i;:::-;13542:14;:16;;;:14;:16;;;:::i;:::-;;;;;13529:29;;13568:26;13597:9;:21;13607:10;13597:21;;;;;;;;;;;13568:50;;13639:12;13628:2;:8;;:23;;;;13672:8;13661:2;:8;;;:19;;;;;-1:-1:-1;;;;;13661:19:78;;;;;-1:-1:-1;;;;;13661:19:78;;;;;;13714:15;13690:2;:14;;;:40;;;;;;;;;;;;;;;;;;13765:15;13740:2;:15;;;:41;;;;;;;;;;;;;;;;;;13804:7;13791:2;:10;;;:20;;;;;;;;;;;;;;;;;;13855:12;13822:20;13843:7;13822:29;;;;;;;;;;:::i;:::-;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;13897:12;13877:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;13952:8:78;;;;13970;;13924:67;;;9234:25:98;;;9290:2;9275:18;;9268:34;;;;13980:10:78;-1:-1:-1;;;13980:10:78;;;9318:18:98;;;9311:51;-1:-1:-1;;;;;13952:8:78;;;;13940:10;;13924:67;;9222:2:98;9207:18;13924:67:78;;;;;;;10083:3915;;;;9923:4075;;;;;;;:::o;5392:1815::-;5645:16;;;;5611:12;;5664:16;;5627:34;;-1:-1:-1;;;5645:16:78;;;;5627:15;:34;:::i;:::-;:53;5626:135;;5746:15;5626:135;;;5696:16;;;;:35;;5715:16;;-1:-1:-1;;;5696:16:78;;;;:35;:::i;:::-;5800:15;;;;5611:150;;-1:-1:-1;5771:19:78;;5793:22;;-1:-1:-1;;;5800:15:78;;;;5611:150;5793:22;:::i;:::-;5771:44;;5825:20;5848:25;5863:3;:9;;;5848:14;:25::i;:::-;5825:48;;5883:20;2855:3;5973:18;5958:11;5933:9;5943:3;:11;;;;;;;;;;;;5933:22;;;;;;;;;;:::i;:::-;;;;;;;;;5918:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;5883:125;;6038:12;6022;:28;6018:145;;-1:-1:-1;6140:12:78;6018:145;6206:1;6176:27;6191:12;6176;:27;:::i;:::-;:31;6172:961;;;6277:21;6301:43;6316:27;6331:12;6316;:27;:::i;6301:43::-;6277:67;;6358:18;6391:13;6379:3;:9;;;:25;;;;:::i;:::-;6358:46;;6455:10;6418:20;6439:3;:11;;;;;;;;;;;;6418:33;;;;;;;;;;:::i;:::-;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;6499:10;6479:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;6523:25:78;;;6562:15;;;:41;;;6587:15;6562:41;;-1:-1:-1;;;6562:41:78;-1:-1:-1;;;;6562:41:78;;;;;;;;6622:80;;;9234:25:98;;;9290:2;9275:18;;9268:34;;;-1:-1:-1;;;6690:11:78;;;;;;9318:18:98;;;9311:51;;;;-1:-1:-1;;;;;6650:9:78;;;;;;;6638:10;;6622:80;;9222:2:98;9207:18;6622:80:78;;;;;;;6209:504;;6172:961;;;6826:9;;6810:11;;;;6789:20;:33;;:20;;-1:-1:-1;;;6810:11:78;;;;;6789:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;6869:9:78;;6849:16;:29;;6869:9;;6849:29;;6869:9;;6849:29;:::i;:::-;;;;-1:-1:-1;;6925:9:78;;;;6897:68;;;9234:25:98;;;6925:9:78;9290:2:98;9275:18;;9268:34;6953:11:78;-1:-1:-1;;;6953:11:78;;;9318:18:98;;;9311:51;6897:68:78;;-1:-1:-1;;;;;6925:9:78;;;;6913:10;;6897:68;;;;;;9222:2:98;6897:68:78;;;7012:9;;;;6984:41;;7012:9;391:25:98;;-1:-1:-1;;;;;7012:9:78;;;;7000:10;;6984:41;;379:2:98;364:18;6984:41:78;;;;;;;7046:9;;;7039:16;;-1:-1:-1;;;;;;7069:23:78;;;7046:9;7106:16;;6172:961;7142:58;7165:7;7174:11;7187:12;7142:22;:58::i;:::-;5492:1715;;;;5392:1815;;;:::o;7352:467::-;7479:9;;7463:11;;;;7442:20;:33;;:20;;-1:-1:-1;;;7463:11:78;;;;;7442:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;7518:9:78;;7498:16;:29;;7518:9;;7498:29;;7518:9;;7498:29;:::i;:::-;;;;-1:-1:-1;;7553:9:78;;;;7604;;-1:-1:-1;;;;;7553:9:78;;;;7537:13;;7589:25;;:14;:25::i;:::-;7572:42;;7657:5;-1:-1:-1;;;;;7629:42:78;7645:10;7629:42;7664:6;7629:42;;;;391:25:98;;379:2;364:18;;245:177;7629:42:78;;;;;;;;7688:9;;;7681:16;;-1:-1:-1;;;;;;7707:23:78;;;7688:9;7740:16;;7766:46;7789:7;7798:5;7805:6;7766:22;:46::i;:::-;7432:387;;7352:467;;:::o;6012:299:48:-;6113:7;6132:14;6149:25;6156:1;6159;6162:11;6149:6;:25::i;:::-;6132:42;-1:-1:-1;6200:11:48;6188:8;:23;;;;;;;;:::i;:::-;;:56;;;;;6243:1;6228:11;6215:25;;;;;:::i;:::-;6225:1;6222;6215:25;:29;6188:56;6184:98;;;6260:11;6270:1;6260:11;;:::i;:::-;;;6184:98;6298:6;-1:-1:-1;6012:299:48;;;;;;;:::o;5136:111:78:-;5185:7;5237:3;5211:23;2026:2;5211:11;:23;:::i;7990:498::-;8127:9;;8112:24;;8104:55;;;;-1:-1:-1;;;8104:55:78;;10585:2:98;8104:55:78;;;10567:21:98;10624:2;10604:18;;;10597:30;-1:-1:-1;;;10643:18:98;;;10636:48;10701:18;;8104:55:78;10383:342:98;8104:55:78;8169:14;8186:28;8201:12;8186:14;:28::i;:::-;8169:45;;8237:12;8224:3;:9;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;8280:11:78;;;;8259:20;:33;;8296:12;;-1:-1:-1;;;8280:11:78;;;;;8259:33;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;8338:12;8318:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;8392:9:78;;;;8403;;8365:56;;;10904:25:98;;;10960:2;10945:18;;10938:34;;;-1:-1:-1;;;;;8392:9:78;;;;8380:10;;8365:56;;10877:18:98;8365:56:78;;;;;;;8463:9;;;;8431:50;;8454:7;;-1:-1:-1;;;;;8463:9:78;8474:6;8431:22;:50::i;1355:203:39:-;1482:68;;-1:-1:-1;;;;;11203:32:98;;;1482:68:39;;;11185:51:98;11272:32;;11252:18;;;11245:60;11321:18;;;11314:34;;;1455:96:39;;1475:5;;-1:-1:-1;;;1505:27:39;11158:18:98;;1482:68:39;;;;-1:-1:-1;;1482:68:39;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:68:39;-1:-1:-1;;;;;;1482:68:39;;;;;;;;;;1455:19;:96::i;941:175::-;1050:58;;-1:-1:-1;;;;;11551:32:98;;1050:58:39;;;11533:51:98;11600:18;;;11593:34;;;1023:86:39;;1043:5;;-1:-1:-1;;;1073:23:39;11506:18:98;;1050:58:39;11359:274:98;1023:86:39;941:175;;;:::o;1667:4213:48:-;1749:14;;;-1:-1:-1;;2286:1:48;2283;2276:20;2329:1;2326;2322:9;2313:18;;2384:5;2380:2;2377:13;2369:5;2365:2;2361:14;2357:34;2348:43;;;2486:5;2495:1;2486:10;2482:368;;2824:11;2816:5;:19;;;;;:::i;:::-;;2809:26;;;;;;2482:368;2974:5;2960:11;:19;2952:53;;;;-1:-1:-1;;;2952:53:48;;11840:2:98;2952:53:48;;;11822:21:98;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:98;;;11891:51;11959:18;;2952:53:48;11638:345:98;2952:53:48;3261:17;3396:11;3393:1;3390;3383:25;3929:12;;3944:1;3929:16;;;3914:32;;4049:22;;;;;3557:21;;;4147:16;;;3510:20;;;;3499:32;;;3899:12;4294;;;4290:23;;;;4286:31;;;4406:12;;;;4397:21;;;;4755:1;:15;;4774:1;4754:21;;;5007;;;5003:25;;4992:36;5076:21;;;5072:25;;5061:36;5146:21;;;5142:25;;5131:36;5216:21;;;5212:25;;5201:36;5286:21;;;5282:25;;5271:36;5357:21;;;5353:25;;;5342:36;5821:15;;-1:-1:-1;;1667:4213:48;;;;;;:::o;5196:642:39:-;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;-1:-1:-1;;;;;5641:27:39;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:39;;12472:2:98;5720:111:39;;;12454:21:98;12511:2;12491:18;;;12484:30;12550:34;12530:18;;;12523:62;-1:-1:-1;;;12601:18:98;;;12594:40;12651:19;;5720:111:39;12270:406:98;4108:223:40;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4241;5446;5460:23;5487:6;-1:-1:-1;;;;;5487:11:40;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;7851;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:40;;;8113:60;;;;-1:-1:-1;;;8113:60:40;;13596:2:98;8113:60:40;;;13578:21:98;13635:2;13615:18;;;13608:30;13674:31;13654:18;;;13647:59;13723:18;;8113:60:40;13394:353:98;8113:60:40;-1:-1:-1;8208:10:40;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:40;;;;;;;;:::i;14:226:98:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:98;;14:226;-1:-1:-1;14:226:98:o;427:173::-;495:20;;-1:-1:-1;;;;;544:31:98;;534:42;;524:70;;590:1;587;580:12;524:70;427:173;;;:::o;605:163::-;672:20;;732:10;721:22;;711:33;;701:61;;758:1;755;748:12;773:367;836:8;846:6;900:3;893:4;885:6;881:17;877:27;867:55;;918:1;915;908:12;867:55;-1:-1:-1;941:20:98;;984:18;973:30;;970:50;;;1016:1;1013;1006:12;970:50;1053:4;1045:6;1041:17;1029:29;;1113:3;1106:4;1096:6;1093:1;1089:14;1081:6;1077:27;1073:38;1070:47;1067:67;;;1130:1;1127;1120:12;1067:67;773:367;;;;;:::o;1145:1227::-;1291:6;1299;1307;1315;1323;1331;1339;1347;1355;1408:3;1396:9;1387:7;1383:23;1379:33;1376:53;;;1425:1;1422;1415:12;1376:53;1470:23;;;-1:-1:-1;1536:38:98;1570:2;1555:18;;1536:38;:::i;:::-;1526:48;;1593:37;1626:2;1615:9;1611:18;1593:37;:::i;:::-;1583:47;;1681:2;1670:9;1666:18;1653:32;1708:18;1700:6;1697:30;1694:50;;;1740:1;1737;1730:12;1694:50;1779:70;1841:7;1832:6;1821:9;1817:22;1779:70;:::i;:::-;1868:8;;-1:-1:-1;1753:96:98;-1:-1:-1;;1976:3:98;1961:19;;1948:33;;-1:-1:-1;2059:3:98;2044:19;;2031:33;2108:4;2095:18;;2083:31;;2073:59;;2128:1;2125;2118:12;2073:59;1145:1227;;;;-1:-1:-1;1145:1227:98;;;;;;;;-1:-1:-1;2151:7:98;;2231:3;2216:19;;2203:33;;-1:-1:-1;2335:3:98;2320:19;2307:33;;1145:1227;-1:-1:-1;1145:1227:98:o;2916:346::-;2984:6;2992;3045:2;3033:9;3024:7;3020:23;3016:32;3013:52;;;3061:1;3058;3051:12;3013:52;-1:-1:-1;;3106:23:98;;;3226:2;3211:18;;;3198:32;;-1:-1:-1;2916:346:98:o;3267:298::-;3334:6;3342;3395:2;3383:9;3374:7;3370:23;3366:32;3363:52;;;3411:1;3408;3401:12;3363:52;3456:23;;;-1:-1:-1;3522:37:98;3555:2;3540:18;;3522:37;:::i;:::-;3512:47;;3267:298;;;;;:::o;3570:698::-;3682:6;3690;3698;3706;3714;3767:3;3755:9;3746:7;3742:23;3738:33;3735:53;;;3784:1;3781;3774:12;3735:53;3829:23;;;-1:-1:-1;3895:38:98;3929:2;3914:18;;3895:38;:::i;:::-;3885:48;;3952:37;3985:2;3974:9;3970:18;3952:37;:::i;:::-;3942:47;;4040:2;4029:9;4025:18;4012:32;4067:18;4059:6;4056:30;4053:50;;;4099:1;4096;4089:12;4053:50;4138:70;4200:7;4191:6;4180:9;4176:22;4138:70;:::i;:::-;3570:698;;;;-1:-1:-1;3570:698:98;;-1:-1:-1;4227:8:98;;4112:96;3570:698;-1:-1:-1;;;3570:698:98:o;4273:127::-;4334:10;4329:3;4325:20;4322:1;4315:31;4365:4;4362:1;4355:15;4389:4;4386:1;4379:15;4405:127;4466:10;4461:3;4457:20;4454:1;4447:31;4497:4;4494:1;4487:15;4521:4;4518:1;4511:15;4537:168;4610:9;;;4641;;4658:15;;;4652:22;;4638:37;4628:71;;4679:18;;:::i;4710:125::-;4775:9;;;4796:10;;;4793:36;;;4809:18;;:::i;4840:127::-;4901:10;4896:3;4892:20;4889:1;4882:31;4932:4;4929:1;4922:15;4956:4;4953:1;4946:15;4972:217;5012:1;5038;5028:132;;5082:10;5077:3;5073:20;5070:1;5063:31;5117:4;5114:1;5107:15;5145:4;5142:1;5135:15;5028:132;-1:-1:-1;5174:9:98;;4972:217::o;5194:128::-;5261:9;;;5282:11;;;5279:37;;;5296:18;;:::i;6582:184::-;6652:6;6705:2;6693:9;6684:7;6680:23;6676:32;6673:52;;;6721:1;6718;6711:12;6673:52;-1:-1:-1;6744:16:98;;6582:184;-1:-1:-1;6582:184:98:o;8894:135::-;8933:3;8954:17;;;8951:43;;8974:18;;:::i;:::-;-1:-1:-1;9021:1:98;9010:13;;8894:135::o;10251:127::-;10312:10;10307:3;10303:20;10300:1;10293:31;10343:4;10340:1;10333:15;10367:4;10364:1;10357:15;11988:277;12055:6;12108:2;12096:9;12087:7;12083:23;12079:32;12076:52;;;12124:1;12121;12114:12;12076:52;12156:9;12150:16;12209:5;12202:13;12195:21;12188:5;12185:32;12175:60;;12231:1;12228;12221:12;13088:301;13217:3;13255:6;13249:13;13301:6;13294:4;13286:6;13282:17;13277:3;13271:37;13363:1;13327:16;;13352:13;;;-1:-1:-1;13327:16:98;13088:301;-1:-1:-1;13088:301:98:o;13752:418::-;13901:2;13890:9;13883:21;13864:4;13933:6;13927:13;13976:6;13971:2;13960:9;13956:18;13949:34;14035:6;14030:2;14022:6;14018:15;14013:2;14002:9;13998:18;13992:50;14091:1;14086:2;14077:6;14066:9;14062:22;14058:31;14051:42;14161:2;14154;14150:7;14145:2;14137:6;14133:15;14129:29;14118:9;14114:45;14110:54;14102:62;;;13752:418;;;;:::o","linkReferences":{},"immutableReferences":{"61018":[{"start":990,"length":32},{"start":1284,"length":32},{"start":2403,"length":32},{"start":2584,"length":32},{"start":3928,"length":32},{"start":5159,"length":32},{"start":5456,"length":32},{"start":5922,"length":32}],"61020":[{"start":5192,"length":32}],"61022":[{"start":298,"length":32},{"start":1414,"length":32},{"start":2370,"length":32},{"start":2856,"length":32},{"start":5603,"length":32}]}},"methodIdentifiers":{"TAX_RATES(uint256)":"13f5c726","assetsToShares(uint256)":"e0b231fa","changeTax(uint256,uint32)":"b8b1bc51","exitPosition(uint256)":"78dc9059","getAverageTaxRate()":"21139a01","getPercentageStaked()":"e95beb93","nextPositionId()":"899346c7","outstandingStake()":"53432750","payTax(uint256)":"a05aaf50","permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":"5cb36034","positions(uint256)":"99fbab88","sharesToAssets(uint256)":"7fe0c850","snatch(uint256,address,uint32,uint256[])":"febf6b7b","taxDue(uint256,uint256)":"9d8e5ea7","totalSharesAtTaxRate(uint256)":"cbcebdba","totalSupply()":"18160ddd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_kraiken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_taxReceiver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeWanted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableStake\",\"type\":\"uint256\"}],\"name\":\"ExceededAvailableStake\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NoPermission\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"PositionNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"name\":\"StakeTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"taxRateWanted\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"taxRateMet\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"TaxTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeWanted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"smallestShare\",\"type\":\"uint256\"}],\"name\":\"TooMuchSnatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenDeposit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"name\":\"PositionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTaxRate\",\"type\":\"uint256\"}],\"name\":\"PositionRateHiked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenPayout\",\"type\":\"uint256\"}],\"name\":\"PositionRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenPayout\",\"type\":\"uint256\"}],\"name\":\"PositionShrunk\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taxRate\",\"type\":\"uint256\"}],\"name\":\"PositionTaxPaid\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"TAX_RATES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"assetsToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"name\":\"changeTax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"exitPosition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAverageTaxRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"averageTaxRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPercentageStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"percentageStaked\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextPositionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outstandingStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"payTax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"},{\"internalType\":\"uint256[]\",\"name\":\"positionsToSnatch\",\"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\":\"permitAndSnatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"creationTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"lastTaxTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"sharesToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"},{\"internalType\":\"uint256[]\",\"name\":\"positionsToSnatch\",\"type\":\"uint256[]\"}],\"name\":\"snatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"taxFloorDuration\",\"type\":\"uint256\"}],\"name\":\"taxDue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountDue\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"totalSharesAtTaxRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"TaxTooLow(address,uint64,uint64,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}]},\"kind\":\"dev\",\"methods\":{\"assetsToShares(uint256)\":{\"params\":{\"assets\":\"Number of Harberg tokens to convert.\"},\"returns\":{\"_0\":\"Number of shares corresponding to the input assets based on the current total supply of Harberg tokens.\"}},\"changeTax(uint256,uint32)\":{\"details\":\"Ensures that the tax rate change is valid and applies the minimum tax based on the TAX_FLOOR_DURATION.\",\"params\":{\"positionId\":\"The ID of the staking position to update.\",\"taxRate\":\"The new tax rate to apply to the position.\"}},\"constructor\":{\"details\":\"Sets up the total supply based on the decimals of the Kraiken token plus a fixed offset.\",\"params\":{\"_kraiken\":\"Address of the Kraiken contract which this Stake contract interacts with.\"}},\"exitPosition(uint256)\":{\"details\":\"Pays the due taxes based on the TAX_FLOOR_DURATION and returns the remaining assets to the position owner.\",\"params\":{\"positionId\":\"The ID of the staking position to exit.\"}},\"getAverageTaxRate()\":{\"returns\":{\"averageTaxRate\":\"A number between 0 and 1e18 indicating the average tax rate.\"}},\"getPercentageStaked()\":{\"returns\":{\"percentageStaked\":\"A number between 0 and 1e18 indicating the percentage of Harberg supply staked.\"}},\"payTax(uint256)\":{\"details\":\"Calculates and pays the tax due, possibly adjusting the position's share count.\",\"params\":{\"positionId\":\"The ID of the staking position for which to pay taxes.\"}},\"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)\":{\"params\":{\"assets\":\"Number of Harberg tokens to stake.\",\"deadline\":\"Time until which the permit is valid.\",\"positionsToSnatch\":\"Array of position IDs that the new position will replace by snatching.\",\"receiver\":\"Address that will own the new staking position.\",\"taxRate\":\"The initial tax rate for the new staking position.\",\"v\":\", r, s Components of the signature for the permit.\"},\"returns\":{\"positionId\":\"The ID of the newly created staking position.\"}},\"sharesToAssets(uint256)\":{\"params\":{\"shares\":\"Number of shares to convert.\"},\"returns\":{\"_0\":\"The equivalent number of Harberg tokens for the given shares.\"}},\"snatch(uint256,address,uint32,uint256[])\":{\"details\":\"Handles staking logic, including tax rate validation and position merging or dissolving.\",\"params\":{\"assets\":\"Amount of Harberg tokens to convert into a staking position.\",\"positionsToSnatch\":\"Array of position IDs that the new position will replace by snatching.\",\"receiver\":\"Address that will own the new staking position.\",\"taxRate\":\"The initial tax rate for the new staking position.\"},\"returns\":{\"positionId\":\"The ID of the newly created staking position.\"}},\"taxDue(uint256,uint256)\":{\"details\":\"Calculates the tax due.\",\"params\":{\"positionId\":\"The ID of the staking position for which to pay taxes.\",\"taxFloorDuration\":\"if a minimum holding duration is applied to the position this value is > 0 in seconds.\"}}},\"title\":\"Stake Contract for Kraiken Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assetsToShares(uint256)\":{\"notice\":\"Converts Harberg token assets to shares of the total staking pool.\"},\"changeTax(uint256,uint32)\":{\"notice\":\"Changes the tax rate of an existing staking position.\"},\"constructor\":{\"notice\":\"Initializes the stake contract with references to the Kraiken contract and sets the initial position ID.\"},\"exitPosition(uint256)\":{\"notice\":\"Allows the owner of a staking position to exit, returning the staked assets.\"},\"getPercentageStaked()\":{\"notice\":\"Computes the percentage of Harberg staked from outstanding Stake and authorized Stake.\"},\"payTax(uint256)\":{\"notice\":\"Manually triggers the tax payment for a specified staking position.\"},\"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Combines an ERC20 permit operation with the snatch function, allowing a staking position creation in one transaction.\"},\"sharesToAssets(uint256)\":{\"notice\":\"Converts shares of the total staking pool back to Harberg token assets.\"},\"snatch(uint256,address,uint32,uint256[])\":{\"notice\":\"Creates a new staking position by potentially snatching shares from existing positions.\"},\"taxDue(uint256,uint256)\":{\"notice\":\"Calculates the Tax that is due to be paid on specific positoin\"}},\"notice\":\"This contract manages the staking positions for the Kraiken token, allowing users to stake tokens in exchange for a share of the total supply. Stakers can set and adjust tax rates on their stakes, which affect the Universal Basic Income (UBI) paid from the tax pool. The contract handles: - Creation of staking positions with specific tax rates. - Snatching of existing positions under certain conditions to consolidate stakes. - Calculation and payment of taxes based on stake duration and tax rate. - Adjustment of tax rates with protections against griefing through rapid changes. - Exiting of positions, either partially or fully, returning the staked assets to the owner. Tax rates and staking positions are adjustable, with a mechanism to prevent snatch-grieving by enforcing a minimum tax payment duration.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Stake.sol\":\"Stake\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@aperture/uni-v3-lib/=lib/uni-v3-lib/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/\",\":@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/\",\":@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/\",\":ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/\",\":solady/=lib/uni-v3-lib/node_modules/solady/\",\":solmate/=lib/solmate/src/\",\":uni-v3-lib/=lib/uni-v3-lib/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc\",\"dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca\",\"dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516\",\"dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a\",\"dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/Kraiken.sol\":{\"keccak256\":\"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115\",\"dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1\"]},\"src/Stake.sol\":{\"keccak256\":\"0x182c043d56dfe50d571e27c8d8eeed85e48cf81c2aaf6d2c89d05e513dac9cd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e71bed07050a1841faa49fc559c5e85bfbfab822093eb1371da0b632524f44e7\",\"dweb:/ipfs/QmQ8vwL7QSnheaYyAxM1wFWFkSVDxQAHEfVzhFw41nLuja\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_kraiken","type":"address"},{"internalType":"address","name":"_taxReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"stakeWanted","type":"uint256"},{"internalType":"uint256","name":"availableStake","type":"uint256"}],"type":"error","name":"ExceededAvailableStake"},{"inputs":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"NoPermission"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"address","name":"requester","type":"address"}],"type":"error","name":"PositionNotFound"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"minStake","type":"uint256"}],"type":"error","name":"StakeTooLow"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"taxRateWanted","type":"uint64"},{"internalType":"uint64","name":"taxRateMet","type":"uint64"},{"internalType":"uint256","name":"positionId","type":"uint256"}],"type":"error","name":"TaxTooLow"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"stakeWanted","type":"uint256"},{"internalType":"uint256","name":"availableStake","type":"uint256"},{"internalType":"uint256","name":"smallestShare","type":"uint256"}],"type":"error","name":"TooMuchSnatch"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"kraikenDeposit","type":"uint256","indexed":false},{"internalType":"uint256","name":"share","type":"uint256","indexed":false},{"internalType":"uint32","name":"taxRate","type":"uint32","indexed":false}],"type":"event","name":"PositionCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"newTaxRate","type":"uint256","indexed":false}],"type":"event","name":"PositionRateHiked","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"kraikenPayout","type":"uint256","indexed":false}],"type":"event","name":"PositionRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"newShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"kraikenPayout","type":"uint256","indexed":false}],"type":"event","name":"PositionShrunk","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"taxPaid","type":"uint256","indexed":false},{"internalType":"uint256","name":"newShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"taxRate","type":"uint256","indexed":false}],"type":"event","name":"PositionTaxPaid","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"TAX_RATES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"assetsToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint32","name":"taxRate","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"changeTax"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"exitPosition"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAverageTaxRate","outputs":[{"internalType":"uint256","name":"averageTaxRate","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPercentageStaked","outputs":[{"internalType":"uint256","name":"percentageStaked","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextPositionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"outstandingStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"payTax"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint32","name":"taxRate","type":"uint32"},{"internalType":"uint256[]","name":"positionsToSnatch","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"}],"stateMutability":"nonpayable","type":"function","name":"permitAndSnatch","outputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"positions","outputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"creationTime","type":"uint32"},{"internalType":"uint32","name":"lastTaxTime","type":"uint32"},{"internalType":"uint32","name":"taxRate","type":"uint32"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint32","name":"taxRate","type":"uint32"},{"internalType":"uint256[]","name":"positionsToSnatch","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"snatch","outputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint256","name":"taxFloorDuration","type":"uint256"}],"stateMutability":"view","type":"function","name":"taxDue","outputs":[{"internalType":"uint256","name":"amountDue","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSharesAtTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"assetsToShares(uint256)":{"params":{"assets":"Number of Harberg tokens to convert."},"returns":{"_0":"Number of shares corresponding to the input assets based on the current total supply of Harberg tokens."}},"changeTax(uint256,uint32)":{"details":"Ensures that the tax rate change is valid and applies the minimum tax based on the TAX_FLOOR_DURATION.","params":{"positionId":"The ID of the staking position to update.","taxRate":"The new tax rate to apply to the position."}},"constructor":{"details":"Sets up the total supply based on the decimals of the Kraiken token plus a fixed offset.","params":{"_kraiken":"Address of the Kraiken contract which this Stake contract interacts with."}},"exitPosition(uint256)":{"details":"Pays the due taxes based on the TAX_FLOOR_DURATION and returns the remaining assets to the position owner.","params":{"positionId":"The ID of the staking position to exit."}},"getAverageTaxRate()":{"returns":{"averageTaxRate":"A number between 0 and 1e18 indicating the average tax rate."}},"getPercentageStaked()":{"returns":{"percentageStaked":"A number between 0 and 1e18 indicating the percentage of Harberg supply staked."}},"payTax(uint256)":{"details":"Calculates and pays the tax due, possibly adjusting the position's share count.","params":{"positionId":"The ID of the staking position for which to pay taxes."}},"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":{"params":{"assets":"Number of Harberg tokens to stake.","deadline":"Time until which the permit is valid.","positionsToSnatch":"Array of position IDs that the new position will replace by snatching.","receiver":"Address that will own the new staking position.","taxRate":"The initial tax rate for the new staking position.","v":", r, s Components of the signature for the permit."},"returns":{"positionId":"The ID of the newly created staking position."}},"sharesToAssets(uint256)":{"params":{"shares":"Number of shares to convert."},"returns":{"_0":"The equivalent number of Harberg tokens for the given shares."}},"snatch(uint256,address,uint32,uint256[])":{"details":"Handles staking logic, including tax rate validation and position merging or dissolving.","params":{"assets":"Amount of Harberg tokens to convert into a staking position.","positionsToSnatch":"Array of position IDs that the new position will replace by snatching.","receiver":"Address that will own the new staking position.","taxRate":"The initial tax rate for the new staking position."},"returns":{"positionId":"The ID of the newly created staking position."}},"taxDue(uint256,uint256)":{"details":"Calculates the tax due.","params":{"positionId":"The ID of the staking position for which to pay taxes.","taxFloorDuration":"if a minimum holding duration is applied to the position this value is > 0 in seconds."}}},"version":1},"userdoc":{"kind":"user","methods":{"assetsToShares(uint256)":{"notice":"Converts Harberg token assets to shares of the total staking pool."},"changeTax(uint256,uint32)":{"notice":"Changes the tax rate of an existing staking position."},"constructor":{"notice":"Initializes the stake contract with references to the Kraiken contract and sets the initial position ID."},"exitPosition(uint256)":{"notice":"Allows the owner of a staking position to exit, returning the staked assets."},"getPercentageStaked()":{"notice":"Computes the percentage of Harberg staked from outstanding Stake and authorized Stake."},"payTax(uint256)":{"notice":"Manually triggers the tax payment for a specified staking position."},"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":{"notice":"Combines an ERC20 permit operation with the snatch function, allowing a staking position creation in one transaction."},"sharesToAssets(uint256)":{"notice":"Converts shares of the total staking pool back to Harberg token assets."},"snatch(uint256,address,uint32,uint256[])":{"notice":"Creates a new staking position by potentially snatching shares from existing positions."},"taxDue(uint256,uint256)":{"notice":"Calculates the Tax that is due to be paid on specific positoin"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@aperture/uni-v3-lib/=lib/uni-v3-lib/src/","@openzeppelin/=lib/openzeppelin-contracts/contracts/","@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/","@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/","@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/","ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/","solady/=lib/uni-v3-lib/node_modules/solady/","solmate/=lib/solmate/src/","uni-v3-lib/=lib/uni-v3-lib/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Stake.sol":"Stake"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f","urls":["bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc","dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol":{"keccak256":"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174","urls":["bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca","dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69","urls":["bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71","dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439","urls":["bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c","dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256","urls":["bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516","dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0","urls":["bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f","dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58","urls":["bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2","dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd","urls":["bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a","dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/Kraiken.sol":{"keccak256":"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d","urls":["bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115","dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1"],"license":"GPL-3.0-or-later"},"src/Stake.sol":{"keccak256":"0x182c043d56dfe50d571e27c8d8eeed85e48cf81c2aaf6d2c89d05e513dac9cd8","urls":["bzz-raw://e71bed07050a1841faa49fc559c5e85bfbfab822093eb1371da0b632524f44e7","dweb:/ipfs/QmQ8vwL7QSnheaYyAxM1wFWFkSVDxQAHEfVzhFw41nLuja"],"license":"GPL-3.0-or-later"}},"version":1},"id":78}