mirror of
https://github.com/luxfhe/example-confidential-contracts.git
synced 2026-10-30 18:13:34 +00:00
1 line
158 KiB
JSON
1 line
158 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfIsIndicator","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"indicatorTick","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isFherc20","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"resetIndicatedBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"until","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTotalIndicatedSupply","inputs":[{"name":"value","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUserIndicatedBalance","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ConfidentialTransfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value_hash","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"holder","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"until","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"permitOwner","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"permitSpender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch","inputs":[{"name":"inValueHash","type":"uint256","internalType":"uint256"},{"name":"permitValueHash","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FHERC20IncompatibleFunction","inputs":[]},{"type":"error","name":"FHERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedSpender","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount","inputs":[{"name":"value","type":"uint256","internalType":"euint64"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b50604051613c19380380613c198339818101604052810190610031919061022f565b828282826005908161004391906104c7565b50816006908161005391906104c7565b508060075f6101000a81548160ff021916908360ff16021790555060048160ff1611156100985760048161008791906105c3565b600a6100939190610726565b61009b565b60015b600881905550505050505050610770565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61010b826100c5565b810181811067ffffffffffffffff8211171561012a576101296100d5565b5b80604052505050565b5f61013c6100ac565b90506101488282610102565b919050565b5f67ffffffffffffffff821115610167576101666100d5565b5b610170826100c5565b9050602081019050919050565b8281835e5f83830152505050565b5f61019d6101988461014d565b610133565b9050828152602081018484840111156101b9576101b86100c1565b5b6101c484828561017d565b509392505050565b5f82601f8301126101e0576101df6100bd565b5b81516101f084826020860161018b565b91505092915050565b5f60ff82169050919050565b61020e816101f9565b8114610218575f5ffd5b50565b5f8151905061022981610205565b92915050565b5f5f5f60608486031215610246576102456100b5565b5b5f84015167ffffffffffffffff811115610263576102626100b9565b5b61026f868287016101cc565b935050602084015167ffffffffffffffff8111156102905761028f6100b9565b5b61029c868287016101cc565b92505060406102ad8682870161021b565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061030557607f821691505b602082108103610318576103176102c1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261037a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261033f565b610384868361033f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103c86103c36103be8461039c565b6103a5565b61039c565b9050919050565b5f819050919050565b6103e1836103ae565b6103f56103ed826103cf565b84845461034b565b825550505050565b5f5f905090565b61040c6103fd565b6104178184846103d8565b505050565b5b8181101561043a5761042f5f82610404565b60018101905061041d565b5050565b601f82111561047f576104508161031e565b61045984610330565b81016020851015610468578190505b61047c61047485610330565b83018261041c565b50505b505050565b5f82821c905092915050565b5f61049f5f1984600802610484565b1980831691505092915050565b5f6104b78383610490565b9150826002028217905092915050565b6104d0826102b7565b67ffffffffffffffff8111156104e9576104e86100d5565b5b6104f382546102ee565b6104fe82828561043e565b5f60209050601f83116001811461052f575f841561051d578287015190505b61052785826104ac565b86555061058e565b601f19841661053d8661031e565b5f5b828110156105645784890151825560018201915060208501945060208101905061053f565b86831015610581578489015161057d601f891682610490565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105cd826101f9565b91506105d8836101f9565b9250828203905060ff8111156105f1576105f0610596565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b600185111561064c5780860481111561062857610627610596565b5b60018516156106375780820291505b8081029050610645856105f7565b945061060c565b94509492505050565b5f82610664576001905061071f565b81610671575f905061071f565b81600181146106875760028114610691576106c0565b600191505061071f565b60ff8411156106a3576106a2610596565b5b8360020a9150848211156106ba576106b9610596565b5b5061071f565b5060208310610133831016604e8410600b84101617156106f55782820a9050838111156106f0576106ef610596565b5b61071f565b6107028484846001610603565b9250905081840481111561071957610718610596565b5b81810290505b9392505050565b5f6107308261039c565b915061073b836101f9565b92506107687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610655565b905092915050565b61349c8061077d5f395ff3fe608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c80637edb0e7d11610102578063b4b20190116100a0578063d4febb961161006f578063d4febb961461057b578063dd62ed3e14610597578063fca114d6146105c7578063fe3f670d146105f7576101cd565b8063b4b20190146104e1578063b6363cf2146104eb578063ca49d7cd1461051b578063d174999a1461054b576101cd565b8063a415f269116100dc578063a415f26914610433578063a794ee9514610451578063a9059cbb14610481578063a9fe9959146104b1576101cd565b80637edb0e7d146103b557806395d89b41146103e55780639645edd414610403576101cd565b8063344ff1011161016f57806339ce5fdf1161014957806339ce5fdf1461032d578063490690f314610349578063540952271461036757806370a0823114610385576101cd565b8063344ff101146102c357806334e3e2ba146102f3578063365ac0021461030f576101cd565b806318160ddd116101ab57806318160ddd1461023b57806323b872dd146102595780632893c5b014610289578063313ce567146102a5576101cd565b806306fdde03146101d1578063095ea7b3146101ef57806313691c761461021f575b5f5ffd5b6101d9610627565b6040516101e691906123f3565b60405180910390f35b610209600480360381019061020491906124b1565b6106b7565b6040516102169190612509565b60405180910390f35b6102396004803603810190610234919061255f565b6106ea565b005b6102436106f9565b60405161025091906125ac565b60405180910390f35b610273600480360381019061026e91906125c5565b610720565b6040516102809190612509565b60405180910390f35b6102a3600480360381019061029e919061255f565b610753565b005b6102ad610762565b6040516102ba9190612630565b60405180910390f35b6102dd60048036038101906102d89190612649565b610777565b6040516102ea91906126ad565b60405180910390f35b61030d600480360381019061030891906126fd565b6107bd565b005b6103176107dc565b6040516103249190612509565b60405180910390f35b61034760048036038101906103429190612728565b6107e4565b005b61035161083e565b60405161035e91906125ac565b60405180910390f35b61036f610847565b60405161037c91906126ad565b60405180910390f35b61039f600480360381019061039a9190612649565b610850565b6040516103ac91906125ac565b60405180910390f35b6103cf60048036038101906103ca9190612955565b6108b3565b6040516103dc91906126ad565b60405180910390f35b6103ed610922565b6040516103fa91906123f3565b60405180910390f35b61041d60048036038101906104189190612a48565b6109b2565b60405161042a91906126ad565b60405180910390f35b61043b610a65565b6040516104489190612509565b60405180910390f35b61046b60048036038101906104669190612acc565b610a6d565b60405161047891906126ad565b60405180910390f35b61049b600480360381019061049691906124b1565b610a8e565b6040516104a89190612509565b60405180910390f35b6104cb60048036038101906104c69190612b26565b610ac1565b6040516104d891906126ad565b60405180910390f35b6104e9610b26565b005b61050560048036038101906105009190612b97565b610b7e565b6040516105129190612509565b60405180910390f35b61053560048036038101906105309190612bd5565b610c52565b60405161054291906126ad565b60405180910390f35b61056560048036038101906105609190612c25565b610d01565b60405161057291906126ad565b60405180910390f35b61059560048036038101906105909190612ced565b610d26565b005b6105b160048036038101906105ac9190612b97565b610d35565b6040516105be91906125ac565b60405180910390f35b6105e160048036038101906105dc9190612d2b565b610d68565b6040516105ee91906126ad565b60405180910390f35b610611600480360381019061060c9190612dcb565b610ddb565b60405161061e91906126ad565b60405180910390f35b60606005805461063690612e36565b80601f016020809104026020016040519081016040528092919081815260200182805461066290612e36565b80156106ad5780601f10610684576101008083540402835291602001916106ad565b820191905f5260205f20905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f48282610e3c565b505050565b5f60085460035f9054906101000a900461ffff1661ffff1661071b9190612e93565b905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075d8282610ed2565b505050565b5f60075f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8060035f6101000a81548161ffff021916908361ffff16021790555050565b5f6001905090565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505050565b5f600854905090565b5f600454905090565b5f6008545f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661ffff166108ac9190612e93565b9050919050565b5f6108be8433610b7e565b6109015783336040517fd2251dd50000000000000000000000000000000000000000000000000000000081526004016108f8929190612ee3565b60405180910390fd5b5f61090b83610f68565b9050610918858583610fdb565b9150509392505050565b60606006805461093190612e36565b80601f016020809104026020016040519081016040528092919081815260200182805461095d90612e36565b80156109a85780601f1061097f576101008083540402835291602001916109a8565b820191905f5260205f20905b81548152906001019060200180831161098b57829003601f168201915b5050505050905090565b5f6109bd84336110d0565b610a005783336040517fd5fdb3f00000000000000000000000000000000000000000000000000000000081526004016109f7929190612f0a565b60405180910390fd5b610a0a8633610b7e565b610a4d5785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610a44929190612ee3565b60405180910390fd5b610a5a8686868686611168565b905095945050505050565b5f6001905090565b5f5f610a7883610f68565b9050610a85338583610fdb565b91505092915050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610acc84336110d0565b610b0f5783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610b06929190612f0a565b60405180910390fd5b610b1c3386868686611168565b9050949350505050565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff160217905550565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c4a575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900465ffffffffffff1665ffffffffffff164211155b905092915050565b5f610c5d82336110d0565b610ca05781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610c97929190612f0a565b60405180910390fd5b610caa8433610b7e565b610ced5783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610ce4929190612ee3565b60405180910390fd5b610cf8848484610fdb565b90509392505050565b5f5f610d0c85610f68565b9050610d1b3387838787611168565b915050949350505050565b610d313383836111c0565b5050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d738633610b7e565b610db65785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610dad929190612ee3565b60405180910390fd5b5f610dc085610f68565b9050610dcf8787838787611168565b91505095945050505050565b5f610de682336110d0565b610e295781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610e20929190612f0a565b60405180910390fd5b610e34338484610fdb565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ead575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610ea49190612f31565b60405180910390fd5b610eca835f610ec58567ffffffffffffffff166112c4565b6112d6565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f43575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f3a9190612f31565b60405180910390fd5b610f605f84610f5b8567ffffffffffffffff166112c4565b6112d6565b905092915050565b5f5f600590508060ff16836040015160ff1614610fc2578260400151816040517f67cf3071000000000000000000000000000000000000000000000000000000008152600401610fb9929190612f4a565b60405180910390fd5b610fd3610fce84611971565b6119b3565b915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361104c575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110439190612f31565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110bc575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110b39190612f31565b60405180910390fd5b6110c78484846112d6565b90509392505050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b8152600401611120929190612f71565b6020604051808303815f875af115801561113c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111609190612fc2565b905092915050565b5f5f611175878787610fdb565b90505f611186338989858989611a4a565b90505f6111a6888a6111a18561119b5f6112c4565b88611b87565b6112d6565b90506111b28382611be9565b935050505095945050505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f921a218a75d18e8ec5704851e6b234a85725b21a2521ce889622c35dedc1fa12836040516112b79190612ffc565b60405180910390a3505050565b5f6112cf825f611c32565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113735761136c61135d60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611c4c90919063ffffffff16565b836113675f6112c4565b611b87565b9050611377565b8190505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f4576113c260035f9054906101000a900461ffff16611c5f565b60035f6101000a81548161ffff021916908361ffff1602179055506113e960045482611c9b565b600481905550611524565b61143b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611be9565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114ce5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff16611ce4565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a15761156f60035f9054906101000a900461ffff16611ce4565b60035f6101000a81548161ffff021916908361ffff16021790555061159660045482611be9565b6004819055506116d1565b6115e860015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611c9b565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061167b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff16611c5f565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146117ad5761175b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d1f565b6117a260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485611d9e565b6117ac8185611d9e565b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146118895761183760015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d1f565b61187e60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611d9e565b6118888184611d9e565b5b6118938133611d9e565b61189e600454611d1f565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516118fd91906125ac565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdef6144e0f80e23ca465862f2f93a21f8526624729198aed904b46e005c943e48360405161196291906125ac565b60405180910390a39392505050565b611979612358565b6040518060800160405280835f01518152602001836020015160ff168152602001600560ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b8152600401611a039291906130e5565b6020604051808303815f875af1158015611a1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a439190613127565b9050919050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff163b1115611b70578473ffffffffffffffffffffffffffffffffffffffff1663944e3ddb88888787876040518663ffffffff1660e01b8152600401611aab95949392919061318e565b6020604051808303815f875af1925050508015611ae657506040513d601f19601f82011682018060405250810190611ae39190613204565b60015b611b67573d805f8114611b14576040519150601f19603f3d011682016040523d82523d5f602084013e611b19565b606091505b505f815103611b5f57856040517f50213379000000000000000000000000000000000000000000000000000000008152600401611b569190612f31565b60405180910390fd5b805181602001fd5b80915050611b7d565b611b7a6001611e1e565b90505b9695505050505050565b5f611b9184611e30565b611ba157611b9e5f611e1e565b93505b611baa83611e41565b611bba57611bb75f6112c4565b92505b611bc382611e41565b611bd357611bd05f6112c4565b91505b611be06005858585611e52565b90509392505050565b5f611bf383611e41565b611c0357611c005f6112c4565b92505b611c0c82611e41565b611c1c57611c195f6112c4565b91505b611c2a600584846007611f43565b905092915050565b5f5f611c4084600585612032565b90508091505092915050565b5f611c57838361212d565b905092915050565b5f5f8261ffff161480611c77575061270f8261ffff16145b15611c86576113899050611c96565b600182611c93919061322f565b90505b919050565b5f611ca583611e41565b611cb557611cb25f6112c4565b92505b611cbe82611e41565b611cce57611ccb5f6112c4565b91505b611cdc600584846008611f43565b905092915050565b5f5f8261ffff161480611cfb575060018261ffff16145b15611d0a576113879050611d1a565b600182611d179190613264565b90505b919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b8152600401611d6e929190612f71565b5f604051808303815f87803b158015611d85575f5ffd5b505af1158015611d97573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c83836040518363ffffffff1660e01b8152600401611ded929190612f71565b5f604051808303815f87803b158015611e04575f5ffd5b505af1158015611e16573d5f5f3e3d5ffd5b505050505050565b5f611e29825f612176565b9050919050565b5f611e3a8261219f565b9050919050565b5f611e4b8261219f565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611e918888886121ab565b5f67ffffffffffffffff811115611eab57611eaa61276a565b5b604051908082528060200260200182016040528015611ed95781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611ef994939291906133b4565b6020604051808303815f875af1158015611f15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f399190613127565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684611f808888612267565b5f67ffffffffffffffff811115611f9a57611f9961276a565b5b604051908082528060200260200182016040528015611fc85781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611fe894939291906133b4565b6020604051808303815f875af1158015612004573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120289190613127565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156120805761207f61276a565b5b6040519080825280602002602001820160405280156120ae5781602001602082028036833780820191505090505b506120c5898960ff166120c08a612301565b6121ab565b6040518563ffffffff1660e01b81526004016120e494939291906133b4565b6020604051808303815f875af1158015612100573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121249190613127565b90509392505050565b5f61213783611e41565b612147576121445f6112c4565b92505b61215082611e41565b6121605761215d5f6112c4565b91505b61216e600584846013611f43565b905092915050565b5f5f5f9050831561218657600190505b5f612192825f86612032565b9050809250505092915050565b5f5f8214159050919050565b60605f600367ffffffffffffffff8111156121c9576121c861276a565b5b6040519080825280602002602001820160405280156121f75781602001602082028036833780820191505090505b50905084815f8151811061220e5761220d613405565b5b602002602001018181525050838160018151811061222f5761222e613405565b5b60200260200101818152505082816002815181106122505761224f613405565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff8111156122855761228461276a565b5b6040519080825280602002602001820160405280156122b35781602001602082028036833780820191505090505b50905083815f815181106122ca576122c9613405565b5b60200260200101818152505082816001815181106122eb576122ea613405565b5b6020026020010181815250508091505092915050565b5f5f8260030b121561234a57816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612341919061344d565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6123c582612383565b6123cf818561238d565b93506123df81856020860161239d565b6123e8816123ab565b840191505092915050565b5f6020820190508181035f83015261240b81846123bb565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61244d82612424565b9050919050565b61245d81612443565b8114612467575f5ffd5b50565b5f8135905061247881612454565b92915050565b5f819050919050565b6124908161247e565b811461249a575f5ffd5b50565b5f813590506124ab81612487565b92915050565b5f5f604083850312156124c7576124c661241c565b5b5f6124d48582860161246a565b92505060206124e58582860161249d565b9150509250929050565b5f8115159050919050565b612503816124ef565b82525050565b5f60208201905061251c5f8301846124fa565b92915050565b5f67ffffffffffffffff82169050919050565b61253e81612522565b8114612548575f5ffd5b50565b5f8135905061255981612535565b92915050565b5f5f604083850312156125755761257461241c565b5b5f6125828582860161246a565b92505060206125938582860161254b565b9150509250929050565b6125a68161247e565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f5f5f606084860312156125dc576125db61241c565b5b5f6125e98682870161246a565b93505060206125fa8682870161246a565b925050604061260b8682870161249d565b9150509250925092565b5f60ff82169050919050565b61262a81612615565b82525050565b5f6020820190506126435f830184612621565b92915050565b5f6020828403121561265e5761265d61241c565b5b5f61266b8482850161246a565b91505092915050565b5f819050919050565b5f61269761269261268d8461247e565b612674565b61247e565b9050919050565b6126a78161267d565b82525050565b5f6020820190506126c05f83018461269e565b92915050565b5f61ffff82169050919050565b6126dc816126c6565b81146126e6575f5ffd5b50565b5f813590506126f7816126d3565b92915050565b5f602082840312156127125761271161241c565b5b5f61271f848285016126e9565b91505092915050565b5f5f6040838503121561273e5761273d61241c565b5b5f61274b8582860161246a565b925050602061275c858286016126e9565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6127a0826123ab565b810181811067ffffffffffffffff821117156127bf576127be61276a565b5b80604052505050565b5f6127d1612413565b90506127dd8282612797565b919050565b5f5ffd5b6127ef81612615565b81146127f9575f5ffd5b50565b5f8135905061280a816127e6565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156128325761283161276a565b5b61283b826123ab565b9050602081019050919050565b828183375f83830152505050565b5f61286861286384612818565b6127c8565b90508281526020810184848401111561288457612883612814565b5b61288f848285612848565b509392505050565b5f82601f8301126128ab576128aa612810565b5b81356128bb848260208601612856565b91505092915050565b5f608082840312156128d9576128d8612766565b5b6128e360806127c8565b90505f6128f28482850161249d565b5f830152506020612905848285016127fc565b6020830152506040612919848285016127fc565b604083015250606082013567ffffffffffffffff81111561293d5761293c6127e2565b5b61294984828501612897565b60608301525092915050565b5f5f5f6060848603121561296c5761296b61241c565b5b5f6129798682870161246a565b935050602061298a8682870161246a565b925050604084013567ffffffffffffffff8111156129ab576129aa612420565b5b6129b7868287016128c4565b9150509250925092565b6129ca8161247e565b81146129d4575f5ffd5b50565b5f813590506129e5816129c1565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f840112612a0857612a07612810565b5b8235905067ffffffffffffffff811115612a2557612a246129eb565b5b602083019150836001820283011115612a4157612a406129ef565b5b9250929050565b5f5f5f5f5f60808688031215612a6157612a6061241c565b5b5f612a6e8882890161246a565b9550506020612a7f8882890161246a565b9450506040612a90888289016129d7565b935050606086013567ffffffffffffffff811115612ab157612ab0612420565b5b612abd888289016129f3565b92509250509295509295909350565b5f5f60408385031215612ae257612ae161241c565b5b5f612aef8582860161246a565b925050602083013567ffffffffffffffff811115612b1057612b0f612420565b5b612b1c858286016128c4565b9150509250929050565b5f5f5f5f60608587031215612b3e57612b3d61241c565b5b5f612b4b8782880161246a565b9450506020612b5c878288016129d7565b935050604085013567ffffffffffffffff811115612b7d57612b7c612420565b5b612b89878288016129f3565b925092505092959194509250565b5f5f60408385031215612bad57612bac61241c565b5b5f612bba8582860161246a565b9250506020612bcb8582860161246a565b9150509250929050565b5f5f5f60608486031215612bec57612beb61241c565b5b5f612bf98682870161246a565b9350506020612c0a8682870161246a565b9250506040612c1b868287016129d7565b9150509250925092565b5f5f5f5f60608587031215612c3d57612c3c61241c565b5b5f612c4a8782880161246a565b945050602085013567ffffffffffffffff811115612c6b57612c6a612420565b5b612c77878288016128c4565b935050604085013567ffffffffffffffff811115612c9857612c97612420565b5b612ca4878288016129f3565b925092505092959194509250565b5f65ffffffffffff82169050919050565b612ccc81612cb2565b8114612cd6575f5ffd5b50565b5f81359050612ce781612cc3565b92915050565b5f5f60408385031215612d0357612d0261241c565b5b5f612d108582860161246a565b9250506020612d2185828601612cd9565b9150509250929050565b5f5f5f5f5f60808688031215612d4457612d4361241c565b5b5f612d518882890161246a565b9550506020612d628882890161246a565b945050604086013567ffffffffffffffff811115612d8357612d82612420565b5b612d8f888289016128c4565b935050606086013567ffffffffffffffff811115612db057612daf612420565b5b612dbc888289016129f3565b92509250509295509295909350565b5f5f60408385031215612de157612de061241c565b5b5f612dee8582860161246a565b9250506020612dff858286016129d7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e4d57607f821691505b602082108103612e6057612e5f612e09565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9d8261247e565b9150612ea88361247e565b9250828202612eb68161247e565b91508282048414831517612ecd57612ecc612e66565b5b5092915050565b612edd81612443565b82525050565b5f604082019050612ef65f830185612ed4565b612f036020830184612ed4565b9392505050565b5f604082019050612f1d5f83018561269e565b612f2a6020830184612ed4565b9392505050565b5f602082019050612f445f830184612ed4565b92915050565b5f604082019050612f5d5f830185612621565b612f6a6020830184612621565b9392505050565b5f604082019050612f845f83018561259d565b612f916020830184612ed4565b9392505050565b612fa1816124ef565b8114612fab575f5ffd5b50565b5f81519050612fbc81612f98565b92915050565b5f60208284031215612fd757612fd661241c565b5b5f612fe484828501612fae565b91505092915050565b612ff681612cb2565b82525050565b5f60208201905061300f5f830184612fed565b92915050565b61301e8161247e565b82525050565b61302d81612615565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f61305782613033565b613061818561303d565b935061307181856020860161239d565b61307a816123ab565b840191505092915050565b5f608083015f83015161309a5f860182613015565b5060208301516130ad6020860182613024565b5060408301516130c06040860182613024565b50606083015184820360608601526130d8828261304d565b9150508091505092915050565b5f6040820190508181035f8301526130fd8185613085565b905061310c6020830184612ed4565b9392505050565b5f8151905061312181612487565b92915050565b5f6020828403121561313c5761313b61241c565b5b5f61314984828501613113565b91505092915050565b5f82825260208201905092915050565b5f61316d8385613152565b935061317a838584612848565b613183836123ab565b840190509392505050565b5f6080820190506131a15f830188612ed4565b6131ae6020830187612ed4565b6131bb604083018661269e565b81810360608301526131ce818486613162565b90509695505050505050565b6131e38161247e565b81146131ed575f5ffd5b50565b5f815190506131fe816131da565b92915050565b5f602082840312156132195761321861241c565b5b5f613226848285016131f0565b91505092915050565b5f613239826126c6565b9150613244836126c6565b9250828201905061ffff81111561325e5761325d612e66565b5b92915050565b5f61326e826126c6565b9150613279836126c6565b9250828203905061ffff81111561329357613292612e66565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106132d7576132d6613299565b5b50565b5f8190506132e7826132c6565b919050565b5f6132f6826132da565b9050919050565b613306816132ec565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6133408383613015565b60208301905092915050565b5f602082019050919050565b5f6133628261330c565b61336c8185613316565b935061337783613326565b805f5b838110156133a757815161338e8882613335565b97506133998361334c565b92505060018101905061337a565b5085935050505092915050565b5f6080820190506133c75f830187612621565b6133d460208301866132fd565b81810360408301526133e68185613358565b905081810360608301526133fa8184613358565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61344781613432565b82525050565b5f6020820190506134605f83018461343e565b9291505056fea26469706673582212200f211225ea5291a75775139820be5fec324d53eaa8384a2357c3af6179f5548c64736f6c634300081b0033","sourceMap":"174:581:11:-:0;;;216:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;297:5;304:7;313:9;3998:5:0;3990;:13;;;;;;:::i;:::-;;4023:7;4013;:17;;;;;;:::i;:::-;;4052:9;4040;;:21;;;;;;;;;;;;;;;;;;4102:1;4089:9;:14;;;;:42;;4129:1;4117:9;:13;;;;:::i;:::-;4110:2;:21;;;;:::i;:::-;4089:42;;;4106:1;4089:42;4072:14;:59;;;;3907:231;;;216:110:11;;;174:581;;7:75:50;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:139::-;1699:6;1694:3;1689;1683:23;1740:1;1731:6;1726:3;1722:16;1715:27;1610:139;;;:::o;1755:434::-;1844:5;1869:66;1885:49;1927:6;1885:49;:::i;:::-;1869:66;:::i;:::-;1860:75;;1958:6;1951:5;1944:21;1996:4;1989:5;1985:16;2034:3;2025:6;2020:3;2016:16;2013:25;2010:112;;;2041:79;;:::i;:::-;2010:112;2131:52;2176:6;2171:3;2166;2131:52;:::i;:::-;1850:339;1755:434;;;;;:::o;2209:355::-;2276:5;2325:3;2318:4;2310:6;2306:17;2302:27;2292:122;;2333:79;;:::i;:::-;2292:122;2443:6;2437:13;2468:90;2554:3;2546:6;2539:4;2531:6;2527:17;2468:90;:::i;:::-;2459:99;;2282:282;2209:355;;;;:::o;2570:86::-;2605:7;2645:4;2638:5;2634:16;2623:27;;2570:86;;;:::o;2662:118::-;2733:22;2749:5;2733:22;:::i;:::-;2726:5;2723:33;2713:61;;2770:1;2767;2760:12;2713:61;2662:118;:::o;2786:139::-;2841:5;2872:6;2866:13;2857:22;;2888:31;2913:5;2888:31;:::i;:::-;2786:139;;;;:::o;2931:1005::-;3037:6;3045;3053;3102:2;3090:9;3081:7;3077:23;3073:32;3070:119;;;3108:79;;:::i;:::-;3070:119;3249:1;3238:9;3234:17;3228:24;3279:18;3271:6;3268:30;3265:117;;;3301:79;;:::i;:::-;3265:117;3406:74;3472:7;3463:6;3452:9;3448:22;3406:74;:::i;:::-;3396:84;;3199:291;3550:2;3539:9;3535:18;3529:25;3581:18;3573:6;3570:30;3567:117;;;3603:79;;:::i;:::-;3567:117;3708:74;3774:7;3765:6;3754:9;3750:22;3708:74;:::i;:::-;3698:84;;3500:292;3831:2;3857:62;3911:7;3902:6;3891:9;3887:22;3857:62;:::i;:::-;3847:72;;3802:127;2931:1005;;;;;:::o;3942:99::-;3994:6;4028:5;4022:12;4012:22;;3942:99;;;:::o;4047:180::-;4095:77;4092:1;4085:88;4192:4;4189:1;4182:15;4216:4;4213:1;4206:15;4233:320;4277:6;4314:1;4308:4;4304:12;4294:22;;4361:1;4355:4;4351:12;4382:18;4372:81;;4438:4;4430:6;4426:17;4416:27;;4372:81;4500:2;4492:6;4489:14;4469:18;4466:38;4463:84;;4519:18;;:::i;:::-;4463:84;4284:269;4233:320;;;:::o;4559:141::-;4608:4;4631:3;4623:11;;4654:3;4651:1;4644:14;4688:4;4685:1;4675:18;4667:26;;4559:141;;;:::o;4706:93::-;4743:6;4790:2;4785;4778:5;4774:14;4770:23;4760:33;;4706:93;;;:::o;4805:107::-;4849:8;4899:5;4893:4;4889:16;4868:37;;4805:107;;;;:::o;4918:393::-;4987:6;5037:1;5025:10;5021:18;5060:97;5090:66;5079:9;5060:97;:::i;:::-;5178:39;5208:8;5197:9;5178:39;:::i;:::-;5166:51;;5250:4;5246:9;5239:5;5235:21;5226:30;;5299:4;5289:8;5285:19;5278:5;5275:30;5265:40;;4994:317;;4918:393;;;;;:::o;5317:77::-;5354:7;5383:5;5372:16;;5317:77;;;:::o;5400:60::-;5428:3;5449:5;5442:12;;5400:60;;;:::o;5466:142::-;5516:9;5549:53;5567:34;5576:24;5594:5;5576:24;:::i;:::-;5567:34;:::i;:::-;5549:53;:::i;:::-;5536:66;;5466:142;;;:::o;5614:75::-;5657:3;5678:5;5671:12;;5614:75;;;:::o;5695:269::-;5805:39;5836:7;5805:39;:::i;:::-;5866:91;5915:41;5939:16;5915:41;:::i;:::-;5907:6;5900:4;5894:11;5866:91;:::i;:::-;5860:4;5853:105;5771:193;5695:269;;;:::o;5970:73::-;6015:3;6036:1;6029:8;;5970:73;:::o;6049:189::-;6126:32;;:::i;:::-;6167:65;6225:6;6217;6211:4;6167:65;:::i;:::-;6102:136;6049:189;;:::o;6244:186::-;6304:120;6321:3;6314:5;6311:14;6304:120;;;6375:39;6412:1;6405:5;6375:39;:::i;:::-;6348:1;6341:5;6337:13;6328:22;;6304:120;;;6244:186;;:::o;6436:543::-;6537:2;6532:3;6529:11;6526:446;;;6571:38;6603:5;6571:38;:::i;:::-;6655:29;6673:10;6655:29;:::i;:::-;6645:8;6641:44;6838:2;6826:10;6823:18;6820:49;;;6859:8;6844:23;;6820:49;6882:80;6938:22;6956:3;6938:22;:::i;:::-;6928:8;6924:37;6911:11;6882:80;:::i;:::-;6541:431;;6526:446;6436:543;;;:::o;6985:117::-;7039:8;7089:5;7083:4;7079:16;7058:37;;6985:117;;;;:::o;7108:169::-;7152:6;7185:51;7233:1;7229:6;7221:5;7218:1;7214:13;7185:51;:::i;:::-;7181:56;7266:4;7260;7256:15;7246:25;;7159:118;7108:169;;;;:::o;7282:295::-;7358:4;7504:29;7529:3;7523:4;7504:29;:::i;:::-;7496:37;;7566:3;7563:1;7559:11;7553:4;7550:21;7542:29;;7282:295;;;;:::o;7582:1395::-;7699:37;7732:3;7699:37;:::i;:::-;7801:18;7793:6;7790:30;7787:56;;;7823:18;;:::i;:::-;7787:56;7867:38;7899:4;7893:11;7867:38;:::i;:::-;7952:67;8012:6;8004;7998:4;7952:67;:::i;:::-;8046:1;8070:4;8057:17;;8102:2;8094:6;8091:14;8119:1;8114:618;;;;8776:1;8793:6;8790:77;;;8842:9;8837:3;8833:19;8827:26;8818:35;;8790:77;8893:67;8953:6;8946:5;8893:67;:::i;:::-;8887:4;8880:81;8749:222;8084:887;;8114:618;8166:4;8162:9;8154:6;8150:22;8200:37;8232:4;8200:37;:::i;:::-;8259:1;8273:208;8287:7;8284:1;8281:14;8273:208;;;8366:9;8361:3;8357:19;8351:26;8343:6;8336:42;8417:1;8409:6;8405:14;8395:24;;8464:2;8453:9;8449:18;8436:31;;8310:4;8307:1;8303:12;8298:17;;8273:208;;;8509:6;8500:7;8497:19;8494:179;;;8567:9;8562:3;8558:19;8552:26;8610:48;8652:4;8644:6;8640:17;8629:9;8610:48;:::i;:::-;8602:6;8595:64;8517:156;8494:179;8719:1;8715;8707:6;8703:14;8699:22;8693:4;8686:36;8121:611;;;8084:887;;7674:1303;;;7582:1395;;:::o;8983:180::-;9031:77;9028:1;9021:88;9128:4;9125:1;9118:15;9152:4;9149:1;9142:15;9169:191;9207:4;9227:18;9243:1;9227:18;:::i;:::-;9222:23;;9259:18;9275:1;9259:18;:::i;:::-;9254:23;;9301:1;9298;9294:9;9286:17;;9325:4;9319;9316:14;9313:40;;;9333:18;;:::i;:::-;9313:40;9169:191;;;;:::o;9366:102::-;9408:8;9455:5;9452:1;9448:13;9427:34;;9366:102;;;:::o;9474:848::-;9535:5;9542:4;9566:6;9557:15;;9590:5;9581:14;;9604:712;9625:1;9615:8;9612:15;9604:712;;;9720:4;9715:3;9711:14;9705:4;9702:24;9699:50;;;9729:18;;:::i;:::-;9699:50;9779:1;9769:8;9765:16;9762:451;;;10194:4;10187:5;10183:16;10174:25;;9762:451;10244:4;10238;10234:15;10226:23;;10274:32;10297:8;10274:32;:::i;:::-;10262:44;;9604:712;;;9474:848;;;;;;;:::o;10328:1073::-;10382:5;10573:8;10563:40;;10594:1;10585:10;;10596:5;;10563:40;10622:4;10612:36;;10639:1;10630:10;;10641:5;;10612:36;10708:4;10756:1;10751:27;;;;10792:1;10787:191;;;;10701:277;;10751:27;10769:1;10760:10;;10771:5;;;10787:191;10832:3;10822:8;10819:17;10816:43;;;10839:18;;:::i;:::-;10816:43;10888:8;10885:1;10881:16;10872:25;;10923:3;10916:5;10913:14;10910:40;;;10930:18;;:::i;:::-;10910:40;10963:5;;;10701:277;;11087:2;11077:8;11074:16;11068:3;11062:4;11059:13;11055:36;11037:2;11027:8;11024:16;11019:2;11013:4;11010:12;11006:35;10990:111;10987:246;;;11143:8;11137:4;11133:19;11124:28;;11178:3;11171:5;11168:14;11165:40;;;11185:18;;:::i;:::-;11165:40;11218:5;;10987:246;11258:42;11296:3;11286:8;11280:4;11277:1;11258:42;:::i;:::-;11243:57;;;;11332:4;11327:3;11323:14;11316:5;11313:25;11310:51;;;11341:18;;:::i;:::-;11310:51;11390:4;11383:5;11379:16;11370:25;;10328:1073;;;;;;:::o;11407:281::-;11465:5;11489:23;11507:4;11489:23;:::i;:::-;11481:31;;11533:25;11549:8;11533:25;:::i;:::-;11521:37;;11577:104;11614:66;11604:8;11598:4;11577:104;:::i;:::-;11568:113;;11407:281;;;;:::o;174:581:11:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c80637edb0e7d11610102578063b4b20190116100a0578063d4febb961161006f578063d4febb961461057b578063dd62ed3e14610597578063fca114d6146105c7578063fe3f670d146105f7576101cd565b8063b4b20190146104e1578063b6363cf2146104eb578063ca49d7cd1461051b578063d174999a1461054b576101cd565b8063a415f269116100dc578063a415f26914610433578063a794ee9514610451578063a9059cbb14610481578063a9fe9959146104b1576101cd565b80637edb0e7d146103b557806395d89b41146103e55780639645edd414610403576101cd565b8063344ff1011161016f57806339ce5fdf1161014957806339ce5fdf1461032d578063490690f314610349578063540952271461036757806370a0823114610385576101cd565b8063344ff101146102c357806334e3e2ba146102f3578063365ac0021461030f576101cd565b806318160ddd116101ab57806318160ddd1461023b57806323b872dd146102595780632893c5b014610289578063313ce567146102a5576101cd565b806306fdde03146101d1578063095ea7b3146101ef57806313691c761461021f575b5f5ffd5b6101d9610627565b6040516101e691906123f3565b60405180910390f35b610209600480360381019061020491906124b1565b6106b7565b6040516102169190612509565b60405180910390f35b6102396004803603810190610234919061255f565b6106ea565b005b6102436106f9565b60405161025091906125ac565b60405180910390f35b610273600480360381019061026e91906125c5565b610720565b6040516102809190612509565b60405180910390f35b6102a3600480360381019061029e919061255f565b610753565b005b6102ad610762565b6040516102ba9190612630565b60405180910390f35b6102dd60048036038101906102d89190612649565b610777565b6040516102ea91906126ad565b60405180910390f35b61030d600480360381019061030891906126fd565b6107bd565b005b6103176107dc565b6040516103249190612509565b60405180910390f35b61034760048036038101906103429190612728565b6107e4565b005b61035161083e565b60405161035e91906125ac565b60405180910390f35b61036f610847565b60405161037c91906126ad565b60405180910390f35b61039f600480360381019061039a9190612649565b610850565b6040516103ac91906125ac565b60405180910390f35b6103cf60048036038101906103ca9190612955565b6108b3565b6040516103dc91906126ad565b60405180910390f35b6103ed610922565b6040516103fa91906123f3565b60405180910390f35b61041d60048036038101906104189190612a48565b6109b2565b60405161042a91906126ad565b60405180910390f35b61043b610a65565b6040516104489190612509565b60405180910390f35b61046b60048036038101906104669190612acc565b610a6d565b60405161047891906126ad565b60405180910390f35b61049b600480360381019061049691906124b1565b610a8e565b6040516104a89190612509565b60405180910390f35b6104cb60048036038101906104c69190612b26565b610ac1565b6040516104d891906126ad565b60405180910390f35b6104e9610b26565b005b61050560048036038101906105009190612b97565b610b7e565b6040516105129190612509565b60405180910390f35b61053560048036038101906105309190612bd5565b610c52565b60405161054291906126ad565b60405180910390f35b61056560048036038101906105609190612c25565b610d01565b60405161057291906126ad565b60405180910390f35b61059560048036038101906105909190612ced565b610d26565b005b6105b160048036038101906105ac9190612b97565b610d35565b6040516105be91906125ac565b60405180910390f35b6105e160048036038101906105dc9190612d2b565b610d68565b6040516105ee91906126ad565b60405180910390f35b610611600480360381019061060c9190612dcb565b610ddb565b60405161061e91906126ad565b60405180910390f35b60606005805461063690612e36565b80601f016020809104026020016040519081016040528092919081815260200182805461066290612e36565b80156106ad5780601f10610684576101008083540402835291602001916106ad565b820191905f5260205f20905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f48282610e3c565b505050565b5f60085460035f9054906101000a900461ffff1661ffff1661071b9190612e93565b905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075d8282610ed2565b505050565b5f60075f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8060035f6101000a81548161ffff021916908361ffff16021790555050565b5f6001905090565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505050565b5f600854905090565b5f600454905090565b5f6008545f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661ffff166108ac9190612e93565b9050919050565b5f6108be8433610b7e565b6109015783336040517fd2251dd50000000000000000000000000000000000000000000000000000000081526004016108f8929190612ee3565b60405180910390fd5b5f61090b83610f68565b9050610918858583610fdb565b9150509392505050565b60606006805461093190612e36565b80601f016020809104026020016040519081016040528092919081815260200182805461095d90612e36565b80156109a85780601f1061097f576101008083540402835291602001916109a8565b820191905f5260205f20905b81548152906001019060200180831161098b57829003601f168201915b5050505050905090565b5f6109bd84336110d0565b610a005783336040517fd5fdb3f00000000000000000000000000000000000000000000000000000000081526004016109f7929190612f0a565b60405180910390fd5b610a0a8633610b7e565b610a4d5785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610a44929190612ee3565b60405180910390fd5b610a5a8686868686611168565b905095945050505050565b5f6001905090565b5f5f610a7883610f68565b9050610a85338583610fdb565b91505092915050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610acc84336110d0565b610b0f5783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610b06929190612f0a565b60405180910390fd5b610b1c3386868686611168565b9050949350505050565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff160217905550565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c4a575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900465ffffffffffff1665ffffffffffff164211155b905092915050565b5f610c5d82336110d0565b610ca05781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610c97929190612f0a565b60405180910390fd5b610caa8433610b7e565b610ced5783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610ce4929190612ee3565b60405180910390fd5b610cf8848484610fdb565b90509392505050565b5f5f610d0c85610f68565b9050610d1b3387838787611168565b915050949350505050565b610d313383836111c0565b5050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d738633610b7e565b610db65785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610dad929190612ee3565b60405180910390fd5b5f610dc085610f68565b9050610dcf8787838787611168565b91505095945050505050565b5f610de682336110d0565b610e295781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610e20929190612f0a565b60405180910390fd5b610e34338484610fdb565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ead575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610ea49190612f31565b60405180910390fd5b610eca835f610ec58567ffffffffffffffff166112c4565b6112d6565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f43575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f3a9190612f31565b60405180910390fd5b610f605f84610f5b8567ffffffffffffffff166112c4565b6112d6565b905092915050565b5f5f600590508060ff16836040015160ff1614610fc2578260400151816040517f67cf3071000000000000000000000000000000000000000000000000000000008152600401610fb9929190612f4a565b60405180910390fd5b610fd3610fce84611971565b6119b3565b915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361104c575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110439190612f31565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110bc575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110b39190612f31565b60405180910390fd5b6110c78484846112d6565b90509392505050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b8152600401611120929190612f71565b6020604051808303815f875af115801561113c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111609190612fc2565b905092915050565b5f5f611175878787610fdb565b90505f611186338989858989611a4a565b90505f6111a6888a6111a18561119b5f6112c4565b88611b87565b6112d6565b90506111b28382611be9565b935050505095945050505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f921a218a75d18e8ec5704851e6b234a85725b21a2521ce889622c35dedc1fa12836040516112b79190612ffc565b60405180910390a3505050565b5f6112cf825f611c32565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113735761136c61135d60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611c4c90919063ffffffff16565b836113675f6112c4565b611b87565b9050611377565b8190505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113f4576113c260035f9054906101000a900461ffff16611c5f565b60035f6101000a81548161ffff021916908361ffff1602179055506113e960045482611c9b565b600481905550611524565b61143b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611be9565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114ce5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff16611ce4565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a15761156f60035f9054906101000a900461ffff16611ce4565b60035f6101000a81548161ffff021916908361ffff16021790555061159660045482611be9565b6004819055506116d1565b6115e860015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611c9b565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061167b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff16611c5f565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146117ad5761175b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d1f565b6117a260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485611d9e565b6117ac8185611d9e565b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146118895761183760015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d1f565b61187e60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611d9e565b6118888184611d9e565b5b6118938133611d9e565b61189e600454611d1f565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516118fd91906125ac565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdef6144e0f80e23ca465862f2f93a21f8526624729198aed904b46e005c943e48360405161196291906125ac565b60405180910390a39392505050565b611979612358565b6040518060800160405280835f01518152602001836020015160ff168152602001600560ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b8152600401611a039291906130e5565b6020604051808303815f875af1158015611a1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a439190613127565b9050919050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff163b1115611b70578473ffffffffffffffffffffffffffffffffffffffff1663944e3ddb88888787876040518663ffffffff1660e01b8152600401611aab95949392919061318e565b6020604051808303815f875af1925050508015611ae657506040513d601f19601f82011682018060405250810190611ae39190613204565b60015b611b67573d805f8114611b14576040519150601f19603f3d011682016040523d82523d5f602084013e611b19565b606091505b505f815103611b5f57856040517f50213379000000000000000000000000000000000000000000000000000000008152600401611b569190612f31565b60405180910390fd5b805181602001fd5b80915050611b7d565b611b7a6001611e1e565b90505b9695505050505050565b5f611b9184611e30565b611ba157611b9e5f611e1e565b93505b611baa83611e41565b611bba57611bb75f6112c4565b92505b611bc382611e41565b611bd357611bd05f6112c4565b91505b611be06005858585611e52565b90509392505050565b5f611bf383611e41565b611c0357611c005f6112c4565b92505b611c0c82611e41565b611c1c57611c195f6112c4565b91505b611c2a600584846007611f43565b905092915050565b5f5f611c4084600585612032565b90508091505092915050565b5f611c57838361212d565b905092915050565b5f5f8261ffff161480611c77575061270f8261ffff16145b15611c86576113899050611c96565b600182611c93919061322f565b90505b919050565b5f611ca583611e41565b611cb557611cb25f6112c4565b92505b611cbe82611e41565b611cce57611ccb5f6112c4565b91505b611cdc600584846008611f43565b905092915050565b5f5f8261ffff161480611cfb575060018261ffff16145b15611d0a576113879050611d1a565b600182611d179190613264565b90505b919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b8152600401611d6e929190612f71565b5f604051808303815f87803b158015611d85575f5ffd5b505af1158015611d97573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c83836040518363ffffffff1660e01b8152600401611ded929190612f71565b5f604051808303815f87803b158015611e04575f5ffd5b505af1158015611e16573d5f5f3e3d5ffd5b505050505050565b5f611e29825f612176565b9050919050565b5f611e3a8261219f565b9050919050565b5f611e4b8261219f565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611e918888886121ab565b5f67ffffffffffffffff811115611eab57611eaa61276a565b5b604051908082528060200260200182016040528015611ed95781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611ef994939291906133b4565b6020604051808303815f875af1158015611f15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f399190613127565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684611f808888612267565b5f67ffffffffffffffff811115611f9a57611f9961276a565b5b604051908082528060200260200182016040528015611fc85781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401611fe894939291906133b4565b6020604051808303815f875af1158015612004573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120289190613127565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156120805761207f61276a565b5b6040519080825280602002602001820160405280156120ae5781602001602082028036833780820191505090505b506120c5898960ff166120c08a612301565b6121ab565b6040518563ffffffff1660e01b81526004016120e494939291906133b4565b6020604051808303815f875af1158015612100573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121249190613127565b90509392505050565b5f61213783611e41565b612147576121445f6112c4565b92505b61215082611e41565b6121605761215d5f6112c4565b91505b61216e600584846013611f43565b905092915050565b5f5f5f9050831561218657600190505b5f612192825f86612032565b9050809250505092915050565b5f5f8214159050919050565b60605f600367ffffffffffffffff8111156121c9576121c861276a565b5b6040519080825280602002602001820160405280156121f75781602001602082028036833780820191505090505b50905084815f8151811061220e5761220d613405565b5b602002602001018181525050838160018151811061222f5761222e613405565b5b60200260200101818152505082816002815181106122505761224f613405565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff8111156122855761228461276a565b5b6040519080825280602002602001820160405280156122b35781602001602082028036833780820191505090505b50905083815f815181106122ca576122c9613405565b5b60200260200101818152505082816001815181106122eb576122ea613405565b5b6020026020010181815250508091505092915050565b5f5f8260030b121561234a57816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612341919061344d565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6123c582612383565b6123cf818561238d565b93506123df81856020860161239d565b6123e8816123ab565b840191505092915050565b5f6020820190508181035f83015261240b81846123bb565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61244d82612424565b9050919050565b61245d81612443565b8114612467575f5ffd5b50565b5f8135905061247881612454565b92915050565b5f819050919050565b6124908161247e565b811461249a575f5ffd5b50565b5f813590506124ab81612487565b92915050565b5f5f604083850312156124c7576124c661241c565b5b5f6124d48582860161246a565b92505060206124e58582860161249d565b9150509250929050565b5f8115159050919050565b612503816124ef565b82525050565b5f60208201905061251c5f8301846124fa565b92915050565b5f67ffffffffffffffff82169050919050565b61253e81612522565b8114612548575f5ffd5b50565b5f8135905061255981612535565b92915050565b5f5f604083850312156125755761257461241c565b5b5f6125828582860161246a565b92505060206125938582860161254b565b9150509250929050565b6125a68161247e565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f5f5f606084860312156125dc576125db61241c565b5b5f6125e98682870161246a565b93505060206125fa8682870161246a565b925050604061260b8682870161249d565b9150509250925092565b5f60ff82169050919050565b61262a81612615565b82525050565b5f6020820190506126435f830184612621565b92915050565b5f6020828403121561265e5761265d61241c565b5b5f61266b8482850161246a565b91505092915050565b5f819050919050565b5f61269761269261268d8461247e565b612674565b61247e565b9050919050565b6126a78161267d565b82525050565b5f6020820190506126c05f83018461269e565b92915050565b5f61ffff82169050919050565b6126dc816126c6565b81146126e6575f5ffd5b50565b5f813590506126f7816126d3565b92915050565b5f602082840312156127125761271161241c565b5b5f61271f848285016126e9565b91505092915050565b5f5f6040838503121561273e5761273d61241c565b5b5f61274b8582860161246a565b925050602061275c858286016126e9565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6127a0826123ab565b810181811067ffffffffffffffff821117156127bf576127be61276a565b5b80604052505050565b5f6127d1612413565b90506127dd8282612797565b919050565b5f5ffd5b6127ef81612615565b81146127f9575f5ffd5b50565b5f8135905061280a816127e6565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156128325761283161276a565b5b61283b826123ab565b9050602081019050919050565b828183375f83830152505050565b5f61286861286384612818565b6127c8565b90508281526020810184848401111561288457612883612814565b5b61288f848285612848565b509392505050565b5f82601f8301126128ab576128aa612810565b5b81356128bb848260208601612856565b91505092915050565b5f608082840312156128d9576128d8612766565b5b6128e360806127c8565b90505f6128f28482850161249d565b5f830152506020612905848285016127fc565b6020830152506040612919848285016127fc565b604083015250606082013567ffffffffffffffff81111561293d5761293c6127e2565b5b61294984828501612897565b60608301525092915050565b5f5f5f6060848603121561296c5761296b61241c565b5b5f6129798682870161246a565b935050602061298a8682870161246a565b925050604084013567ffffffffffffffff8111156129ab576129aa612420565b5b6129b7868287016128c4565b9150509250925092565b6129ca8161247e565b81146129d4575f5ffd5b50565b5f813590506129e5816129c1565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f840112612a0857612a07612810565b5b8235905067ffffffffffffffff811115612a2557612a246129eb565b5b602083019150836001820283011115612a4157612a406129ef565b5b9250929050565b5f5f5f5f5f60808688031215612a6157612a6061241c565b5b5f612a6e8882890161246a565b9550506020612a7f8882890161246a565b9450506040612a90888289016129d7565b935050606086013567ffffffffffffffff811115612ab157612ab0612420565b5b612abd888289016129f3565b92509250509295509295909350565b5f5f60408385031215612ae257612ae161241c565b5b5f612aef8582860161246a565b925050602083013567ffffffffffffffff811115612b1057612b0f612420565b5b612b1c858286016128c4565b9150509250929050565b5f5f5f5f60608587031215612b3e57612b3d61241c565b5b5f612b4b8782880161246a565b9450506020612b5c878288016129d7565b935050604085013567ffffffffffffffff811115612b7d57612b7c612420565b5b612b89878288016129f3565b925092505092959194509250565b5f5f60408385031215612bad57612bac61241c565b5b5f612bba8582860161246a565b9250506020612bcb8582860161246a565b9150509250929050565b5f5f5f60608486031215612bec57612beb61241c565b5b5f612bf98682870161246a565b9350506020612c0a8682870161246a565b9250506040612c1b868287016129d7565b9150509250925092565b5f5f5f5f60608587031215612c3d57612c3c61241c565b5b5f612c4a8782880161246a565b945050602085013567ffffffffffffffff811115612c6b57612c6a612420565b5b612c77878288016128c4565b935050604085013567ffffffffffffffff811115612c9857612c97612420565b5b612ca4878288016129f3565b925092505092959194509250565b5f65ffffffffffff82169050919050565b612ccc81612cb2565b8114612cd6575f5ffd5b50565b5f81359050612ce781612cc3565b92915050565b5f5f60408385031215612d0357612d0261241c565b5b5f612d108582860161246a565b9250506020612d2185828601612cd9565b9150509250929050565b5f5f5f5f5f60808688031215612d4457612d4361241c565b5b5f612d518882890161246a565b9550506020612d628882890161246a565b945050604086013567ffffffffffffffff811115612d8357612d82612420565b5b612d8f888289016128c4565b935050606086013567ffffffffffffffff811115612db057612daf612420565b5b612dbc888289016129f3565b92509250509295509295909350565b5f5f60408385031215612de157612de061241c565b5b5f612dee8582860161246a565b9250506020612dff858286016129d7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e4d57607f821691505b602082108103612e6057612e5f612e09565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9d8261247e565b9150612ea88361247e565b9250828202612eb68161247e565b91508282048414831517612ecd57612ecc612e66565b5b5092915050565b612edd81612443565b82525050565b5f604082019050612ef65f830185612ed4565b612f036020830184612ed4565b9392505050565b5f604082019050612f1d5f83018561269e565b612f2a6020830184612ed4565b9392505050565b5f602082019050612f445f830184612ed4565b92915050565b5f604082019050612f5d5f830185612621565b612f6a6020830184612621565b9392505050565b5f604082019050612f845f83018561259d565b612f916020830184612ed4565b9392505050565b612fa1816124ef565b8114612fab575f5ffd5b50565b5f81519050612fbc81612f98565b92915050565b5f60208284031215612fd757612fd661241c565b5b5f612fe484828501612fae565b91505092915050565b612ff681612cb2565b82525050565b5f60208201905061300f5f830184612fed565b92915050565b61301e8161247e565b82525050565b61302d81612615565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f61305782613033565b613061818561303d565b935061307181856020860161239d565b61307a816123ab565b840191505092915050565b5f608083015f83015161309a5f860182613015565b5060208301516130ad6020860182613024565b5060408301516130c06040860182613024565b50606083015184820360608601526130d8828261304d565b9150508091505092915050565b5f6040820190508181035f8301526130fd8185613085565b905061310c6020830184612ed4565b9392505050565b5f8151905061312181612487565b92915050565b5f6020828403121561313c5761313b61241c565b5b5f61314984828501613113565b91505092915050565b5f82825260208201905092915050565b5f61316d8385613152565b935061317a838584612848565b613183836123ab565b840190509392505050565b5f6080820190506131a15f830188612ed4565b6131ae6020830187612ed4565b6131bb604083018661269e565b81810360608301526131ce818486613162565b90509695505050505050565b6131e38161247e565b81146131ed575f5ffd5b50565b5f815190506131fe816131da565b92915050565b5f602082840312156132195761321861241c565b5b5f613226848285016131f0565b91505092915050565b5f613239826126c6565b9150613244836126c6565b9250828201905061ffff81111561325e5761325d612e66565b5b92915050565b5f61326e826126c6565b9150613279836126c6565b9250828203905061ffff81111561329357613292612e66565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106132d7576132d6613299565b5b50565b5f8190506132e7826132c6565b919050565b5f6132f6826132da565b9050919050565b613306816132ec565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6133408383613015565b60208301905092915050565b5f602082019050919050565b5f6133628261330c565b61336c8185613316565b935061337783613326565b805f5b838110156133a757815161338e8882613335565b97506133998361334c565b92505060018101905061337a565b5085935050505092915050565b5f6080820190506133c75f830187612621565b6133d460208301866132fd565b81810360408301526133e68185613358565b905081810360608301526133fa8184613358565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61344781613432565b82525050565b5f6020820190506134605f83018461343e565b9291505056fea26469706673582212200f211225ea5291a75775139820be5fec324d53eaa8384a2357c3af6179f5548c64736f6c634300081b0033","sourceMap":"174:581:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8969:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;428:90:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5488:123:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9235:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;332:90:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5289:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7194:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;653:100:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4212:84:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;524:123:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6383:93:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5681:112;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6908:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10164:385;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4563:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6210:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9627:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11325:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19553:93;;;:::i;:::-;;7424:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10555:465;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11026:293;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7814:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8525:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11705:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9855:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4361:89;4406:13;4438:5;4431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:89;:::o;8969:117::-;9027:4;9050:29;;;;;;;;;;;;;;428:90:11;490:21;496:7;505:5;490;:21::i;:::-;;428:90;;:::o;5488:123:0:-;5540:7;5590:14;;5566:21;;;;;;;;;;;:38;;;;;;:::i;:::-;5559:45;;5488:123;:::o;9235:129::-;9305:4;9328:29;;;;;;;;;;;;;;332:90:11;394:21;400:7;409:5;394;:21::i;:::-;;332:90;;:::o;5289:89:0:-;5338:5;5362:9;;;;;;;;;;;5355:16;;5289:89;:::o;7194:131::-;7271:7;7297:12;:21;7310:7;7297:21;;;;;;;;;;;;;;;;7290:28;;7194:131;;;:::o;653:100:11:-;741:5;717:21;;:29;;;;;;;;;;;;;;;;;;653:100;:::o;4212:84:0:-;4262:4;4285;4278:11;;4212:84;:::o;524:123:11:-;635:5;605:18;:27;624:7;605:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;524:123;;:::o;6383:93:0:-;6429:7;6455:14;;6448:21;;6383:93;:::o;5681:112::-;5745:7;5771:15;;5764:22;;5681:112;:::o;6908:142::-;6973:7;7029:14;;6999:18;:27;7018:7;6999:27;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;;:::i;:::-;6992:51;;6908:142;;;:::o;10164:385::-;10302:19;10338:28;10349:4;10355:10;10338;:28::i;:::-;10333:111;;10416:4;10422:10;10389:44;;;;;;;;;;;;:::i;:::-;;;;;;;;10333:111;10453:13;10469:22;10483:7;10469:13;:22::i;:::-;10453:38;;10516:26;10526:4;10532:2;10536:5;10516:9;:26::i;:::-;10502:40;;10323:226;10164:385;;;;;:::o;4563:93::-;4610:13;4642:7;4635:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4563:93;:::o;12145:514::-;12310:19;12346:32;12360:5;12367:10;12346:13;:32::i;:::-;12341:129;;12441:5;12448:10;12401:58;;;;;;;;;;;;:::i;:::-;;;;;;;;12341:129;12484:28;12495:4;12501:10;12484;:28::i;:::-;12479:111;;12562:4;12568:10;12535:44;;;;;;;;;;;;:::i;:::-;;;;;;;;12479:111;12613:39;12630:4;12636:2;12640:5;12647:4;;12613:16;:39::i;:::-;12599:53;;12145:514;;;;;;;:::o;6210:95::-;6271:4;6294;6287:11;;6210:95;:::o;9627:222::-;9717:19;9748:13;9764:22;9778:7;9764:13;:22::i;:::-;9748:38;;9810:32;9820:10;9832:2;9836:5;9810:9;:32::i;:::-;9796:46;;9738:111;9627:222;;;;:::o;8085:116::-;8142:4;8165:29;;;;;;;;;;;;;;11325:374;11464:19;11500:32;11514:5;11521:10;11500:13;:32::i;:::-;11495:129;;11595:5;11602:10;11555:58;;;;;;;;;;;;:::i;:::-;;;;;;;;11495:129;11647:45;11664:10;11676:2;11680:5;11687:4;;11647:16;:45::i;:::-;11633:59;;11325:374;;;;;;:::o;19553:93::-;19638:1;19605:18;:30;19624:10;19605:30;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19553:93::o;7424:179::-;7506:4;7539:7;7529:17;;:6;:17;;;:67;;;;7569:10;:18;7580:6;7569:18;;;;;;;;;;;;;;;:27;7588:7;7569:27;;;;;;;;;;;;;;;;;;;;;;;;;7550:46;;:15;:46;;7529:67;7522:74;;7424:179;;;;:::o;10555:465::-;10684:19;10720:32;10734:5;10741:10;10720:13;:32::i;:::-;10715:129;;10815:5;10822:10;10775:58;;;;;;;;;;;;:::i;:::-;;;;;;;;10715:129;10858:28;10869:4;10875:10;10858;:28::i;:::-;10853:111;;10936:4;10942:10;10909:44;;;;;;;;;;;;:::i;:::-;;;;;;;;10853:111;10987:26;10997:4;11003:2;11007:5;10987:9;:26::i;:::-;10973:40;;10555:465;;;;;:::o;11026:293::-;11174:19;11205:13;11221:22;11235:7;11221:13;:22::i;:::-;11205:38;;11267:45;11284:10;11296:2;11300:5;11307:4;;11267:16;:45::i;:::-;11253:59;;11195:124;11026:293;;;;;;:::o;7814:126::-;7892:41;7905:10;7917:8;7927:5;7892:12;:41::i;:::-;7814:126;;:::o;8525:122::-;8585:7;8611:29;;;;;;;;;;;;;;11705:434;11879:19;11915:28;11926:4;11932:10;11915;:28::i;:::-;11910:111;;11993:4;11999:10;11966:44;;;;;;;;;;;;:::i;:::-;;;;;;;;11910:111;12030:13;12046:22;12060:7;12046:13;:22::i;:::-;12030:38;;12093:39;12110:4;12116:2;12120:5;12127:4;;12093:16;:39::i;:::-;12079:53;;11900:239;11705:434;;;;;;;:::o;9855:303::-;9936:19;9972:32;9986:5;9993:10;9972:13;:32::i;:::-;9967:129;;10067:5;10074:10;10027:58;;;;;;;;;;;;:::i;:::-;;;;;;;;9967:129;10119:32;10129:10;10141:2;10145:5;10119:9;:32::i;:::-;10105:46;;9855:303;;;;:::o;18080:264::-;18144:19;18198:1;18179:21;;:7;:21;;;18175:89;;18250:1;18223:30;;;;;;;;;;;:::i;:::-;;;;;;;;18175:89;18287:50;18295:7;18312:1;18316:20;18330:5;18316:20;;:13;:20::i;:::-;18287:7;:50::i;:::-;18273:64;;18080:264;;;;:::o;17496:266::-;17560:19;17614:1;17595:21;;:7;:21;;;17591:91;;17668:1;17639:32;;;;;;;;;;;:::i;:::-;;;;;;;;17591:91;17705:50;17721:1;17725:7;17734:20;17748:5;17734:20;;:13;:20::i;:::-;17705:7;:50::i;:::-;17691:64;;17496:266;;;;:::o;116213:335:18:-;116272:7;116291:19;7816:1:22;116291:40:18;;116360:13;116345:28;;:5;:11;;;:28;;;116341:115;;116418:5;:11;;;116431:13;116396:49;;;;;;;;;;;;:::i;:::-;;;;;;;;116341:115;116487:53;116510:29;116533:5;116510:22;:29::i;:::-;116487:22;:53::i;:::-;116467:74;;;116213:335;;;:::o;13031:344:0:-;13109:19;13160:1;13144:18;;:4;:18;;;13140:86;;13212:1;13185:30;;;;;;;;;;;:::i;:::-;;;;;;;;13140:86;13253:1;13239:16;;:2;:16;;;13235:86;;13307:1;13278:32;;;;;;;;;;;:::i;:::-;;;;;;;;13235:86;13344:24;13352:4;13358:2;13362:5;13344:7;:24::i;:::-;13330:38;;13031:344;;;;;:::o;142600:176:18:-;142670:4;1226:42;142693:43;;;142752:6;142761:7;142693:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;142686:83;;142600:176;;;;:::o;13381:612:0:-;13526:19;13641:12;13656:27;13666:4;13672:2;13676:6;13656:9;:27::i;:::-;13641:42;;13722:13;13738:70;13775:10;13787:4;13793:2;13797:4;13803;;13738:36;:70::i;:::-;13722:86;;13862:14;13879:62;13887:2;13891:4;13897:43;13908:7;13917:16;13931:1;13917:13;:16::i;:::-;13935:4;13897:10;:43::i;:::-;13879:7;:62::i;:::-;13862:79;;13965:21;13973:4;13979:6;13965:7;:21::i;:::-;13951:35;;13547:446;;;13381:612;;;;;;;:::o;19652:191::-;19780:5;19749:10;:18;19760:6;19749:18;;;;;;;;;;;;;;;:28;19768:8;19749:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19820:8;19800:36;;19812:6;19800:36;;;19830:5;19800:36;;;;;;:::i;:::-;;;;;;;;19652:191;;;:::o;128636:104:18:-;128688:7;128714:19;128724:5;128731:1;128714:9;:19::i;:::-;128707:26;;128636:104;;;:::o;14868:2285:0:-;14952:19;15456:1;15440:18;;:4;:18;;;15436:179;;15488:66;15499:29;15509:12;:18;15522:4;15509:18;;;;;;;;;;;;;;;;15499:5;:9;;:29;;;;:::i;:::-;15530:5;15537:16;15551:1;15537:13;:16::i;:::-;15488:10;:66::i;:::-;15474:80;;15436:179;;;15599:5;15585:19;;15436:179;15645:1;15629:18;;:4;:18;;;15625:362;;15687:42;15707:21;;;;;;;;;;;15687:19;:42::i;:::-;15663:21;;:66;;;;;;;;;;;;;;;;;;15761:37;15769:15;;15786:11;15761:7;:37::i;:::-;15743:15;:55;;;;15625:362;;;15850:40;15858:12;:18;15871:4;15858:18;;;;;;;;;;;;;;;;15878:11;15850:7;:40::i;:::-;15829:12;:18;15842:4;15829:18;;;;;;;;;;;;;;;:61;;;;15931:45;15951:18;:24;15970:4;15951:24;;;;;;;;;;;;;;;;;;;;;;;;;15931:19;:45::i;:::-;15904:18;:24;15923:4;15904:24;;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;15625:362;16015:1;16001:16;;:2;:16;;;15997:352;;16057:42;16077:21;;;;;;;;;;;16057:19;:42::i;:::-;16033:21;;:66;;;;;;;;;;;;;;;;;;16131:37;16139:15;;16156:11;16131:7;:37::i;:::-;16113:15;:55;;;;15997:352;;;16218:38;16226:12;:16;16239:2;16226:16;;;;;;;;;;;;;;;;16244:11;16218:7;:38::i;:::-;16199:12;:16;16212:2;16199:16;;;;;;;;;;;;;;;:57;;;;16295:43;16315:18;:22;16334:2;16315:22;;;;;;;;;;;;;;;;;;;;;;;;;16295:19;:43::i;:::-;16270:18;:22;16289:2;16270:22;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;15997:352;16502:1;16479:12;:18;16492:4;16479:18;;;;;;;;;;;;;;;;16464:39;16460:194;;16519:33;16533:12;:18;16546:4;16533:18;;;;;;;;;;;;;;;;16519:13;:33::i;:::-;16566:35;16576:12;:18;16589:4;16576:18;;;;;;;;;;;;;;;;16596:4;16566:9;:35::i;:::-;16615:28;16625:11;16638:4;16615:9;:28::i;:::-;16460:194;16703:1;16682:12;:16;16695:2;16682:16;;;;;;;;;;;;;;;;16667:37;16663:184;;16720:31;16734:12;:16;16747:2;16734:16;;;;;;;;;;;;;;;;16720:13;:31::i;:::-;16765;16775:12;:16;16788:2;16775:16;;;;;;;;;;;;;;;;16793:2;16765:9;:31::i;:::-;16810:26;16820:11;16833:2;16810:9;:26::i;:::-;16663:184;16919:34;16929:11;16942:10;16919:9;:34::i;:::-;16992:30;17006:15;;16992:13;:30::i;:::-;17053:2;17038:34;;17047:4;17038:34;;;17057:14;;17038:34;;;;;;:::i;:::-;;;;;;;;17114:2;17087:59;;17108:4;17087:59;;;17133:11;17087:59;;;;;;:::i;:::-;;;;;;;;14868:2285;;;;;:::o;10985:297:22:-;11056:21;;:::i;:::-;11096:179;;;;;;;;11133:5;:12;;;11096:179;;;;11173:5;:18;;;11096:179;;;;;;7816:1;11096:179;;;;;;11249:5;:15;;;11096:179;;;11089:186;;10985:297;;;:::o;5059:165:20:-;5127:7;745:42:21;5153:45:20;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;989:820:16:-;1167:5;1205:1;1188:2;:14;;;:18;1184:619;;;1243:2;1226:51;;;1278:8;1288:4;1294:6;1302:4;;1226:81;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1222:516;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:1;1458:6;:13;:18;1454:270;;1545:2;1507:41;;;;;;;;;;;:::i;:::-;;;;;;;;1454:270;1676:6;1670:13;1661:6;1657:2;1653:15;1646:38;1222:516;1386:6;1379:13;;;;;1184:619;1775:17;1787:4;1775:11;:17::i;:::-;1768:24;;989:820;;;;;;;;;:::o;99550:468:18:-;99630:7;99654:15;99662:6;99654:7;:15::i;:::-;99649:70;;99694:14;99702:5;99694:7;:14::i;:::-;99685:23;;99649:70;99733:15;99741:6;99733:7;:15::i;:::-;99728:68;;99773:12;99783:1;99773:9;:12::i;:::-;99764:21;;99728:68;99810:15;99818:6;99810:7;:15::i;:::-;99805:68;;99850:12;99860:1;99850:9;:12::i;:::-;99841:21;;99805:68;99903:107;7816:1:22;99954:6:18;99978;100002;99903:17;:107::i;:::-;99883:128;;99550:468;;;;;:::o;13666:342::-;13723:7;13747:12;13755:3;13747:7;:12::i;:::-;13742:62;;13781:12;13791:1;13781:9;:12::i;:::-;13775:18;;13742:62;13818:12;13826:3;13818:7;:12::i;:::-;13813:62;;13852:12;13862:1;13852:9;:12::i;:::-;13846:18;;13813:62;13905:95;7816:1:22;13958:3:18;13979;13985:14;13905:17;:95::i;:::-;13885:116;;13666:342;;;;:::o;128967:210::-;129039:7;129058:10;129071:66;129097:5;7816:1:22;129124:12:18;129071:25;:66::i;:::-;129058:79;;129167:2;129147:23;;;128967:210;;;;:::o;199837:105::-;199894:5;199918:17;199926:3;199931;199918:7;:17::i;:::-;199911:24;;199837:105;;;;:::o;14074:169:0:-;14142:6;14175:1;14164:7;:12;;;:31;;;;14191:4;14180:7;:15;;;14164:31;14160:48;;;14204:4;14197:11;;;;14160:48;14235:1;14225:7;:11;;;;:::i;:::-;14218:18;;14074:169;;;;:::o;6263:342:18:-;6320:7;6344:12;6352:3;6344:7;:12::i;:::-;6339:62;;6378:12;6388:1;6378:9;:12::i;:::-;6372:18;;6339:62;6415:12;6423:3;6415:7;:12::i;:::-;6410:62;;6449:12;6459:1;6449:9;:12::i;:::-;6443:18;;6410:62;6502:95;7816:1:22;6555:3:18;6576;6582:14;6502:17;:95::i;:::-;6482:116;;6263:342;;;;:::o;14324:158:0:-;14390:6;14421:1;14412:5;:10;;;:24;;;;14435:1;14426:5;:10;;;14412:24;14408:41;;;14445:4;14438:11;;;;14408:41;14474:1;14466:5;:9;;;;:::i;:::-;14459:16;;14324:158;;;;:::o;146569:139:18:-;1226:42;146623:39;;;146678:6;146695:4;146623:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;146569:139;:::o;136440:146::-;1226:42;136507:39;;;136562:6;136571:7;136507:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;136440:146;;:::o;125538:95::-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1736:106::-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;2190:110::-;2240:4;2255:42;2294:1;2255:23;:42::i;:::-;2248:49;;2190:110;;;:::o;1956:343:20:-;2058:7;745:42:21;2084:44:20;;;2142:10;2166:17;2197:55;2227:7;2236:6;2244:7;2197:29;:55::i;:::-;2280:1;2266:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2077:215;;1956:343;;;;;;:::o;2614:319::-;2715:7;745:42:21;2741:44:20;;;2799:10;2823;2847:39;2877:3;2882;2847:29;:39::i;:::-;2914:1;2900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2734:192;;2614:319;;;;;;:::o;743:372::-;834:7;745:42:21;860:44:20;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;:45::i;:::-;1007:29;:91::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;10121:338:18:-;10178:5;10200:12;10208:3;10200:7;:12::i;:::-;10195:62;;10234:12;10244:1;10234:9;:12::i;:::-;10228:18;;10195:62;10271:12;10279:3;10271:7;:12::i;:::-;10266:62;;10305:12;10315:1;10305:9;:12::i;:::-;10299:18;;10266:62;10356:95;7816:1:22;10409:3:18;10430;10436:14;10356:17;:95::i;:::-;10338:114;;10121:338;;;;:::o;125941:277::-;126008:5;126025:12;126040:1;126025:16;;126055:5;126051:44;;;126083:1;126076:8;;126051:44;126104:10;126117:63;126143:4;8001:1:22;126167:12:18;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1020:99:19:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::o;1745:284::-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;1440:240::-;1524:16;1552:23;1592:1;1578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:42;;1616:6;1604;1611:1;1604:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1644:6;1632;1639:1;1632:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1667:6;1660:13;;;1440:240;;;;:::o;629:208::-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:50:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:101::-;3375:7;3415:18;3408:5;3404:30;3393:41;;3339:101;;;:::o;3446:120::-;3518:23;3535:5;3518:23;:::i;:::-;3511:5;3508:34;3498:62;;3556:1;3553;3546:12;3498:62;3446:120;:::o;3572:137::-;3617:5;3655:6;3642:20;3633:29;;3671:32;3697:5;3671:32;:::i;:::-;3572:137;;;;:::o;3715:472::-;3782:6;3790;3839:2;3827:9;3818:7;3814:23;3810:32;3807:119;;;3845:79;;:::i;:::-;3807:119;3965:1;3990:53;4035:7;4026:6;4015:9;4011:22;3990:53;:::i;:::-;3980:63;;3936:117;4092:2;4118:52;4162:7;4153:6;4142:9;4138:22;4118:52;:::i;:::-;4108:62;;4063:117;3715:472;;;;;:::o;4193:118::-;4280:24;4298:5;4280:24;:::i;:::-;4275:3;4268:37;4193:118;;:::o;4317:222::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4461:71;4529:1;4518:9;4514:17;4505:6;4461:71;:::i;:::-;4317:222;;;;:::o;4545:619::-;4622:6;4630;4638;4687:2;4675:9;4666:7;4662:23;4658:32;4655:119;;;4693:79;;:::i;:::-;4655:119;4813:1;4838:53;4883:7;4874:6;4863:9;4859:22;4838:53;:::i;:::-;4828:63;;4784:117;4940:2;4966:53;5011:7;5002:6;4991:9;4987:22;4966:53;:::i;:::-;4956:63;;4911:118;5068:2;5094:53;5139:7;5130:6;5119:9;5115:22;5094:53;:::i;:::-;5084:63;;5039:118;4545:619;;;;;:::o;5170:86::-;5205:7;5245:4;5238:5;5234:16;5223:27;;5170:86;;;:::o;5262:112::-;5345:22;5361:5;5345:22;:::i;:::-;5340:3;5333:35;5262:112;;:::o;5380:214::-;5469:4;5507:2;5496:9;5492:18;5484:26;;5520:67;5584:1;5573:9;5569:17;5560:6;5520:67;:::i;:::-;5380:214;;;;:::o;5600:329::-;5659:6;5708:2;5696:9;5687:7;5683:23;5679:32;5676:119;;;5714:79;;:::i;:::-;5676:119;5834:1;5859:53;5904:7;5895:6;5884:9;5880:22;5859:53;:::i;:::-;5849:63;;5805:117;5600:329;;;;:::o;5935:60::-;5963:3;5984:5;5977:12;;5935:60;;;:::o;6001:142::-;6051:9;6084:53;6102:34;6111:24;6129:5;6111:24;:::i;:::-;6102:34;:::i;:::-;6084:53;:::i;:::-;6071:66;;6001:142;;;:::o;6149:159::-;6264:37;6295:5;6264:37;:::i;:::-;6259:3;6252:50;6149:159;;:::o;6314:278::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:99;6582:1;6571:9;6567:17;6558:6;6486:99;:::i;:::-;6314:278;;;;:::o;6598:89::-;6634:7;6674:6;6667:5;6663:18;6652:29;;6598:89;;;:::o;6693:120::-;6765:23;6782:5;6765:23;:::i;:::-;6758:5;6755:34;6745:62;;6803:1;6800;6793:12;6745:62;6693:120;:::o;6819:137::-;6864:5;6902:6;6889:20;6880:29;;6918:32;6944:5;6918:32;:::i;:::-;6819:137;;;;:::o;6962:327::-;7020:6;7069:2;7057:9;7048:7;7044:23;7040:32;7037:119;;;7075:79;;:::i;:::-;7037:119;7195:1;7220:52;7264:7;7255:6;7244:9;7240:22;7220:52;:::i;:::-;7210:62;;7166:116;6962:327;;;;:::o;7295:472::-;7362:6;7370;7419:2;7407:9;7398:7;7394:23;7390:32;7387:119;;;7425:79;;:::i;:::-;7387:119;7545:1;7570:53;7615:7;7606:6;7595:9;7591:22;7570:53;:::i;:::-;7560:63;;7516:117;7672:2;7698:52;7742:7;7733:6;7722:9;7718:22;7698:52;:::i;:::-;7688:62;;7643:117;7295:472;;;;;:::o;7773:117::-;7882:1;7879;7872:12;7896:180;7944:77;7941:1;7934:88;8041:4;8038:1;8031:15;8065:4;8062:1;8055:15;8082:281;8165:27;8187:4;8165:27;:::i;:::-;8157:6;8153:40;8295:6;8283:10;8280:22;8259:18;8247:10;8244:34;8241:62;8238:88;;;8306:18;;:::i;:::-;8238:88;8346:10;8342:2;8335:22;8125:238;8082:281;;:::o;8369:129::-;8403:6;8430:20;;:::i;:::-;8420:30;;8459:33;8487:4;8479:6;8459:33;:::i;:::-;8369:129;;;:::o;8504:117::-;8613:1;8610;8603:12;8627:118;8698:22;8714:5;8698:22;:::i;:::-;8691:5;8688:33;8678:61;;8735:1;8732;8725:12;8678:61;8627:118;:::o;8751:135::-;8795:5;8833:6;8820:20;8811:29;;8849:31;8874:5;8849:31;:::i;:::-;8751:135;;;;:::o;8892:117::-;9001:1;8998;8991:12;9015:117;9124:1;9121;9114:12;9138:307;9199:4;9289:18;9281:6;9278:30;9275:56;;;9311:18;;:::i;:::-;9275:56;9349:29;9371:6;9349:29;:::i;:::-;9341:37;;9433:4;9427;9423:15;9415:23;;9138:307;;;:::o;9451:148::-;9549:6;9544:3;9539;9526:30;9590:1;9581:6;9576:3;9572:16;9565:27;9451:148;;;:::o;9605:423::-;9682:5;9707:65;9723:48;9764:6;9723:48;:::i;:::-;9707:65;:::i;:::-;9698:74;;9795:6;9788:5;9781:21;9833:4;9826:5;9822:16;9871:3;9862:6;9857:3;9853:16;9850:25;9847:112;;;9878:79;;:::i;:::-;9847:112;9968:54;10015:6;10010:3;10005;9968:54;:::i;:::-;9688:340;9605:423;;;;;:::o;10047:338::-;10102:5;10151:3;10144:4;10136:6;10132:17;10128:27;10118:122;;10159:79;;:::i;:::-;10118:122;10276:6;10263:20;10301:78;10375:3;10367:6;10360:4;10352:6;10348:17;10301:78;:::i;:::-;10292:87;;10108:277;10047:338;;;;:::o;10413:1078::-;10488:5;10532:4;10520:9;10515:3;10511:19;10507:30;10504:117;;;10540:79;;:::i;:::-;10504:117;10639:21;10655:4;10639:21;:::i;:::-;10630:30;;10721:1;10761:49;10806:3;10797:6;10786:9;10782:22;10761:49;:::i;:::-;10754:4;10747:5;10743:16;10736:75;10670:152;10889:2;10930:47;10973:3;10964:6;10953:9;10949:22;10930:47;:::i;:::-;10923:4;10916:5;10912:16;10905:73;10832:157;11049:2;11090:47;11133:3;11124:6;11113:9;11109:22;11090:47;:::i;:::-;11083:4;11076:5;11072:16;11065:73;10999:150;11241:2;11230:9;11226:18;11213:32;11272:18;11264:6;11261:30;11258:117;;;11294:79;;:::i;:::-;11258:117;11414:58;11468:3;11459:6;11448:9;11444:22;11414:58;:::i;:::-;11407:4;11400:5;11396:16;11389:84;11159:325;10413:1078;;;;:::o;11497:831::-;11600:6;11608;11616;11665:2;11653:9;11644:7;11640:23;11636:32;11633:119;;;11671:79;;:::i;:::-;11633:119;11791:1;11816:53;11861:7;11852:6;11841:9;11837:22;11816:53;:::i;:::-;11806:63;;11762:117;11918:2;11944:53;11989:7;11980:6;11969:9;11965:22;11944:53;:::i;:::-;11934:63;;11889:118;12074:2;12063:9;12059:18;12046:32;12105:18;12097:6;12094:30;12091:117;;;12127:79;;:::i;:::-;12091:117;12232:79;12303:7;12294:6;12283:9;12279:22;12232:79;:::i;:::-;12222:89;;12017:304;11497:831;;;;;:::o;12334:150::-;12435:24;12453:5;12435:24;:::i;:::-;12428:5;12425:35;12415:63;;12474:1;12471;12464:12;12415:63;12334:150;:::o;12490:195::-;12564:5;12602:6;12589:20;12580:29;;12618:61;12673:5;12618:61;:::i;:::-;12490:195;;;;:::o;12691:117::-;12800:1;12797;12790:12;12814:117;12923:1;12920;12913:12;12950:552;13007:8;13017:6;13067:3;13060:4;13052:6;13048:17;13044:27;13034:122;;13075:79;;:::i;:::-;13034:122;13188:6;13175:20;13165:30;;13218:18;13210:6;13207:30;13204:117;;;13240:79;;:::i;:::-;13204:117;13354:4;13346:6;13342:17;13330:29;;13408:3;13400:4;13392:6;13388:17;13378:8;13374:32;13371:41;13368:128;;;13415:79;;:::i;:::-;13368:128;12950:552;;;;;:::o;13508:1019::-;13633:6;13641;13649;13657;13665;13714:3;13702:9;13693:7;13689:23;13685:33;13682:120;;;13721:79;;:::i;:::-;13682:120;13841:1;13866:53;13911:7;13902:6;13891:9;13887:22;13866:53;:::i;:::-;13856:63;;13812:117;13968:2;13994:53;14039:7;14030:6;14019:9;14015:22;13994:53;:::i;:::-;13984:63;;13939:118;14096:2;14122:81;14195:7;14186:6;14175:9;14171:22;14122:81;:::i;:::-;14112:91;;14067:146;14280:2;14269:9;14265:18;14252:32;14311:18;14303:6;14300:30;14297:117;;;14333:79;;:::i;:::-;14297:117;14446:64;14502:7;14493:6;14482:9;14478:22;14446:64;:::i;:::-;14428:82;;;;14223:297;13508:1019;;;;;;;;:::o;14533:686::-;14627:6;14635;14684:2;14672:9;14663:7;14659:23;14655:32;14652:119;;;14690:79;;:::i;:::-;14652:119;14810:1;14835:53;14880:7;14871:6;14860:9;14856:22;14835:53;:::i;:::-;14825:63;;14781:117;14965:2;14954:9;14950:18;14937:32;14996:18;14988:6;14985:30;14982:117;;;15018:79;;:::i;:::-;14982:117;15123:79;15194:7;15185:6;15174:9;15170:22;15123:79;:::i;:::-;15113:89;;14908:304;14533:686;;;;;:::o;15225:873::-;15341:6;15349;15357;15365;15414:2;15402:9;15393:7;15389:23;15385:32;15382:119;;;15420:79;;:::i;:::-;15382:119;15540:1;15565:53;15610:7;15601:6;15590:9;15586:22;15565:53;:::i;:::-;15555:63;;15511:117;15667:2;15693:81;15766:7;15757:6;15746:9;15742:22;15693:81;:::i;:::-;15683:91;;15638:146;15851:2;15840:9;15836:18;15823:32;15882:18;15874:6;15871:30;15868:117;;;15904:79;;:::i;:::-;15868:117;16017:64;16073:7;16064:6;16053:9;16049:22;16017:64;:::i;:::-;15999:82;;;;15794:297;15225:873;;;;;;;:::o;16104:474::-;16172:6;16180;16229:2;16217:9;16208:7;16204:23;16200:32;16197:119;;;16235:79;;:::i;:::-;16197:119;16355:1;16380:53;16425:7;16416:6;16405:9;16401:22;16380:53;:::i;:::-;16370:63;;16326:117;16482:2;16508:53;16553:7;16544:6;16533:9;16529:22;16508:53;:::i;:::-;16498:63;;16453:118;16104:474;;;;;:::o;16584:675::-;16689:6;16697;16705;16754:2;16742:9;16733:7;16729:23;16725:32;16722:119;;;16760:79;;:::i;:::-;16722:119;16880:1;16905:53;16950:7;16941:6;16930:9;16926:22;16905:53;:::i;:::-;16895:63;;16851:117;17007:2;17033:53;17078:7;17069:6;17058:9;17054:22;17033:53;:::i;:::-;17023:63;;16978:118;17135:2;17161:81;17234:7;17225:6;17214:9;17210:22;17161:81;:::i;:::-;17151:91;;17106:146;16584:675;;;;;:::o;17265:1029::-;17379:6;17387;17395;17403;17452:2;17440:9;17431:7;17427:23;17423:32;17420:119;;;17458:79;;:::i;:::-;17420:119;17578:1;17603:53;17648:7;17639:6;17628:9;17624:22;17603:53;:::i;:::-;17593:63;;17549:117;17733:2;17722:9;17718:18;17705:32;17764:18;17756:6;17753:30;17750:117;;;17786:79;;:::i;:::-;17750:117;17891:79;17962:7;17953:6;17942:9;17938:22;17891:79;:::i;:::-;17881:89;;17676:304;18047:2;18036:9;18032:18;18019:32;18078:18;18070:6;18067:30;18064:117;;;18100:79;;:::i;:::-;18064:117;18213:64;18269:7;18260:6;18249:9;18245:22;18213:64;:::i;:::-;18195:82;;;;17990:297;17265:1029;;;;;;;:::o;18300:97::-;18336:7;18376:14;18369:5;18365:26;18354:37;;18300:97;;;:::o;18403:120::-;18475:23;18492:5;18475:23;:::i;:::-;18468:5;18465:34;18455:62;;18513:1;18510;18503:12;18455:62;18403:120;:::o;18529:137::-;18574:5;18612:6;18599:20;18590:29;;18628:32;18654:5;18628:32;:::i;:::-;18529:137;;;;:::o;18672:472::-;18739:6;18747;18796:2;18784:9;18775:7;18771:23;18767:32;18764:119;;;18802:79;;:::i;:::-;18764:119;18922:1;18947:53;18992:7;18983:6;18972:9;18968:22;18947:53;:::i;:::-;18937:63;;18893:117;19049:2;19075:52;19119:7;19110:6;19099:9;19095:22;19075:52;:::i;:::-;19065:62;;19020:117;18672:472;;;;;:::o;19150:1175::-;19273:6;19281;19289;19297;19305;19354:3;19342:9;19333:7;19329:23;19325:33;19322:120;;;19361:79;;:::i;:::-;19322:120;19481:1;19506:53;19551:7;19542:6;19531:9;19527:22;19506:53;:::i;:::-;19496:63;;19452:117;19608:2;19634:53;19679:7;19670:6;19659:9;19655:22;19634:53;:::i;:::-;19624:63;;19579:118;19764:2;19753:9;19749:18;19736:32;19795:18;19787:6;19784:30;19781:117;;;19817:79;;:::i;:::-;19781:117;19922:79;19993:7;19984:6;19973:9;19969:22;19922:79;:::i;:::-;19912:89;;19707:304;20078:2;20067:9;20063:18;20050:32;20109:18;20101:6;20098:30;20095:117;;;20131:79;;:::i;:::-;20095:117;20244:64;20300:7;20291:6;20280:9;20276:22;20244:64;:::i;:::-;20226:82;;;;20021:297;19150:1175;;;;;;;;:::o;20331:530::-;20427:6;20435;20484:2;20472:9;20463:7;20459:23;20455:32;20452:119;;;20490:79;;:::i;:::-;20452:119;20610:1;20635:53;20680:7;20671:6;20660:9;20656:22;20635:53;:::i;:::-;20625:63;;20581:117;20737:2;20763:81;20836:7;20827:6;20816:9;20812:22;20763:81;:::i;:::-;20753:91;;20708:146;20331:530;;;;;:::o;20867:180::-;20915:77;20912:1;20905:88;21012:4;21009:1;21002:15;21036:4;21033:1;21026:15;21053:320;21097:6;21134:1;21128:4;21124:12;21114:22;;21181:1;21175:4;21171:12;21202:18;21192:81;;21258:4;21250:6;21246:17;21236:27;;21192:81;21320:2;21312:6;21309:14;21289:18;21286:38;21283:84;;21339:18;;:::i;:::-;21283:84;21104:269;21053:320;;;:::o;21379:180::-;21427:77;21424:1;21417:88;21524:4;21521:1;21514:15;21548:4;21545:1;21538:15;21565:410;21605:7;21628:20;21646:1;21628:20;:::i;:::-;21623:25;;21662:20;21680:1;21662:20;:::i;:::-;21657:25;;21717:1;21714;21710:9;21739:30;21757:11;21739:30;:::i;:::-;21728:41;;21918:1;21909:7;21905:15;21902:1;21899:22;21879:1;21872:9;21852:83;21829:139;;21948:18;;:::i;:::-;21829:139;21613:362;21565:410;;;;:::o;21981:118::-;22068:24;22086:5;22068:24;:::i;:::-;22063:3;22056:37;21981:118;;:::o;22105:332::-;22226:4;22264:2;22253:9;22249:18;22241:26;;22277:71;22345:1;22334:9;22330:17;22321:6;22277:71;:::i;:::-;22358:72;22426:2;22415:9;22411:18;22402:6;22358:72;:::i;:::-;22105:332;;;;;:::o;22443:388::-;22592:4;22630:2;22619:9;22615:18;22607:26;;22643:99;22739:1;22728:9;22724:17;22715:6;22643:99;:::i;:::-;22752:72;22820:2;22809:9;22805:18;22796:6;22752:72;:::i;:::-;22443:388;;;;;:::o;22837:222::-;22930:4;22968:2;22957:9;22953:18;22945:26;;22981:71;23049:1;23038:9;23034:17;23025:6;22981:71;:::i;:::-;22837:222;;;;:::o;23065:316::-;23178:4;23216:2;23205:9;23201:18;23193:26;;23229:67;23293:1;23282:9;23278:17;23269:6;23229:67;:::i;:::-;23306:68;23370:2;23359:9;23355:18;23346:6;23306:68;:::i;:::-;23065:316;;;;;:::o;23387:332::-;23508:4;23546:2;23535:9;23531:18;23523:26;;23559:71;23627:1;23616:9;23612:17;23603:6;23559:71;:::i;:::-;23640:72;23708:2;23697:9;23693:18;23684:6;23640:72;:::i;:::-;23387:332;;;;;:::o;23725:116::-;23795:21;23810:5;23795:21;:::i;:::-;23788:5;23785:32;23775:60;;23831:1;23828;23821:12;23775:60;23725:116;:::o;23847:137::-;23901:5;23932:6;23926:13;23917:22;;23948:30;23972:5;23948:30;:::i;:::-;23847:137;;;;:::o;23990:345::-;24057:6;24106:2;24094:9;24085:7;24081:23;24077:32;24074:119;;;24112:79;;:::i;:::-;24074:119;24232:1;24257:61;24310:7;24301:6;24290:9;24286:22;24257:61;:::i;:::-;24247:71;;24203:125;23990:345;;;;:::o;24341:115::-;24426:23;24443:5;24426:23;:::i;:::-;24421:3;24414:36;24341:115;;:::o;24462:218::-;24553:4;24591:2;24580:9;24576:18;24568:26;;24604:69;24670:1;24659:9;24655:17;24646:6;24604:69;:::i;:::-;24462:218;;;;:::o;24686:108::-;24763:24;24781:5;24763:24;:::i;:::-;24758:3;24751:37;24686:108;;:::o;24800:102::-;24873:22;24889:5;24873:22;:::i;:::-;24868:3;24861:35;24800:102;;:::o;24908:98::-;24959:6;24993:5;24987:12;24977:22;;24908:98;;;:::o;25012:158::-;25085:11;25119:6;25114:3;25107:19;25159:4;25154:3;25150:14;25135:29;;25012:158;;;;:::o;25176:353::-;25252:3;25280:38;25312:5;25280:38;:::i;:::-;25334:60;25387:6;25382:3;25334:60;:::i;:::-;25327:67;;25403:65;25461:6;25456:3;25449:4;25442:5;25438:16;25403:65;:::i;:::-;25493:29;25515:6;25493:29;:::i;:::-;25488:3;25484:39;25477:46;;25256:273;25176:353;;;;:::o;25589:976::-;25724:3;25760:4;25755:3;25751:14;25849:4;25842:5;25838:16;25832:23;25868:63;25925:4;25920:3;25916:14;25902:12;25868:63;:::i;:::-;25775:166;26031:4;26024:5;26020:16;26014:23;26050:59;26103:4;26098:3;26094:14;26080:12;26050:59;:::i;:::-;25951:168;26202:4;26195:5;26191:16;26185:23;26221:59;26274:4;26269:3;26265:14;26251:12;26221:59;:::i;:::-;26129:161;26377:4;26370:5;26366:16;26360:23;26430:3;26424:4;26420:14;26413:4;26408:3;26404:14;26397:38;26456:71;26522:4;26508:12;26456:71;:::i;:::-;26448:79;;26300:238;26555:4;26548:11;;25729:836;25589:976;;;;:::o;26571:515::-;26758:4;26796:2;26785:9;26781:18;26773:26;;26845:9;26839:4;26835:20;26831:1;26820:9;26816:17;26809:47;26873:124;26992:4;26983:6;26873:124;:::i;:::-;26865:132;;27007:72;27075:2;27064:9;27060:18;27051:6;27007:72;:::i;:::-;26571:515;;;;;:::o;27092:143::-;27149:5;27180:6;27174:13;27165:22;;27196:33;27223:5;27196:33;:::i;:::-;27092:143;;;;:::o;27241:351::-;27311:6;27360:2;27348:9;27339:7;27335:23;27331:32;27328:119;;;27366:79;;:::i;:::-;27328:119;27486:1;27511:64;27567:7;27558:6;27547:9;27543:22;27511:64;:::i;:::-;27501:74;;27457:128;27241:351;;;;:::o;27598:168::-;27681:11;27715:6;27710:3;27703:19;27755:4;27750:3;27746:14;27731:29;;27598:168;;;;:::o;27794:314::-;27890:3;27911:70;27974:6;27969:3;27911:70;:::i;:::-;27904:77;;27991:56;28040:6;28035:3;28028:5;27991:56;:::i;:::-;28072:29;28094:6;28072:29;:::i;:::-;28067:3;28063:39;28056:46;;27794:314;;;;;:::o;28114:716::-;28347:4;28385:3;28374:9;28370:19;28362:27;;28399:71;28467:1;28456:9;28452:17;28443:6;28399:71;:::i;:::-;28480:72;28548:2;28537:9;28533:18;28524:6;28480:72;:::i;:::-;28562:100;28658:2;28647:9;28643:18;28634:6;28562:100;:::i;:::-;28709:9;28703:4;28699:20;28694:2;28683:9;28679:18;28672:48;28737:86;28818:4;28809:6;28801;28737:86;:::i;:::-;28729:94;;28114:716;;;;;;;;:::o;28836:148::-;28935:24;28953:5;28935:24;:::i;:::-;28928:5;28925:35;28915:63;;28974:1;28971;28964:12;28915:63;28836:148;:::o;28990:195::-;29073:5;29104:6;29098:13;29089:22;;29120:59;29173:5;29120:59;:::i;:::-;28990:195;;;;:::o;29191:403::-;29287:6;29336:2;29324:9;29315:7;29311:23;29307:32;29304:119;;;29342:79;;:::i;:::-;29304:119;29462:1;29487:90;29569:7;29560:6;29549:9;29545:22;29487:90;:::i;:::-;29477:100;;29433:154;29191:403;;;;:::o;29600:193::-;29639:3;29658:19;29675:1;29658:19;:::i;:::-;29653:24;;29691:19;29708:1;29691:19;:::i;:::-;29686:24;;29733:1;29730;29726:9;29719:16;;29756:6;29751:3;29748:15;29745:41;;;29766:18;;:::i;:::-;29745:41;29600:193;;;;:::o;29799:196::-;29838:4;29858:19;29875:1;29858:19;:::i;:::-;29853:24;;29891:19;29908:1;29891:19;:::i;:::-;29886:24;;29934:1;29931;29927:9;29919:17;;29958:6;29952:4;29949:16;29946:42;;;29968:18;;:::i;:::-;29946:42;29799:196;;;;:::o;30001:180::-;30049:77;30046:1;30039:88;30146:4;30143:1;30136:15;30170:4;30167:1;30160:15;30187:122;30276:2;30269:5;30266:13;30256:47;;30283:18;;:::i;:::-;30256:47;30187:122;:::o;30315:143::-;30368:7;30397:5;30386:16;;30403:49;30446:5;30403:49;:::i;:::-;30315:143;;;:::o;30464:::-;30528:9;30561:40;30595:5;30561:40;:::i;:::-;30548:53;;30464:143;;;:::o;30613:159::-;30714:51;30759:5;30714:51;:::i;:::-;30709:3;30702:64;30613:159;;:::o;30778:114::-;30845:6;30879:5;30873:12;30863:22;;30778:114;;;:::o;30898:184::-;30997:11;31031:6;31026:3;31019:19;31071:4;31066:3;31062:14;31047:29;;30898:184;;;;:::o;31088:132::-;31155:4;31178:3;31170:11;;31208:4;31203:3;31199:14;31191:22;;31088:132;;;:::o;31226:179::-;31295:10;31316:46;31358:3;31350:6;31316:46;:::i;:::-;31394:4;31389:3;31385:14;31371:28;;31226:179;;;;:::o;31411:113::-;31481:4;31513;31508:3;31504:14;31496:22;;31411:113;;;:::o;31560:732::-;31679:3;31708:54;31756:5;31708:54;:::i;:::-;31778:86;31857:6;31852:3;31778:86;:::i;:::-;31771:93;;31888:56;31938:5;31888:56;:::i;:::-;31967:7;31998:1;31983:284;32008:6;32005:1;32002:13;31983:284;;;32084:6;32078:13;32111:63;32170:3;32155:13;32111:63;:::i;:::-;32104:70;;32197:60;32250:6;32197:60;:::i;:::-;32187:70;;32043:224;32030:1;32027;32023:9;32018:14;;31983:284;;;31987:14;32283:3;32276:10;;31684:608;;;31560:732;;;;:::o;32298:875::-;32585:4;32623:3;32612:9;32608:19;32600:27;;32637:67;32701:1;32690:9;32686:17;32677:6;32637:67;:::i;:::-;32714:86;32796:2;32785:9;32781:18;32772:6;32714:86;:::i;:::-;32847:9;32841:4;32837:20;32832:2;32821:9;32817:18;32810:48;32875:108;32978:4;32969:6;32875:108;:::i;:::-;32867:116;;33030:9;33024:4;33020:20;33015:2;33004:9;33000:18;32993:48;33058:108;33161:4;33152:6;33058:108;:::i;:::-;33050:116;;32298:875;;;;;;;:::o;33179:180::-;33227:77;33224:1;33217:88;33324:4;33321:1;33314:15;33348:4;33345:1;33338:15;33365:90;33400:7;33443:5;33440:1;33429:20;33418:31;;33365:90;;;:::o;33461:112::-;33544:22;33560:5;33544:22;:::i;:::-;33539:3;33532:35;33461:112;;:::o;33579:214::-;33668:4;33706:2;33695:9;33691:18;33683:26;;33719:67;33783:1;33772:9;33768:17;33759:6;33719:67;:::i;:::-;33579:214;;;;:::o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfIsIndicator()":"a415f269","burn(address,uint64)":"13691c76","confidentialBalanceOf(address)":"344ff101","confidentialTotalSupply()":"54095227","confidentialTransfer(address,(uint256,uint8,uint8,bytes))":"a794ee95","confidentialTransfer(address,uint256)":"fe3f670d","confidentialTransferAndCall(address,(uint256,uint8,uint8,bytes),bytes)":"d174999a","confidentialTransferAndCall(address,uint256,bytes)":"a9fe9959","confidentialTransferFrom(address,address,(uint256,uint8,uint8,bytes))":"7edb0e7d","confidentialTransferFrom(address,address,uint256)":"ca49d7cd","confidentialTransferFromAndCall(address,address,(uint256,uint8,uint8,bytes),bytes)":"fca114d6","confidentialTransferFromAndCall(address,address,uint256,bytes)":"9645edd4","decimals()":"313ce567","indicatorTick()":"490690f3","isFherc20()":"365ac002","isOperator(address,address)":"b6363cf2","mint(address,uint64)":"2893c5b0","name()":"06fdde03","resetIndicatedBalance()":"b4b20190","setOperator(address,uint48)":"d4febb96","setTotalIndicatedSupply(uint16)":"34e3e2ba","setUserIndicatedBalance(address,uint16)":"39ce5fdf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitOwner\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromOwnerMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitSpender\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromSpenderMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inValueHash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permitValueHash\",\"type\":\"uint256\"}],\"name\":\"FHERC20ConfidentialTransferFromValueHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FHERC20IncompatibleFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"FHERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedUseOfEncryptedAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value_hash\",\"type\":\"uint256\"}],\"name\":\"ConfidentialTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balanceOfIsIndicator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"confidentialBalanceOf\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confidentialTotalSupply\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indicatorTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFherc20\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetIndicatedBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"value\",\"type\":\"uint16\"}],\"name\":\"setTotalIndicatedSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"value\",\"type\":\"uint16\"}],\"name\":\"setUserIndicatedBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FHERC20ConfidentialTransferFromOwnerMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"permitOwner\":\"token owner included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20ConfidentialTransferFromSpenderMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `to` and `permit.spender` don't match\",\"params\":{\"permitSpender\":\"token receiver included in FHERC20_EIP712_Permit struct.\",\"to\":\"ConfidentialTransferFrom param.\"}}],\"FHERC20ConfidentialTransferFromValueHashMismatch(uint256,uint256)\":[{\"details\":\"ConfidentialTransferFrom `value` greater than `permit.value_hash` dont match (permit doesn't match Euint64)\",\"params\":{\"inValueHash\":\"ConfidentialTransferFrom param inValue.ctHash.\",\"permitValueHash\":\"token amount hash included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20IncompatibleFunction()\":[{\"details\":\"Indicates an incompatible function being called. Prevents unintentional treatment of an FHERC20 as a cleartext ERC20\"}],\"FHERC20InvalidReceiver(address)\":[{\"details\":\"The given receiver `receiver` is invalid for transfers.\"}],\"FHERC20UnauthorizedSpender(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"spender\":\"operator authorized to spent tokens from.\"}}],\"FHERC20UnauthorizedUseOfEncryptedAmount(uint256,address)\":[{\"details\":\"The caller `owner` does not have access to the encrypted value `value`.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ConfidentialTransfer(address,address,uint256)\":{\"details\":\"Emitted when `value_hash` encrypted tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"OperatorSet(address,address,uint48)\":{\"details\":\"Emitted when the expiration timestamp for an operator `operator` is updated for a given `holder`. The operator may move any amount of tokens on behalf of the holder until the timestamp `until`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"balanceOf(address)\":{\"details\":\"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token.\"},\"balanceOfIsIndicator()\":{\"details\":\"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001.\"},\"confidentialBalanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)\"},\"confidentialTotalSupply()\":{\"details\":\"Returns the encrypted total supply.\"},\"confidentialTransfer(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality.\"},\"confidentialTransfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"indicatorTick()\":{\"details\":\"Returns the true size of the indicator tick\"},\"isFherc20()\":{\"details\":\"Returns true if the token is a FHERC20.\"},\"isOperator(address,address)\":{\"details\":\"Returns true if `spender` is currently an operator for `holder`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"setOperator(address,uint48)\":{\"details\":\"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. Returns the indicated total supply.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/FHERC20_Harness.sol\":\"FHERC20_Harness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHERC20.sol\":{\"keccak256\":\"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5\",\"dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv\"]},\"contracts/interfaces/IFHERC20.sol\":{\"keccak256\":\"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d\",\"dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4\"]},\"contracts/interfaces/IFHERC20Errors.sol\":{\"keccak256\":\"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371\",\"dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW\"]},\"contracts/interfaces/IFHERC20Receiver.sol\":{\"keccak256\":\"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb\",\"dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS\"]},\"contracts/test/FHERC20_Harness.sol\":{\"keccak256\":\"0xa4734ec8bcfa2006006ed8ff87ae926b12be942b8bce502e6186f9bfd7125b41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ce3a07932fde7a728da25f4f6928cca0849c0b8f2223ab16e0abd5c1bb871f\",\"dweb:/ipfs/QmQjELWB29GPzH8Z6wsdSxjBf7Ur5ehsycuMkfDpsYPdgv\"]},\"contracts/utils/FHERC20Utils.sol\":{\"keccak256\":\"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5\",\"dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7\"]},\"node_modules/@luxfi/contracts/fhe/FHE.sol\":{\"keccak256\":\"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9\",\"dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn\"]},\"node_modules/@luxfi/contracts/fhe/FHECommon.sol\":{\"keccak256\":\"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37\",\"dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY\"]},\"node_modules/@luxfi/contracts/fhe/FHENetwork.sol\":{\"keccak256\":\"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f\",\"dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF\"]},\"node_modules/@luxfi/contracts/fhe/FHETypes.sol\":{\"keccak256\":\"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264\",\"dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn\"]},\"node_modules/@luxfi/contracts/fhe/IFHE.sol\":{\"keccak256\":\"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc\",\"dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"permitOwner","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"permitSpender","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch"},{"inputs":[{"internalType":"uint256","name":"inValueHash","type":"uint256"},{"internalType":"uint256","name":"permitValueHash","type":"uint256"}],"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch"},{"inputs":[],"type":"error","name":"FHERC20IncompatibleFunction"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"FHERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"FHERC20UnauthorizedSpender"},{"inputs":[{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value_hash","type":"uint256","indexed":false}],"type":"event","name":"ConfidentialTransfer","anonymous":false},{"inputs":[{"internalType":"address","name":"holder","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint48","name":"until","type":"uint48","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"balanceOfIsIndicator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"value","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"confidentialBalanceOf","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"confidentialTotalSupply","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indicatorTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isFherc20","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"value","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetIndicatedBalance"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"until","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"uint16","name":"value","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTotalIndicatedSupply"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint16","name":"value","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setUserIndicatedBalance"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"approve(address,uint256)":{"details":"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"balanceOf(address)":{"details":"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token."},"balanceOfIsIndicator()":{"details":"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001."},"confidentialBalanceOf(address)":{"details":"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)"},"confidentialTotalSupply()":{"details":"Returns the encrypted total supply."},"confidentialTransfer(address,(uint256,uint8,uint8,bytes))":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality."},"confidentialTransfer(address,uint256)":{"details":"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"indicatorTick()":{"details":"Returns the true size of the indicator tick"},"isFherc20()":{"details":"Returns true if the token is a FHERC20."},"isOperator(address,address)":{"details":"Returns true if `spender` is currently an operator for `holder`."},"name()":{"details":"Returns the name of the token."},"setOperator(address,uint48)":{"details":"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}. Returns the indicated total supply."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/test/FHERC20_Harness.sol":"FHERC20_Harness"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHERC20.sol":{"keccak256":"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349","urls":["bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5","dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv"],"license":"MIT"},"contracts/interfaces/IFHERC20.sol":{"keccak256":"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6","urls":["bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d","dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4"],"license":"MIT"},"contracts/interfaces/IFHERC20Errors.sol":{"keccak256":"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef","urls":["bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371","dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW"],"license":"MIT"},"contracts/interfaces/IFHERC20Receiver.sol":{"keccak256":"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741","urls":["bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb","dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS"],"license":"MIT"},"contracts/test/FHERC20_Harness.sol":{"keccak256":"0xa4734ec8bcfa2006006ed8ff87ae926b12be942b8bce502e6186f9bfd7125b41","urls":["bzz-raw://12ce3a07932fde7a728da25f4f6928cca0849c0b8f2223ab16e0abd5c1bb871f","dweb:/ipfs/QmQjELWB29GPzH8Z6wsdSxjBf7Ur5ehsycuMkfDpsYPdgv"],"license":"MIT"},"contracts/utils/FHERC20Utils.sol":{"keccak256":"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947","urls":["bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5","dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHE.sol":{"keccak256":"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424","urls":["bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9","dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHECommon.sol":{"keccak256":"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01","urls":["bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37","dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHENetwork.sol":{"keccak256":"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337","urls":["bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f","dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHETypes.sol":{"keccak256":"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445","urls":["bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264","dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/IFHE.sol":{"keccak256":"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4","urls":["bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc","dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994","urls":["bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c","dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":11} |