mirror of
https://github.com/luxfhe/example-erc20-tutorial.git
synced 2026-10-30 18:13:26 +00:00
1 line
103 KiB
JSON
1 line
103 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getBalanceEncrypted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"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":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"encryptedAmount","type":"bytes32","internalType":"einput"},{"name":"inputProof","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"amount","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"amount","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"EncryptedTransfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"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":"event","name":"Unwrapped","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Wrapped","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b50604051612da6380380612da683398181016040528101906100319190610487565b81818160039081610042919061070d565b508060049081610052919061070d565b50505061008d3361006761009460201b60201c565b60ff16600a6100769190610938565b60646100829190610982565b61009c60201b60201c565b5050610aab565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361010c575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101039190610a02565b60405180910390fd5b61011d5f838361012160201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610171578060025f8282546101659190610a1b565b9250508190555061023f565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156101fa578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016101f193929190610a5d565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610286578060025f82825403925050819055506102d0565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161032d9190610a92565b60405180910390a3505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61039982610353565b810181811067ffffffffffffffff821117156103b8576103b7610363565b5b80604052505050565b5f6103ca61033a565b90506103d68282610390565b919050565b5f67ffffffffffffffff8211156103f5576103f4610363565b5b6103fe82610353565b9050602081019050919050565b8281835e5f83830152505050565b5f61042b610426846103db565b6103c1565b9050828152602081018484840111156104475761044661034f565b5b61045284828561040b565b509392505050565b5f82601f83011261046e5761046d61034b565b5b815161047e848260208601610419565b91505092915050565b5f5f6040838503121561049d5761049c610343565b5b5f83015167ffffffffffffffff8111156104ba576104b9610347565b5b6104c68582860161045a565b925050602083015167ffffffffffffffff8111156104e7576104e6610347565b5b6104f38582860161045a565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061054b57607f821691505b60208210810361055e5761055d610507565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610585565b6105ca8683610585565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61060e610609610604846105e2565b6105eb565b6105e2565b9050919050565b5f819050919050565b610627836105f4565b61063b61063382610615565b848454610591565b825550505050565b5f5f905090565b610652610643565b61065d81848461061e565b505050565b5b81811015610680576106755f8261064a565b600181019050610663565b5050565b601f8211156106c55761069681610564565b61069f84610576565b810160208510156106ae578190505b6106c26106ba85610576565b830182610662565b50505b505050565b5f82821c905092915050565b5f6106e55f19846008026106ca565b1980831691505092915050565b5f6106fd83836106d6565b9150826002028217905092915050565b610716826104fd565b67ffffffffffffffff81111561072f5761072e610363565b5b6107398254610534565b610744828285610684565b5f60209050601f831160018114610775575f8415610763578287015190505b61076d85826106f2565b8655506107d4565b601f19841661078386610564565b5f5b828110156107aa57848901518255600182019150602085019450602081019050610785565b868310156107c757848901516107c3601f8916826106d6565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561085e5780860481111561083a576108396107dc565b5b60018516156108495780820291505b808102905061085785610809565b945061081e565b94509492505050565b5f826108765760019050610931565b81610883575f9050610931565b816001811461089957600281146108a3576108d2565b6001915050610931565b60ff8411156108b5576108b46107dc565b5b8360020a9150848211156108cc576108cb6107dc565b5b50610931565b5060208310610133831016604e8410600b84101617156109075782820a905083811115610902576109016107dc565b5b610931565b6109148484846001610815565b9250905081840481111561092b5761092a6107dc565b5b81810290505b9392505050565b5f610942826105e2565b915061094d836105e2565b925061097a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610867565b905092915050565b5f61098c826105e2565b9150610997836105e2565b92508282026109a5816105e2565b915082820484148315176109bc576109bb6107dc565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109ec826109c3565b9050919050565b6109fc816109e2565b82525050565b5f602082019050610a155f8301846109f3565b92915050565b5f610a25826105e2565b9150610a30836105e2565b9250828201905080821115610a4857610a476107dc565b5b92915050565b610a57816105e2565b82525050565b5f606082019050610a705f8301866109f3565b610a7d6020830185610a4e565b610a8a6040830184610a4e565b949350505050565b5f602082019050610aa55f830184610a4e565b92915050565b6122ee80610ab85f395ff3fe608060405234801561000f575f5ffd5b50600436106100cd575f3560e01c806343085e3b1161008a57806395d89b411161006457806395d89b4114610223578063a9059cbb14610241578063dc412e8314610271578063dd62ed3e1461028d576100cd565b806343085e3b146101a757806352a7c9bf146101d757806370a08231146101f3576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d5780633c5295c91461018b575b5f5ffd5b6100d96102bd565b6040516100e69190611975565b60405180910390f35b61010960048036038101906101049190611a2a565b61034d565b6040516101169190611a82565b60405180910390f35b61012761036f565b6040516101349190611aaa565b60405180910390f35b61015760048036038101906101529190611ac3565b610378565b6040516101649190611a82565b60405180910390f35b6101756103a6565b6040516101829190611b2e565b60405180910390f35b6101a560048036038101906101a09190611bdb565b6103ae565b005b6101c160048036038101906101bc9190611c4c565b610648565b6040516101ce9190611cb0565b60405180910390f35b6101f160048036038101906101ec9190611d06565b61068e565b005b61020d60048036038101906102089190611c4c565b6107e7565b60405161021a9190611aaa565b60405180910390f35b61022b61082c565b6040516102389190611975565b60405180910390f35b61025b60048036038101906102569190611a2a565b6108bc565b6040516102689190611a82565b60405180910390f35b61028b60048036038101906102869190611d06565b6108de565b005b6102a760048036038101906102a29190611d31565b610a74565b6040516102b49190611aaa565b60405180910390f35b6060600380546102cc90611d9c565b80601f01602080910402602001604051908101604052809291908181526020018280546102f890611d9c565b80156103435780601f1061031a57610100808354040283529160200191610343565b820191905f5260205f20905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b5f5f610357610af6565b9050610364818585610afd565b600191505092915050565b5f600254905090565b5f5f610382610af6565b905061038f858285610b0f565b61039a858585610ba2565b60019150509392505050565b5f6012905090565b5f6103fc8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610c92565b90505f6104468260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ca9565b90506104d68161049360055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610cbc565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105a58161056260055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610d67565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8fb556326f22f916c68b89ac61b2b94546e36d300cdf1f2398ecaada4b25740060405160405180910390a3505050505050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8067ffffffffffffffff166106a2336107e7565b10156106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da90611e16565b60405180910390fd5b6106f7338267ffffffffffffffff16610db0565b5f61070b8267ffffffffffffffff16610e2f565b905061075460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610d67565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff167fc034105ce796613e479785fbc221af62cd274c62adf689864f32ff00f249f863836040516107db9190611e43565b60405180910390a25050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461083b90611d9c565b80601f016020809104026020016040519081016040528092919081815260200182805461086790611d9c565b80156108b25780601f10610889576101008083540402835291602001916108b2565b820191905f5260205f20905b81548152906001019060200180831161089557829003601f168201915b5050505050905090565b5f5f6108c6610af6565b90506108d3818585610ba2565b600191505092915050565b5f6108f28267ffffffffffffffff16610e2f565b90505f61093c8260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ca9565b90506109cc8161098960055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610cbc565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610a21338467ffffffffffffffff16610e41565b3373ffffffffffffffffffffffffffffffffffffffff167f52ef895d8686af42a4345fa3ae33da09ef82bce44a6c147c9bf3f8c182906ac784604051610a679190611e43565b60405180910390a2505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610b0a8383836001610ec0565b505050565b5f610b1a8484610a74565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610b9c5781811015610b8d578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b8493929190611e6b565b60405180910390fd5b610b9b84848484035f610ec0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c12575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c099190611ea0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c82575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c799190611ea0565b60405180910390fd5b610c8d83838361108f565b505050565b5f610ca1835f1c8360056112a8565b905092915050565b5f610cb483836113b1565b905092915050565b5f610cc6836113fa565b610cd657610cd35f610e2f565b92505b610cdf826113fa565b610cef57610cec5f610e2f565b91505b610cfd60058484600761140b565b905092915050565b5f610d0f846114fa565b610d1f57610d1c5f61150b565b93505b610d28836113fa565b610d3857610d355f610e2f565b92505b610d41826113fa565b610d5157610d4e5f610e2f565b91505b610d5e600585858561151d565b90509392505050565b5f610d71836113fa565b610d8157610d7e5f610e2f565b92505b610d8a826113fa565b610d9a57610d975f610e2f565b91505b610da860058484600861140b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e20575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e179190611ea0565b60405180910390fd5b610e2b825f8361108f565b5050565b5f610e3a825f61160e565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eb1575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ea89190611ea0565b60405180910390fd5b610ebc5f838361108f565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f30575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f279190611ea0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa0575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f979190611ea0565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611089578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110809190611aaa565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110df578060025f8282546110d39190611ee6565b925050819055506111ad565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611168578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161115f93929190611e6b565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f4578060025f828254039250508190555061123e565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161129b9190611aaa565b60405180910390a3505050565b5f6022835110156112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590611f63565b60405180910390fd5b5f60405180608001604052808681526020015f60ff1681526020018460ff16815260200185815250905073020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76282336040518363ffffffff1660e01b8152600401611367929190612051565b6020604051808303815f875af1158015611383573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a79190612093565b9150509392505050565b5f6113bb836113fa565b6113cb576113c85f610e2f565b92505b6113d4826113fa565b6113e4576113e15f610e2f565b91505b6113f260058484601361140b565b905092915050565b5f61140482611628565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86846114488888611634565b5f67ffffffffffffffff811115611462576114616120be565b5b6040519080825280602002602001820160405280156114905781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016114b09493929190612206565b6020604051808303815f875af11580156114cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f09190612093565b9050949350505050565b5f61150482611628565b9050919050565b5f611516825f6116ce565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86600461155c8888886116f7565b5f67ffffffffffffffff811115611576576115756120be565b5b6040519080825280602002602001820160405280156115a45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016115c49493929190612206565b6020604051808303815f875af11580156115e0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116049190612093565b9050949350505050565b5f5f61161c846005856117b3565b90508091505092915050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115611652576116516120be565b5b6040519080825280602002602001820160405280156116805781602001602082028036833780820191505090505b50905083815f8151811061169757611696612257565b5b60200260200101818152505082816001815181106116b8576116b7612257565b5b6020026020010181815250508091505092915050565b5f5f5f905083156116de57600190505b5f6116ea825f866117b3565b9050809250505092915050565b60605f600367ffffffffffffffff811115611715576117146120be565b5b6040519080825280602002602001820160405280156117435781602001602082028036833780820191505090505b50905084815f8151811061175a57611759612257565b5b602002602001018181525050838160018151811061177b5761177a612257565b5b602002602001018181525050828160028151811061179c5761179b612257565b5b602002602001018181525050809150509392505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115611801576118006120be565b5b60405190808252806020026020018201604052801561182f5781602001602082028036833780820191505090505b50611846898960ff166118418a6118ae565b6116f7565b6040518563ffffffff1660e01b81526004016118659493929190612206565b6020604051808303815f875af1158015611881573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a59190612093565b90509392505050565b5f5f8260030b12156118f757816040517f8f568bf80000000000000000000000000000000000000000000000000000000081526004016118ee919061229f565b60405180910390fd5b8163ffffffff169050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61194782611905565b611951818561190f565b935061196181856020860161191f565b61196a8161192d565b840191505092915050565b5f6020820190508181035f83015261198d818461193d565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119c68261199d565b9050919050565b6119d6816119bc565b81146119e0575f5ffd5b50565b5f813590506119f1816119cd565b92915050565b5f819050919050565b611a09816119f7565b8114611a13575f5ffd5b50565b5f81359050611a2481611a00565b92915050565b5f5f60408385031215611a4057611a3f611995565b5b5f611a4d858286016119e3565b9250506020611a5e85828601611a16565b9150509250929050565b5f8115159050919050565b611a7c81611a68565b82525050565b5f602082019050611a955f830184611a73565b92915050565b611aa4816119f7565b82525050565b5f602082019050611abd5f830184611a9b565b92915050565b5f5f5f60608486031215611ada57611ad9611995565b5b5f611ae7868287016119e3565b9350506020611af8868287016119e3565b9250506040611b0986828701611a16565b9150509250925092565b5f60ff82169050919050565b611b2881611b13565b82525050565b5f602082019050611b415f830184611b1f565b92915050565b5f819050919050565b611b5981611b47565b8114611b63575f5ffd5b50565b5f81359050611b7481611b50565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112611b9b57611b9a611b7a565b5b8235905067ffffffffffffffff811115611bb857611bb7611b7e565b5b602083019150836001820283011115611bd457611bd3611b82565b5b9250929050565b5f5f5f5f60608587031215611bf357611bf2611995565b5b5f611c00878288016119e3565b9450506020611c1187828801611b66565b935050604085013567ffffffffffffffff811115611c3257611c31611999565b5b611c3e87828801611b86565b925092505092959194509250565b5f60208284031215611c6157611c60611995565b5b5f611c6e848285016119e3565b91505092915050565b5f819050919050565b5f611c9a611c95611c90846119f7565b611c77565b6119f7565b9050919050565b611caa81611c80565b82525050565b5f602082019050611cc35f830184611ca1565b92915050565b5f67ffffffffffffffff82169050919050565b611ce581611cc9565b8114611cef575f5ffd5b50565b5f81359050611d0081611cdc565b92915050565b5f60208284031215611d1b57611d1a611995565b5b5f611d2884828501611cf2565b91505092915050565b5f5f60408385031215611d4757611d46611995565b5b5f611d54858286016119e3565b9250506020611d65858286016119e3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611db357607f821691505b602082108103611dc657611dc5611d6f565b5b50919050565b7f496e73756666696369656e74207075626c69632062616c616e636500000000005f82015250565b5f611e00601b8361190f565b9150611e0b82611dcc565b602082019050919050565b5f6020820190508181035f830152611e2d81611df4565b9050919050565b611e3d81611cc9565b82525050565b5f602082019050611e565f830184611e34565b92915050565b611e65816119bc565b82525050565b5f606082019050611e7e5f830186611e5c565b611e8b6020830185611a9b565b611e986040830184611a9b565b949350505050565b5f602082019050611eb35f830184611e5c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ef0826119f7565b9150611efb836119f7565b9250828201905080821115611f1357611f12611eb9565b5b92915050565b7f496e76616c69642070726f6f66206c656e6774680000000000000000000000005f82015250565b5f611f4d60148361190f565b9150611f5882611f19565b602082019050919050565b5f6020820190508181035f830152611f7a81611f41565b9050919050565b611f8a816119f7565b82525050565b611f9981611b13565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f611fc382611f9f565b611fcd8185611fa9565b9350611fdd81856020860161191f565b611fe68161192d565b840191505092915050565b5f608083015f8301516120065f860182611f81565b5060208301516120196020860182611f90565b50604083015161202c6040860182611f90565b50606083015184820360608601526120448282611fb9565b9150508091505092915050565b5f6040820190508181035f8301526120698185611ff1565b90506120786020830184611e5c565b9392505050565b5f8151905061208d81611a00565b92915050565b5f602082840312156120a8576120a7611995565b5b5f6120b58482850161207f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208110612129576121286120eb565b5b50565b5f81905061213982612118565b919050565b5f6121488261212c565b9050919050565b6121588161213e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6121928383611f81565b60208301905092915050565b5f602082019050919050565b5f6121b48261215e565b6121be8185612168565b93506121c983612178565b805f5b838110156121f95781516121e08882612187565b97506121eb8361219e565b9250506001810190506121cc565b5085935050505092915050565b5f6080820190506122195f830187611b1f565b612226602083018661214f565b818103604083015261223881856121aa565b9050818103606083015261224c81846121aa565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61229981612284565b82525050565b5f6020820190506122b25f830184612290565b9291505056fea264697066735822122010170a0789522249d9e6f7c813d0beb5811e7ab08095f433e1a359f0ffcbd4fa64736f6c634300081b0033","sourceMap":"357:3782:0:-:0;;;907:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;967:4;973:6;1656:5:7;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;991:47:0::1;997:10;1026;:8;;;:10;;:::i;:::-;1021:16;;1015:2;:22;;;;:::i;:::-;1009:3;:28;;;;:::i;:::-;991:5;;;:47;;:::i;:::-;907:138:::0;;357:3782;;2688:82:7;2737:5;2761:2;2754:9;;2688:82;:::o;7362:208::-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;;;:35;;:::i;:::-;7362:208;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;7:75:11:-;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:853::-;2669:6;2677;2726:2;2714:9;2705:7;2701:23;2697:32;2694:119;;;2732:79;;:::i;:::-;2694:119;2873:1;2862:9;2858:17;2852:24;2903:18;2895:6;2892:30;2889:117;;;2925:79;;:::i;:::-;2889:117;3030:74;3096:7;3087:6;3076:9;3072:22;3030:74;:::i;:::-;3020:84;;2823:291;3174:2;3163:9;3159:18;3153:25;3205:18;3197:6;3194:30;3191:117;;;3227:79;;:::i;:::-;3191:117;3332:74;3398:7;3389:6;3378:9;3374:22;3332:74;:::i;:::-;3322:84;;3124:292;2570:853;;;;;:::o;3429:99::-;3481:6;3515:5;3509:12;3499:22;;3429:99;;;:::o;3534:180::-;3582:77;3579:1;3572:88;3679:4;3676:1;3669:15;3703:4;3700:1;3693:15;3720:320;3764:6;3801:1;3795:4;3791:12;3781:22;;3848:1;3842:4;3838:12;3869:18;3859:81;;3925:4;3917:6;3913:17;3903:27;;3859:81;3987:2;3979:6;3976:14;3956:18;3953:38;3950:84;;4006:18;;:::i;:::-;3950:84;3771:269;3720:320;;;:::o;4046:141::-;4095:4;4118:3;4110:11;;4141:3;4138:1;4131:14;4175:4;4172:1;4162:18;4154:26;;4046:141;;;:::o;4193:93::-;4230:6;4277:2;4272;4265:5;4261:14;4257:23;4247:33;;4193:93;;;:::o;4292:107::-;4336:8;4386:5;4380:4;4376:16;4355:37;;4292:107;;;;:::o;4405:393::-;4474:6;4524:1;4512:10;4508:18;4547:97;4577:66;4566:9;4547:97;:::i;:::-;4665:39;4695:8;4684:9;4665:39;:::i;:::-;4653:51;;4737:4;4733:9;4726:5;4722:21;4713:30;;4786:4;4776:8;4772:19;4765:5;4762:30;4752:40;;4481:317;;4405:393;;;;;:::o;4804:77::-;4841:7;4870:5;4859:16;;4804:77;;;:::o;4887:60::-;4915:3;4936:5;4929:12;;4887:60;;;:::o;4953:142::-;5003:9;5036:53;5054:34;5063:24;5081:5;5063:24;:::i;:::-;5054:34;:::i;:::-;5036:53;:::i;:::-;5023:66;;4953:142;;;:::o;5101:75::-;5144:3;5165:5;5158:12;;5101:75;;;:::o;5182:269::-;5292:39;5323:7;5292:39;:::i;:::-;5353:91;5402:41;5426:16;5402:41;:::i;:::-;5394:6;5387:4;5381:11;5353:91;:::i;:::-;5347:4;5340:105;5258:193;5182:269;;;:::o;5457:73::-;5502:3;5523:1;5516:8;;5457:73;:::o;5536:189::-;5613:32;;:::i;:::-;5654:65;5712:6;5704;5698:4;5654:65;:::i;:::-;5589:136;5536:189;;:::o;5731:186::-;5791:120;5808:3;5801:5;5798:14;5791:120;;;5862:39;5899:1;5892:5;5862:39;:::i;:::-;5835:1;5828:5;5824:13;5815:22;;5791:120;;;5731:186;;:::o;5923:543::-;6024:2;6019:3;6016:11;6013:446;;;6058:38;6090:5;6058:38;:::i;:::-;6142:29;6160:10;6142:29;:::i;:::-;6132:8;6128:44;6325:2;6313:10;6310:18;6307:49;;;6346:8;6331:23;;6307:49;6369:80;6425:22;6443:3;6425:22;:::i;:::-;6415:8;6411:37;6398:11;6369:80;:::i;:::-;6028:431;;6013:446;5923:543;;;:::o;6472:117::-;6526:8;6576:5;6570:4;6566:16;6545:37;;6472:117;;;;:::o;6595:169::-;6639:6;6672:51;6720:1;6716:6;6708:5;6705:1;6701:13;6672:51;:::i;:::-;6668:56;6753:4;6747;6743:15;6733:25;;6646:118;6595:169;;;;:::o;6769:295::-;6845:4;6991:29;7016:3;7010:4;6991:29;:::i;:::-;6983:37;;7053:3;7050:1;7046:11;7040:4;7037:21;7029:29;;6769:295;;;;:::o;7069:1395::-;7186:37;7219:3;7186:37;:::i;:::-;7288:18;7280:6;7277:30;7274:56;;;7310:18;;:::i;:::-;7274:56;7354:38;7386:4;7380:11;7354:38;:::i;:::-;7439:67;7499:6;7491;7485:4;7439:67;:::i;:::-;7533:1;7557:4;7544:17;;7589:2;7581:6;7578:14;7606:1;7601:618;;;;8263:1;8280:6;8277:77;;;8329:9;8324:3;8320:19;8314:26;8305:35;;8277:77;8380:67;8440:6;8433:5;8380:67;:::i;:::-;8374:4;8367:81;8236:222;7571:887;;7601:618;7653:4;7649:9;7641:6;7637:22;7687:37;7719:4;7687:37;:::i;:::-;7746:1;7760:208;7774:7;7771:1;7768:14;7760:208;;;7853:9;7848:3;7844:19;7838:26;7830:6;7823:42;7904:1;7896:6;7892:14;7882:24;;7951:2;7940:9;7936:18;7923:31;;7797:4;7794:1;7790:12;7785:17;;7760:208;;;7996:6;7987:7;7984:19;7981:179;;;8054:9;8049:3;8045:19;8039:26;8097:48;8139:4;8131:6;8127:17;8116:9;8097:48;:::i;:::-;8089:6;8082:64;8004:156;7981:179;8206:1;8202;8194:6;8190:14;8186:22;8180:4;8173:36;7608:611;;;7571:887;;7161:1303;;;7069:1395;;:::o;8470:180::-;8518:77;8515:1;8508:88;8615:4;8612:1;8605:15;8639:4;8636:1;8629:15;8656:102;8698:8;8745:5;8742:1;8738:13;8717:34;;8656:102;;;:::o;8764:848::-;8825:5;8832:4;8856:6;8847:15;;8880:5;8871:14;;8894:712;8915:1;8905:8;8902:15;8894:712;;;9010:4;9005:3;9001:14;8995:4;8992:24;8989:50;;;9019:18;;:::i;:::-;8989:50;9069:1;9059:8;9055:16;9052:451;;;9484:4;9477:5;9473:16;9464:25;;9052:451;9534:4;9528;9524:15;9516:23;;9564:32;9587:8;9564:32;:::i;:::-;9552:44;;8894:712;;;8764:848;;;;;;;:::o;9618:1073::-;9672:5;9863:8;9853:40;;9884:1;9875:10;;9886:5;;9853:40;9912:4;9902:36;;9929:1;9920:10;;9931:5;;9902:36;9998:4;10046:1;10041:27;;;;10082:1;10077:191;;;;9991:277;;10041:27;10059:1;10050:10;;10061:5;;;10077:191;10122:3;10112:8;10109:17;10106:43;;;10129:18;;:::i;:::-;10106:43;10178:8;10175:1;10171:16;10162:25;;10213:3;10206:5;10203:14;10200:40;;;10220:18;;:::i;:::-;10200:40;10253:5;;;9991:277;;10377:2;10367:8;10364:16;10358:3;10352:4;10349:13;10345:36;10327:2;10317:8;10314:16;10309:2;10303:4;10300:12;10296:35;10280:111;10277:246;;;10433:8;10427:4;10423:19;10414:28;;10468:3;10461:5;10458:14;10455:40;;;10475:18;;:::i;:::-;10455:40;10508:5;;10277:246;10548:42;10586:3;10576:8;10570:4;10567:1;10548:42;:::i;:::-;10533:57;;;;10622:4;10617:3;10613:14;10606:5;10603:25;10600:51;;;10631:18;;:::i;:::-;10600:51;10680:4;10673:5;10669:16;10660:25;;9618:1073;;;;;;:::o;10697:285::-;10757:5;10781:23;10799:4;10781:23;:::i;:::-;10773:31;;10825:27;10843:8;10825:27;:::i;:::-;10813:39;;10871:104;10908:66;10898:8;10892:4;10871:104;:::i;:::-;10862:113;;10697:285;;;;:::o;10988:410::-;11028:7;11051:20;11069:1;11051:20;:::i;:::-;11046:25;;11085:20;11103:1;11085:20;:::i;:::-;11080:25;;11140:1;11137;11133:9;11162:30;11180:11;11162:30;:::i;:::-;11151:41;;11341:1;11332:7;11328:15;11325:1;11322:22;11302:1;11295:9;11275:83;11252:139;;11371:18;;:::i;:::-;11252:139;11036:362;10988:410;;;;:::o;11404:126::-;11441:7;11481:42;11474:5;11470:54;11459:65;;11404:126;;;:::o;11536:96::-;11573:7;11602:24;11620:5;11602:24;:::i;:::-;11591:35;;11536:96;;;:::o;11638:118::-;11725:24;11743:5;11725:24;:::i;:::-;11720:3;11713:37;11638:118;;:::o;11762:222::-;11855:4;11893:2;11882:9;11878:18;11870:26;;11906:71;11974:1;11963:9;11959:17;11950:6;11906:71;:::i;:::-;11762:222;;;;:::o;11990:191::-;12030:3;12049:20;12067:1;12049:20;:::i;:::-;12044:25;;12083:20;12101:1;12083:20;:::i;:::-;12078:25;;12126:1;12123;12119:9;12112:16;;12147:3;12144:1;12141:10;12138:36;;;12154:18;;:::i;:::-;12138:36;11990:191;;;;:::o;12187:118::-;12274:24;12292:5;12274:24;:::i;:::-;12269:3;12262:37;12187:118;;:::o;12311:442::-;12460:4;12498:2;12487:9;12483:18;12475:26;;12511:71;12579:1;12568:9;12564:17;12555:6;12511:71;:::i;:::-;12592:72;12660:2;12649:9;12645:18;12636:6;12592:72;:::i;:::-;12674;12742:2;12731:9;12727:18;12718:6;12674:72;:::i;:::-;12311:442;;;;;;:::o;12759:222::-;12852:4;12890:2;12879:9;12875:18;12867:26;;12903:71;12971:1;12960:9;12956:17;12947:6;12903:71;:::i;:::-;12759:222;;;;:::o;357:3782:0:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100cd575f3560e01c806343085e3b1161008a57806395d89b411161006457806395d89b4114610223578063a9059cbb14610241578063dc412e8314610271578063dd62ed3e1461028d576100cd565b806343085e3b146101a757806352a7c9bf146101d757806370a08231146101f3576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d5780633c5295c91461018b575b5f5ffd5b6100d96102bd565b6040516100e69190611975565b60405180910390f35b61010960048036038101906101049190611a2a565b61034d565b6040516101169190611a82565b60405180910390f35b61012761036f565b6040516101349190611aaa565b60405180910390f35b61015760048036038101906101529190611ac3565b610378565b6040516101649190611a82565b60405180910390f35b6101756103a6565b6040516101829190611b2e565b60405180910390f35b6101a560048036038101906101a09190611bdb565b6103ae565b005b6101c160048036038101906101bc9190611c4c565b610648565b6040516101ce9190611cb0565b60405180910390f35b6101f160048036038101906101ec9190611d06565b61068e565b005b61020d60048036038101906102089190611c4c565b6107e7565b60405161021a9190611aaa565b60405180910390f35b61022b61082c565b6040516102389190611975565b60405180910390f35b61025b60048036038101906102569190611a2a565b6108bc565b6040516102689190611a82565b60405180910390f35b61028b60048036038101906102869190611d06565b6108de565b005b6102a760048036038101906102a29190611d31565b610a74565b6040516102b49190611aaa565b60405180910390f35b6060600380546102cc90611d9c565b80601f01602080910402602001604051908101604052809291908181526020018280546102f890611d9c565b80156103435780601f1061031a57610100808354040283529160200191610343565b820191905f5260205f20905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b5f5f610357610af6565b9050610364818585610afd565b600191505092915050565b5f600254905090565b5f5f610382610af6565b905061038f858285610b0f565b61039a858585610ba2565b60019150509392505050565b5f6012905090565b5f6103fc8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610c92565b90505f6104468260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ca9565b90506104d68161049360055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610cbc565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105a58161056260055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610d67565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8fb556326f22f916c68b89ac61b2b94546e36d300cdf1f2398ecaada4b25740060405160405180910390a3505050505050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8067ffffffffffffffff166106a2336107e7565b10156106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da90611e16565b60405180910390fd5b6106f7338267ffffffffffffffff16610db0565b5f61070b8267ffffffffffffffff16610e2f565b905061075460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610d67565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff167fc034105ce796613e479785fbc221af62cd274c62adf689864f32ff00f249f863836040516107db9190611e43565b60405180910390a25050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461083b90611d9c565b80601f016020809104026020016040519081016040528092919081815260200182805461086790611d9c565b80156108b25780601f10610889576101008083540402835291602001916108b2565b820191905f5260205f20905b81548152906001019060200180831161089557829003601f168201915b5050505050905090565b5f5f6108c6610af6565b90506108d3818585610ba2565b600191505092915050565b5f6108f28267ffffffffffffffff16610e2f565b90505f61093c8260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ca9565b90506109cc8161098960055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485610cbc565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d05565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610a21338467ffffffffffffffff16610e41565b3373ffffffffffffffffffffffffffffffffffffffff167f52ef895d8686af42a4345fa3ae33da09ef82bce44a6c147c9bf3f8c182906ac784604051610a679190611e43565b60405180910390a2505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610b0a8383836001610ec0565b505050565b5f610b1a8484610a74565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610b9c5781811015610b8d578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b8493929190611e6b565b60405180910390fd5b610b9b84848484035f610ec0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c12575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c099190611ea0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c82575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c799190611ea0565b60405180910390fd5b610c8d83838361108f565b505050565b5f610ca1835f1c8360056112a8565b905092915050565b5f610cb483836113b1565b905092915050565b5f610cc6836113fa565b610cd657610cd35f610e2f565b92505b610cdf826113fa565b610cef57610cec5f610e2f565b91505b610cfd60058484600761140b565b905092915050565b5f610d0f846114fa565b610d1f57610d1c5f61150b565b93505b610d28836113fa565b610d3857610d355f610e2f565b92505b610d41826113fa565b610d5157610d4e5f610e2f565b91505b610d5e600585858561151d565b90509392505050565b5f610d71836113fa565b610d8157610d7e5f610e2f565b92505b610d8a826113fa565b610d9a57610d975f610e2f565b91505b610da860058484600861140b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e20575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e179190611ea0565b60405180910390fd5b610e2b825f8361108f565b5050565b5f610e3a825f61160e565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eb1575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ea89190611ea0565b60405180910390fd5b610ebc5f838361108f565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f30575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f279190611ea0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa0575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f979190611ea0565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611089578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110809190611aaa565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110df578060025f8282546110d39190611ee6565b925050819055506111ad565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611168578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161115f93929190611e6b565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f4578060025f828254039250508190555061123e565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161129b9190611aaa565b60405180910390a3505050565b5f6022835110156112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590611f63565b60405180910390fd5b5f60405180608001604052808681526020015f60ff1681526020018460ff16815260200185815250905073020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76282336040518363ffffffff1660e01b8152600401611367929190612051565b6020604051808303815f875af1158015611383573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a79190612093565b9150509392505050565b5f6113bb836113fa565b6113cb576113c85f610e2f565b92505b6113d4826113fa565b6113e4576113e15f610e2f565b91505b6113f260058484601361140b565b905092915050565b5f61140482611628565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86846114488888611634565b5f67ffffffffffffffff811115611462576114616120be565b5b6040519080825280602002602001820160405280156114905781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016114b09493929190612206565b6020604051808303815f875af11580156114cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f09190612093565b9050949350505050565b5f61150482611628565b9050919050565b5f611516825f6116ce565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86600461155c8888886116f7565b5f67ffffffffffffffff811115611576576115756120be565b5b6040519080825280602002602001820160405280156115a45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016115c49493929190612206565b6020604051808303815f875af11580156115e0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116049190612093565b9050949350505050565b5f5f61161c846005856117b3565b90508091505092915050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115611652576116516120be565b5b6040519080825280602002602001820160405280156116805781602001602082028036833780820191505090505b50905083815f8151811061169757611696612257565b5b60200260200101818152505082816001815181106116b8576116b7612257565b5b6020026020010181815250508091505092915050565b5f5f5f905083156116de57600190505b5f6116ea825f866117b3565b9050809250505092915050565b60605f600367ffffffffffffffff811115611715576117146120be565b5b6040519080825280602002602001820160405280156117435781602001602082028036833780820191505090505b50905084815f8151811061175a57611759612257565b5b602002602001018181525050838160018151811061177b5761177a612257565b5b602002602001018181525050828160028151811061179c5761179b612257565b5b602002602001018181525050809150509392505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115611801576118006120be565b5b60405190808252806020026020018201604052801561182f5781602001602082028036833780820191505090505b50611846898960ff166118418a6118ae565b6116f7565b6040518563ffffffff1660e01b81526004016118659493929190612206565b6020604051808303815f875af1158015611881573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a59190612093565b90509392505050565b5f5f8260030b12156118f757816040517f8f568bf80000000000000000000000000000000000000000000000000000000081526004016118ee919061229f565b60405180910390fd5b8163ffffffff169050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61194782611905565b611951818561190f565b935061196181856020860161191f565b61196a8161192d565b840191505092915050565b5f6020820190508181035f83015261198d818461193d565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119c68261199d565b9050919050565b6119d6816119bc565b81146119e0575f5ffd5b50565b5f813590506119f1816119cd565b92915050565b5f819050919050565b611a09816119f7565b8114611a13575f5ffd5b50565b5f81359050611a2481611a00565b92915050565b5f5f60408385031215611a4057611a3f611995565b5b5f611a4d858286016119e3565b9250506020611a5e85828601611a16565b9150509250929050565b5f8115159050919050565b611a7c81611a68565b82525050565b5f602082019050611a955f830184611a73565b92915050565b611aa4816119f7565b82525050565b5f602082019050611abd5f830184611a9b565b92915050565b5f5f5f60608486031215611ada57611ad9611995565b5b5f611ae7868287016119e3565b9350506020611af8868287016119e3565b9250506040611b0986828701611a16565b9150509250925092565b5f60ff82169050919050565b611b2881611b13565b82525050565b5f602082019050611b415f830184611b1f565b92915050565b5f819050919050565b611b5981611b47565b8114611b63575f5ffd5b50565b5f81359050611b7481611b50565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112611b9b57611b9a611b7a565b5b8235905067ffffffffffffffff811115611bb857611bb7611b7e565b5b602083019150836001820283011115611bd457611bd3611b82565b5b9250929050565b5f5f5f5f60608587031215611bf357611bf2611995565b5b5f611c00878288016119e3565b9450506020611c1187828801611b66565b935050604085013567ffffffffffffffff811115611c3257611c31611999565b5b611c3e87828801611b86565b925092505092959194509250565b5f60208284031215611c6157611c60611995565b5b5f611c6e848285016119e3565b91505092915050565b5f819050919050565b5f611c9a611c95611c90846119f7565b611c77565b6119f7565b9050919050565b611caa81611c80565b82525050565b5f602082019050611cc35f830184611ca1565b92915050565b5f67ffffffffffffffff82169050919050565b611ce581611cc9565b8114611cef575f5ffd5b50565b5f81359050611d0081611cdc565b92915050565b5f60208284031215611d1b57611d1a611995565b5b5f611d2884828501611cf2565b91505092915050565b5f5f60408385031215611d4757611d46611995565b5b5f611d54858286016119e3565b9250506020611d65858286016119e3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611db357607f821691505b602082108103611dc657611dc5611d6f565b5b50919050565b7f496e73756666696369656e74207075626c69632062616c616e636500000000005f82015250565b5f611e00601b8361190f565b9150611e0b82611dcc565b602082019050919050565b5f6020820190508181035f830152611e2d81611df4565b9050919050565b611e3d81611cc9565b82525050565b5f602082019050611e565f830184611e34565b92915050565b611e65816119bc565b82525050565b5f606082019050611e7e5f830186611e5c565b611e8b6020830185611a9b565b611e986040830184611a9b565b949350505050565b5f602082019050611eb35f830184611e5c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ef0826119f7565b9150611efb836119f7565b9250828201905080821115611f1357611f12611eb9565b5b92915050565b7f496e76616c69642070726f6f66206c656e6774680000000000000000000000005f82015250565b5f611f4d60148361190f565b9150611f5882611f19565b602082019050919050565b5f6020820190508181035f830152611f7a81611f41565b9050919050565b611f8a816119f7565b82525050565b611f9981611b13565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f611fc382611f9f565b611fcd8185611fa9565b9350611fdd81856020860161191f565b611fe68161192d565b840191505092915050565b5f608083015f8301516120065f860182611f81565b5060208301516120196020860182611f90565b50604083015161202c6040860182611f90565b50606083015184820360608601526120448282611fb9565b9150508091505092915050565b5f6040820190508181035f8301526120698185611ff1565b90506120786020830184611e5c565b9392505050565b5f8151905061208d81611a00565b92915050565b5f602082840312156120a8576120a7611995565b5b5f6120b58482850161207f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208110612129576121286120eb565b5b50565b5f81905061213982612118565b919050565b5f6121488261212c565b9050919050565b6121588161213e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6121928383611f81565b60208301905092915050565b5f602082019050919050565b5f6121b48261215e565b6121be8185612168565b93506121c983612178565b805f5b838110156121f95781516121e08882612187565b97506121eb8361219e565b9250506001810190506121cc565b5085935050505092915050565b5f6080820190506122195f830187611b1f565b612226602083018661214f565b818103604083015261223881856121aa565b9050818103606083015261224c81846121aa565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61229981612284565b82525050565b5f6020820190506122b25f830184612290565b9291505056fea264697066735822122010170a0789522249d9e6f7c813d0beb5811e7ab08095f433e1a359f0ffcbd4fa64736f6c634300081b0033","sourceMap":"357:3782:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3054:773:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4016:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1179:582;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2933:116:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2038:751:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3455:140:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;3054:773:0:-;3191:14;3208:42;3222:15;3239:10;;3208:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:42::i;:::-;3191:59;;3317:15;3335:40;3342:6;3350:12;:24;3363:10;3350:24;;;;;;;;;;;;;;;;3335:6;:40::i;:::-;3317:58;;3485:136;3509:9;3532:41;3540:12;:24;3553:10;3540:24;;;;;;;;;;;;;;;;3566:6;3532:7;:41::i;:::-;3587:12;:24;3600:10;3587:24;;;;;;;;;;;;;;;;3485:10;:136::i;:::-;3458:12;:24;3471:10;3458:24;;;;;;;;;;;;;;;:163;;;;3651:120;3675:9;3698:33;3706:12;:16;3719:2;3706:16;;;;;;;;;;;;;;;;3724:6;3698:7;:33::i;:::-;3745:12;:16;3758:2;3745:16;;;;;;;;;;;;;;;;3651:10;:120::i;:::-;3632:12;:16;3645:2;3632:16;;;;;;;;;;;;;;;:139;;;;3817:2;3787:33;;3805:10;3787:33;;;;;;;;;;;;3181:646;;3054:773;;;;:::o;4016:121::-;4083:7;4109:12;:21;4122:7;4109:21;;;;;;;;;;;;;;;;4102:28;;4016:121;;;:::o;1179:582::-;1328:6;1303:31;;:21;1313:10;1303:9;:21::i;:::-;:31;;1295:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1408:25;1414:10;1426:6;1408:25;;:5;:25::i;:::-;1517:22;1542:21;1556:6;1542:21;;:13;:21::i;:::-;1517:46;;1662:49;1670:12;:24;1683:10;1670:24;;;;;;;;;;;;;;;;1696:14;1662:7;:49::i;:::-;1635:12;:24;1648:10;1635:24;;;;;;;;;;;;;;;:76;;;;1735:10;1727:27;;;1747:6;1727:27;;;;;;:::i;:::-;;;;;;;;1215:546;1179:582;:::o;2933:116:7:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;1962:93::-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;2038:751:0:-;2149:17;2169:21;2183:6;2169:21;;:13;:21::i;:::-;2149:41;;2254:15;2272:43;2279:9;2290:12;:24;2303:10;2290:24;;;;;;;;;;;;;;;;2272:6;:43::i;:::-;2254:61;;2430:139;2454:9;2477:44;2485:12;:24;2498:10;2485:24;;;;;;;;;;;;;;;;2511:9;2477:7;:44::i;:::-;2535:12;:24;2548:10;2535:24;;;;;;;;;;;;;;;;2430:10;:139::i;:::-;2403:12;:24;2416:10;2403:24;;;;;;;;;;;;;;;:166;;;;2712:25;2718:10;2730:6;2712:25;;:5;:25::i;:::-;2763:10;2753:29;;;2775:6;2753:29;;;;;;:::i;:::-;;;;;;;;2076:713;;2038:751;:::o;3455:140:7:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;656:96:10:-;709:7;735:10;728:17;;656:96;:::o;8630:128:7:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;133046:226:1:-;133131:7;133170:94;133215:14;133193:38;;133233:10;7816:1:5;133170:22:1;:94::i;:::-;133150:115;;133046:226;;;;:::o;10528:100::-;10584:5;10608:13;10612:3;10617;10608;:13::i;:::-;10601:20;;10528:100;;;;:::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:5;13958:3:1;13979;13985:14;13905:17;:95::i;:::-;13885:116;;13666:342;;;;:::o;99550:468::-;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:5;99954:6:1;99978;100002;99903:17;:107::i;:::-;99883:128;;99550:468;;;;;:::o;6263:342::-;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:5;6555:3:1;6576;6582:14;6502:17;:95::i;:::-;6482:116;;6263:342;;;;:::o;7888:206:7:-;7977:1;7958:21;;:7;:21;;;7954:89;;8029:1;8002:30;;;;;;;;;;;:::i;:::-;;;;;;;;7954:89;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;128636:104:1:-;128688:7;128714:19;128724:5;128731:1;128714:9;:19::i;:::-;128707:26;;128636:104;;;:::o;7362:208:7:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;9605:432::-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;5471:425:3:-;5559:7;5602:2;5586:5;:12;:18;;5578:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;5639:27;5669:139;;;;;;;;5706:6;5669:139;;;;5740:1;5669:139;;;;;;5762:5;5669:139;;;;;;5792:5;5669:139;;;5639:169;;745:42:4;5825:45:3;;;5871:5;5878:10;5825:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5818:71;;;5471:425;;;;;:::o;10121:338:1:-;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:5;10409:3:1;10430;10436:14;10356:17;:95::i;:::-;10338:114;;10121:338;;;;:::o;2190:110::-;2240:4;2255:42;2294:1;2255:23;:42::i;:::-;2248:49;;2190:110;;;:::o;2614:319:3:-;2715:7;745:42:4;2741:44:3;;;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;1736:106:1:-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;125538:95::-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1956:343:3:-;2058:7;745:42:4;2084:44:3;;;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;128967:210:1:-;129039:7;129058:10;129071:66;129097:5;7816:1:5;129124:12:1;129071:25;:66::i;:::-;129058:79;;129167:2;129147:23;;;128967:210;;;;:::o;1020:99:2:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::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;125941:277:1:-;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:5;126167:12:1;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1745:284:2:-;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;743:372:3:-;834:7;745:42:4;860:44:3;;;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;629:208:2:-;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;7:99:11:-;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;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:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:77::-;4783:7;4812:5;4801:16;;4746:77;;;:::o;4829:148::-;4928:24;4946:5;4928:24;:::i;:::-;4921:5;4918:35;4908:63;;4967:1;4964;4957:12;4908:63;4829:148;:::o;4983:191::-;5055:5;5093:6;5080:20;5071:29;;5109:59;5162:5;5109:59;:::i;:::-;4983:191;;;;:::o;5180:117::-;5289:1;5286;5279:12;5303:117;5412:1;5409;5402:12;5426:117;5535:1;5532;5525:12;5562:552;5619:8;5629:6;5679:3;5672:4;5664:6;5660:17;5656:27;5646:122;;5687:79;;:::i;:::-;5646:122;5800:6;5787:20;5777:30;;5830:18;5822:6;5819:30;5816:117;;;5852:79;;:::i;:::-;5816:117;5966:4;5958:6;5954:17;5942:29;;6020:3;6012:4;6004:6;6000:17;5990:8;5986:32;5983:41;5980:128;;;6027:79;;:::i;:::-;5980:128;5562:552;;;;;:::o;6120:869::-;6234:6;6242;6250;6258;6307:2;6295:9;6286:7;6282:23;6278:32;6275:119;;;6313:79;;:::i;:::-;6275:119;6433:1;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6404:117;6560:2;6586:79;6657:7;6648:6;6637:9;6633:22;6586:79;:::i;:::-;6576:89;;6531:144;6742:2;6731:9;6727:18;6714:32;6773:18;6765:6;6762:30;6759:117;;;6795:79;;:::i;:::-;6759:117;6908:64;6964:7;6955:6;6944:9;6940:22;6908:64;:::i;:::-;6890:82;;;;6685:297;6120:869;;;;;;;:::o;6995:329::-;7054:6;7103:2;7091:9;7082:7;7078:23;7074:32;7071:119;;;7109:79;;:::i;:::-;7071:119;7229:1;7254:53;7299:7;7290:6;7279:9;7275:22;7254:53;:::i;:::-;7244:63;;7200:117;6995:329;;;;:::o;7330:60::-;7358:3;7379:5;7372:12;;7330:60;;;:::o;7396:142::-;7446:9;7479:53;7497:34;7506:24;7524:5;7506:24;:::i;:::-;7497:34;:::i;:::-;7479:53;:::i;:::-;7466:66;;7396:142;;;:::o;7544:158::-;7658:37;7689:5;7658:37;:::i;:::-;7653:3;7646:50;7544:158;;:::o;7708:276::-;7828:4;7866:2;7855:9;7851:18;7843:26;;7879:98;7974:1;7963:9;7959:17;7950:6;7879:98;:::i;:::-;7708:276;;;;:::o;7990:101::-;8026:7;8066:18;8059:5;8055:30;8044:41;;7990:101;;;:::o;8097:120::-;8169:23;8186:5;8169:23;:::i;:::-;8162:5;8159:34;8149:62;;8207:1;8204;8197:12;8149:62;8097:120;:::o;8223:137::-;8268:5;8306:6;8293:20;8284:29;;8322:32;8348:5;8322:32;:::i;:::-;8223:137;;;;:::o;8366:327::-;8424:6;8473:2;8461:9;8452:7;8448:23;8444:32;8441:119;;;8479:79;;:::i;:::-;8441:119;8599:1;8624:52;8668:7;8659:6;8648:9;8644:22;8624:52;:::i;:::-;8614:62;;8570:116;8366:327;;;;:::o;8699:474::-;8767:6;8775;8824:2;8812:9;8803:7;8799:23;8795:32;8792:119;;;8830:79;;:::i;:::-;8792:119;8950:1;8975:53;9020:7;9011:6;9000:9;8996:22;8975:53;:::i;:::-;8965:63;;8921:117;9077:2;9103:53;9148:7;9139:6;9128:9;9124:22;9103:53;:::i;:::-;9093:63;;9048:118;8699:474;;;;;:::o;9179:180::-;9227:77;9224:1;9217:88;9324:4;9321:1;9314:15;9348:4;9345:1;9338:15;9365:320;9409:6;9446:1;9440:4;9436:12;9426:22;;9493:1;9487:4;9483:12;9514:18;9504:81;;9570:4;9562:6;9558:17;9548:27;;9504:81;9632:2;9624:6;9621:14;9601:18;9598:38;9595:84;;9651:18;;:::i;:::-;9595:84;9416:269;9365:320;;;:::o;9691:177::-;9831:29;9827:1;9819:6;9815:14;9808:53;9691:177;:::o;9874:366::-;10016:3;10037:67;10101:2;10096:3;10037:67;:::i;:::-;10030:74;;10113:93;10202:3;10113:93;:::i;:::-;10231:2;10226:3;10222:12;10215:19;;9874:366;;;:::o;10246:419::-;10412:4;10450:2;10439:9;10435:18;10427:26;;10499:9;10493:4;10489:20;10485:1;10474:9;10470:17;10463:47;10527:131;10653:4;10527:131;:::i;:::-;10519:139;;10246:419;;;:::o;10671:115::-;10756:23;10773:5;10756:23;:::i;:::-;10751:3;10744:36;10671:115;;:::o;10792:218::-;10883:4;10921:2;10910:9;10906:18;10898:26;;10934:69;11000:1;10989:9;10985:17;10976:6;10934:69;:::i;:::-;10792:218;;;;:::o;11016:118::-;11103:24;11121:5;11103:24;:::i;:::-;11098:3;11091:37;11016:118;;:::o;11140:442::-;11289:4;11327:2;11316:9;11312:18;11304:26;;11340:71;11408:1;11397:9;11393:17;11384:6;11340:71;:::i;:::-;11421:72;11489:2;11478:9;11474:18;11465:6;11421:72;:::i;:::-;11503;11571:2;11560:9;11556:18;11547:6;11503:72;:::i;:::-;11140:442;;;;;;:::o;11588:222::-;11681:4;11719:2;11708:9;11704:18;11696:26;;11732:71;11800:1;11789:9;11785:17;11776:6;11732:71;:::i;:::-;11588:222;;;;:::o;11816:180::-;11864:77;11861:1;11854:88;11961:4;11958:1;11951:15;11985:4;11982:1;11975:15;12002:191;12042:3;12061:20;12079:1;12061:20;:::i;:::-;12056:25;;12095:20;12113:1;12095:20;:::i;:::-;12090:25;;12138:1;12135;12131:9;12124:16;;12159:3;12156:1;12153:10;12150:36;;;12166:18;;:::i;:::-;12150:36;12002:191;;;;:::o;12199:170::-;12339:22;12335:1;12327:6;12323:14;12316:46;12199:170;:::o;12375:366::-;12517:3;12538:67;12602:2;12597:3;12538:67;:::i;:::-;12531:74;;12614:93;12703:3;12614:93;:::i;:::-;12732:2;12727:3;12723:12;12716:19;;12375:366;;;:::o;12747:419::-;12913:4;12951:2;12940:9;12936:18;12928:26;;13000:9;12994:4;12990:20;12986:1;12975:9;12971:17;12964:47;13028:131;13154:4;13028:131;:::i;:::-;13020:139;;12747:419;;;:::o;13172:108::-;13249:24;13267:5;13249:24;:::i;:::-;13244:3;13237:37;13172:108;;:::o;13286:102::-;13359:22;13375:5;13359:22;:::i;:::-;13354:3;13347:35;13286:102;;:::o;13394:98::-;13445:6;13479:5;13473:12;13463:22;;13394:98;;;:::o;13498:158::-;13571:11;13605:6;13600:3;13593:19;13645:4;13640:3;13636:14;13621:29;;13498:158;;;;:::o;13662:353::-;13738:3;13766:38;13798:5;13766:38;:::i;:::-;13820:60;13873:6;13868:3;13820:60;:::i;:::-;13813:67;;13889:65;13947:6;13942:3;13935:4;13928:5;13924:16;13889:65;:::i;:::-;13979:29;14001:6;13979:29;:::i;:::-;13974:3;13970:39;13963:46;;13742:273;13662:353;;;;:::o;14075:976::-;14210:3;14246:4;14241:3;14237:14;14335:4;14328:5;14324:16;14318:23;14354:63;14411:4;14406:3;14402:14;14388:12;14354:63;:::i;:::-;14261:166;14517:4;14510:5;14506:16;14500:23;14536:59;14589:4;14584:3;14580:14;14566:12;14536:59;:::i;:::-;14437:168;14688:4;14681:5;14677:16;14671:23;14707:59;14760:4;14755:3;14751:14;14737:12;14707:59;:::i;:::-;14615:161;14863:4;14856:5;14852:16;14846:23;14916:3;14910:4;14906:14;14899:4;14894:3;14890:14;14883:38;14942:71;15008:4;14994:12;14942:71;:::i;:::-;14934:79;;14786:238;15041:4;15034:11;;14215:836;14075:976;;;;:::o;15057:515::-;15244:4;15282:2;15271:9;15267:18;15259:26;;15331:9;15325:4;15321:20;15317:1;15306:9;15302:17;15295:47;15359:124;15478:4;15469:6;15359:124;:::i;:::-;15351:132;;15493:72;15561:2;15550:9;15546:18;15537:6;15493:72;:::i;:::-;15057:515;;;;;:::o;15578:143::-;15635:5;15666:6;15660:13;15651:22;;15682:33;15709:5;15682:33;:::i;:::-;15578:143;;;;:::o;15727:351::-;15797:6;15846:2;15834:9;15825:7;15821:23;15817:32;15814:119;;;15852:79;;:::i;:::-;15814:119;15972:1;15997:64;16053:7;16044:6;16033:9;16029:22;15997:64;:::i;:::-;15987:74;;15943:128;15727:351;;;;:::o;16084:180::-;16132:77;16129:1;16122:88;16229:4;16226:1;16219:15;16253:4;16250:1;16243:15;16270:180;16318:77;16315:1;16308:88;16415:4;16412:1;16405:15;16439:4;16436:1;16429:15;16456:122;16545:2;16538:5;16535:13;16525:47;;16552:18;;:::i;:::-;16525:47;16456:122;:::o;16584:143::-;16637:7;16666:5;16655:16;;16672:49;16715:5;16672:49;:::i;:::-;16584:143;;;:::o;16733:::-;16797:9;16830:40;16864:5;16830:40;:::i;:::-;16817:53;;16733:143;;;:::o;16882:159::-;16983:51;17028:5;16983:51;:::i;:::-;16978:3;16971:64;16882:159;;:::o;17047:114::-;17114:6;17148:5;17142:12;17132:22;;17047:114;;;:::o;17167:184::-;17266:11;17300:6;17295:3;17288:19;17340:4;17335:3;17331:14;17316:29;;17167:184;;;;:::o;17357:132::-;17424:4;17447:3;17439:11;;17477:4;17472:3;17468:14;17460:22;;17357:132;;;:::o;17495:179::-;17564:10;17585:46;17627:3;17619:6;17585:46;:::i;:::-;17663:4;17658:3;17654:14;17640:28;;17495:179;;;;:::o;17680:113::-;17750:4;17782;17777:3;17773:14;17765:22;;17680:113;;;:::o;17829:732::-;17948:3;17977:54;18025:5;17977:54;:::i;:::-;18047:86;18126:6;18121:3;18047:86;:::i;:::-;18040:93;;18157:56;18207:5;18157:56;:::i;:::-;18236:7;18267:1;18252:284;18277:6;18274:1;18271:13;18252:284;;;18353:6;18347:13;18380:63;18439:3;18424:13;18380:63;:::i;:::-;18373:70;;18466:60;18519:6;18466:60;:::i;:::-;18456:70;;18312:224;18299:1;18296;18292:9;18287:14;;18252:284;;;18256:14;18552:3;18545:10;;17953:608;;;17829:732;;;;:::o;18567:875::-;18854:4;18892:3;18881:9;18877:19;18869:27;;18906:67;18970:1;18959:9;18955:17;18946:6;18906:67;:::i;:::-;18983:86;19065:2;19054:9;19050:18;19041:6;18983:86;:::i;:::-;19116:9;19110:4;19106:20;19101:2;19090:9;19086:18;19079:48;19144:108;19247:4;19238:6;19144:108;:::i;:::-;19136:116;;19299:9;19293:4;19289:20;19284:2;19273:9;19269:18;19262:48;19327:108;19430:4;19421:6;19327:108;:::i;:::-;19319:116;;18567:875;;;;;;;:::o;19448:180::-;19496:77;19493:1;19486:88;19593:4;19590:1;19583:15;19617:4;19614:1;19607:15;19634:90;19669:7;19712:5;19709:1;19698:20;19687:31;;19634:90;;;:::o;19730:112::-;19813:22;19829:5;19813:22;:::i;:::-;19808:3;19801:35;19730:112;;:::o;19848:214::-;19937:4;19975:2;19964:9;19960:18;19952:26;;19988:67;20052:1;20041:9;20037:17;20028:6;19988:67;:::i;:::-;19848:214;;;;:::o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","getBalanceEncrypted(address)":"43085e3b","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferEncrypted(address,bytes32,bytes)":"3c5295c9","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint64)":"dc412e83","wrap(uint64)":"52a7c9bf"},"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\"}],\"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\":\"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\"}],\"name\":\"EncryptedTransfer\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"Unwrapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"Wrapped\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getBalanceEncrypted\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"einput\",\"name\":\"encryptedAmount\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"inputProof\",\"type\":\"bytes\"}],\"name\":\"transferEncrypted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Uses LuxFHE's FHE library for homomorphic encryption operations\",\"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.\"}}]},\"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.\"},\"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\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"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}.\"},\"getBalanceEncrypted(address)\":{\"params\":{\"account\":\"The account to query\"},\"returns\":{\"_0\":\"The encrypted balance (can be decrypted by the owner)\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferEncrypted(address,bytes32,bytes)\":{\"params\":{\"encryptedAmount\":\"The encrypted amount to transfer (from client-side encryption)\",\"inputProof\":\"Proof of valid encryption\",\"to\":\"The recipient address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"unwrap(uint64)\":{\"details\":\"This is a simplified version - production would use async decryption via Gateway\",\"params\":{\"amount\":\"The amount to unwrap (in plaintext, will be checked against encrypted balance)\"}},\"wrap(uint64)\":{\"params\":{\"amount\":\"The amount of public tokens to wrap\"}}},\"title\":\"WrappingERC20\",\"version\":1},\"userdoc\":{\"events\":{\"EncryptedTransfer(address,address)\":{\"notice\":\"Emitted when encrypted tokens are transferred\"},\"Unwrapped(address,uint64)\":{\"notice\":\"Emitted when tokens are unwrapped (encrypted -> public)\"},\"Wrapped(address,uint64)\":{\"notice\":\"Emitted when tokens are wrapped (public -> encrypted)\"}},\"kind\":\"user\",\"methods\":{\"getBalanceEncrypted(address)\":{\"notice\":\"Get the encrypted balance of an account\"},\"transferEncrypted(address,bytes32,bytes)\":{\"notice\":\"Transfer encrypted tokens to another address\"},\"unwrap(uint64)\":{\"notice\":\"Unwrap encrypted tokens back to public balance\"},\"wrap(uint64)\":{\"notice\":\"Wrap public tokens to encrypted balance\"}},\"notice\":\"ERC20 token that supports wrapping public balances to encrypted (confidential) balances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/WrappingERC20.sol\":\"WrappingERC20\"},\"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/WrappingERC20.sol\":{\"keccak256\":\"0x81f8a4f4d5f1f10b87d7f97f59569445ab7ced2264310b5f8838d8ef0428e462\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ec41f616c0bef534d492681289b98f886a0102c5475a631a9be520e61c51e91\",\"dweb:/ipfs/QmekbCtjY5pF589M1MKGLE3bG85FHLzFADGk6qiVVZ7BQM\"]},\"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"}],"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":"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}],"type":"event","name":"EncryptedTransfer","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":"account","type":"address","indexed":true},{"internalType":"uint64","name":"amount","type":"uint64","indexed":false}],"type":"event","name":"Unwrapped","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint64","name":"amount","type":"uint64","indexed":false}],"type":"event","name":"Wrapped","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getBalanceEncrypted","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"einput","name":"encryptedAmount","type":"bytes32"},{"internalType":"bytes","name":"inputProof","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"amount","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unwrap"},{"inputs":[{"internalType":"uint64","name":"amount","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"wrap"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"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}."},"getBalanceEncrypted(address)":{"params":{"account":"The account to query"},"returns":{"_0":"The encrypted balance (can be decrypted by the owner)"}},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferEncrypted(address,bytes32,bytes)":{"params":{"encryptedAmount":"The encrypted amount to transfer (from client-side encryption)","inputProof":"Proof of valid encryption","to":"The recipient address"}},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"unwrap(uint64)":{"details":"This is a simplified version - production would use async decryption via Gateway","params":{"amount":"The amount to unwrap (in plaintext, will be checked against encrypted balance)"}},"wrap(uint64)":{"params":{"amount":"The amount of public tokens to wrap"}}},"version":1},"userdoc":{"kind":"user","methods":{"getBalanceEncrypted(address)":{"notice":"Get the encrypted balance of an account"},"transferEncrypted(address,bytes32,bytes)":{"notice":"Transfer encrypted tokens to another address"},"unwrap(uint64)":{"notice":"Unwrap encrypted tokens back to public balance"},"wrap(uint64)":{"notice":"Wrap public tokens to encrypted balance"}},"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/WrappingERC20.sol":"WrappingERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/WrappingERC20.sol":{"keccak256":"0x81f8a4f4d5f1f10b87d7f97f59569445ab7ced2264310b5f8838d8ef0428e462","urls":["bzz-raw://7ec41f616c0bef534d492681289b98f886a0102c5475a631a9be520e61c51e91","dweb:/ipfs/QmekbCtjY5pF589M1MKGLE3bG85FHLzFADGk6qiVVZ7BQM"],"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":0} |