mirror of
https://github.com/luxfhe/example-blind-auction-v2.git
synced 2026-10-30 18:13:35 +00:00
- Update to unified FHE decryption API - Update dependencies to @luxfi/contracts
1 line
168 KiB
JSON
1 line
168 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"_allowanceEncrypted","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"view"},{"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":"allowanceEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"permission","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"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":"approveEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","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":"balanceOfEncrypted","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"auth","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"completeUnwrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"requestUnwrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"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":"amount","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"encryptedAmount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"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":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"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":"ApprovalEncrypted","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"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":"TransferEncrypted","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"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":"ErrorInsufficientFunds","inputs":[]},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]},{"type":"error","name":"SignerNotMessageSender","inputs":[]},{"type":"error","name":"SignerNotOwner","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b506040516146243803806146248339818101604052810190610032919061063c565b6040518060400160405280601181526020017f4c7578464845205065726d697373696f6e0000000000000000000000000000008152506040518060400160405280600381526020017f312e300000000000000000000000000000000000000000000000000000000000815250838381600390816100af91906108c2565b5080600490816100bf91906108c2565b5050506100d660058361018860201b90919060201c565b61012081815250506100f260068261018860201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061012f6101d560201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505061017b5f61022f60201b60201c565b6009819055505050610d8f565b5f6020835110156101a9576101a28361024760201b60201c565b90506101cf565b826101b9836102ac60201b60201c565b5f0190816101c791906108c2565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016102149594939291906109f7565b60405160208183030381529060405280519060200120905090565b5f610240825f6102b560201b60201c565b9050919050565b5f5f829050601f8151111561029357826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161028a9190610a90565b60405180910390fd5b80518161029f90610add565b5f1c175f1b915050919050565b5f819050919050565b5f5f6102c9846004856102d560201b60201c565b90508091505092915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561032357610322610518565b5b6040519080825280602002602001820160405280156103515781602001602082028036833780820191505090505b50610374898960ff166103698a6103dc60201b60201c565b61043360201b60201c565b6040518563ffffffff1660e01b81526004016103939493929190610c88565b6020604051808303815f875af11580156103af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d39190610d03565b90509392505050565b5f5f8260030b121561042557816040517f8f568bf800000000000000000000000000000000000000000000000000000000815260040161041c9190610d49565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff81111561045157610450610518565b5b60405190808252806020026020018201604052801561047f5781602001602082028036833780820191505090505b50905084815f8151811061049657610495610d62565b5b60200260200101818152505083816001815181106104b7576104b6610d62565b5b60200260200101818152505082816002815181106104d8576104d7610d62565b5b602002602001018181525050809150509392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61054e82610508565b810181811067ffffffffffffffff8211171561056d5761056c610518565b5b80604052505050565b5f61057f6104ef565b905061058b8282610545565b919050565b5f67ffffffffffffffff8211156105aa576105a9610518565b5b6105b382610508565b9050602081019050919050565b8281835e5f83830152505050565b5f6105e06105db84610590565b610576565b9050828152602081018484840111156105fc576105fb610504565b5b6106078482856105c0565b509392505050565b5f82601f83011261062357610622610500565b5b81516106338482602086016105ce565b91505092915050565b5f5f60408385031215610652576106516104f8565b5b5f83015167ffffffffffffffff81111561066f5761066e6104fc565b5b61067b8582860161060f565b925050602083015167ffffffffffffffff81111561069c5761069b6104fc565b5b6106a88582860161060f565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061070057607f821691505b602082108103610713576107126106bc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261073a565b61077f868361073a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107c36107be6107b984610797565b6107a0565b610797565b9050919050565b5f819050919050565b6107dc836107a9565b6107f06107e8826107ca565b848454610746565b825550505050565b5f5f905090565b6108076107f8565b6108128184846107d3565b505050565b5b818110156108355761082a5f826107ff565b600181019050610818565b5050565b601f82111561087a5761084b81610719565b6108548461072b565b81016020851015610863578190505b61087761086f8561072b565b830182610817565b50505b505050565b5f82821c905092915050565b5f61089a5f198460080261087f565b1980831691505092915050565b5f6108b2838361088b565b9150826002028217905092915050565b6108cb826106b2565b67ffffffffffffffff8111156108e4576108e3610518565b5b6108ee82546106e9565b6108f9828285610839565b5f60209050601f83116001811461092a575f8415610918578287015190505b61092285826108a7565b865550610989565b601f19841661093886610719565b5f5b8281101561095f5784890151825560018201915060208501945060208101905061093a565b8683101561097c5784890151610978601f89168261088b565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b6109a381610991565b82525050565b6109b281610797565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109e1826109b8565b9050919050565b6109f1816109d7565b82525050565b5f60a082019050610a0a5f83018861099a565b610a17602083018761099a565b610a24604083018661099a565b610a3160608301856109a9565b610a3e60808301846109e8565b9695505050505050565b5f82825260208201905092915050565b5f610a62826106b2565b610a6c8185610a48565b9350610a7c8185602086016105c0565b610a8581610508565b840191505092915050565b5f6020820190508181035f830152610aa88184610a58565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610ad48251610991565b80915050919050565b5f610ae782610ab0565b82610af184610aba565b9050610afc81610ac9565b92506020821015610b3c57610b377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261073a565b831692505b5050919050565b5f60ff82169050919050565b610b5881610b43565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208110610b9c57610b9b610b5e565b5b50565b5f819050610bac82610b8b565b919050565b5f610bbb82610b9f565b9050919050565b610bcb81610bb1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610c0381610797565b82525050565b5f610c148383610bfa565b60208301905092915050565b5f602082019050919050565b5f610c3682610bd1565b610c408185610bdb565b9350610c4b83610beb565b805f5b83811015610c7b578151610c628882610c09565b9750610c6d83610c20565b925050600181019050610c4e565b5085935050505092915050565b5f608082019050610c9b5f830187610b4f565b610ca86020830186610bc2565b8181036040830152610cba8185610c2c565b90508181036060830152610cce8184610c2c565b905095945050505050565b610ce281610797565b8114610cec575f5ffd5b50565b5f81519050610cfd81610cd9565b92915050565b5f60208284031215610d1857610d176104f8565b5b5f610d2584828501610cef565b91505092915050565b5f8160030b9050919050565b610d4381610d2e565b82525050565b5f602082019050610d5c5f830184610d3a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c05160e051610100516101205161014051613844610de05f395f6114fe01525f6114c301525f61266a01525f61264901525f611e5801525f611eae01525f611ed701526138445ff3fe608060405234801561000f575f5ffd5b5060043610610140575f3560e01c806370a08231116100b6578063af575a001161007a578063af575a00146103b4578063c4224c19146103e4578063dd62ed3e14610414578063e1a136d514610444578063e83c3af714610474578063fe229cbe1461049057610140565b806370a08231146102f657806384b0196e1461032657806395d89b411461034a5780639f284be714610368578063a9059cbb1461038457610140565b806323db93541161010857806323db9354146101fc578063313ce5671461022c5780635356c4291461024a578063602772041461027a57806363c05a33146102aa5780636e0505e1146102da57610140565b806306fdde0314610144578063095548f314610162578063095ea7b31461017e57806318160ddd146101ae57806323b872dd146101cc575b5f5ffd5b61014c6104c0565b6040516101599190612953565b60405180910390f35b61017c600480360381019061017791906129bd565b610550565b005b61019860048036038101906101939190612a75565b6105e0565b6040516101a59190612acd565b60405180910390f35b6101b6610602565b6040516101c39190612af5565b60405180910390f35b6101e660048036038101906101e19190612b0e565b61060b565b6040516101f39190612acd565b60405180910390f35b61021660048036038101906102119190612b5e565b610639565b6040516102239190612bd5565b60405180910390f35b6102346106bb565b6040516102419190612c09565b60405180910390f35b610264600480360381019061025f9190612c44565b6106c3565b6040516102719190612cf0565b60405180910390f35b610294600480360381019061028f9190612ee0565b6107bd565b6040516102a19190612cf0565b60405180910390f35b6102c460048036038101906102bf9190612f58565b6108e4565b6040516102d19190612acd565b60405180910390f35b6102f460048036038101906102ef91906129bd565b61090b565b005b610310600480360381019061030b9190612fb2565b610a3e565b60405161031d9190612af5565b60405180910390f35b61032e610a83565b60405161034197969594939291906130ec565b60405180910390f35b610352610b28565b60405161035f9190612953565b60405180910390f35b610382600480360381019061037d91906129bd565b610bb8565b005b61039e60048036038101906103999190612a75565b610cc0565b6040516103ab9190612acd565b60405180910390f35b6103ce60048036038101906103c99190613198565b610ce2565b6040516103db9190612bd5565b60405180910390f35b6103fe60048036038101906103f991906131e8565b610d0d565b60405161040b9190612bd5565b60405180910390f35b61042e60048036038101906104299190612b5e565b610d21565b60405161043b9190612af5565b60405180910390f35b61045e60048036038101906104599190613226565b610da3565b60405161046b9190612bd5565b60405180910390f35b61048e600480360381019061048991906129bd565b610ddf565b005b6104aa60048036038101906104a59190612f58565b610ef5565b6040516104b79190612bd5565b60405180910390f35b6060600380546104cf906132bf565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb906132bf565b80156105465780601f1061051d57610100808354040283529160200191610546565b820191905f5260205f20905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b5f6105608263ffffffff16610f19565b90505f6105bc6105ad60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b6105b65f610f19565b84610f74565b90505f6105c882610fd6565b90506105da338263ffffffff16610fe7565b50505050565b5f5f6105ea611066565b90506105f781858561106d565b600191505092915050565b5f600254905090565b5f5f610615611066565b905061062285828561107f565b61062d858585611112565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6012905090565b6060816106cf906132ef565b5f6107247f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f0151604051602001610709929190613301565b60405160208183030381529060405280519060200120611202565b90505f61073582846020015161121b565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461079c576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b26107a93388610639565b865f0135611245565b935050505092915050565b606081835f6108167f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f01516040516020016107fb929190613301565b60405160208183030381529060405280519060200120611202565b90505f61082782856020015161121b565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461088e576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d860075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f0151611245565b94505050505092915050565b5f61090133846108fc856108f7906133e3565b611276565b6112e9565b6001905092915050565b5f61091b8263ffffffff16610f19565b90505f61097761096860075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b6109715f610f19565b84610f74565b90506109c060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610a0d6009548261144b565b600981905550610a1c81611494565b5f610a2682610fd6565b9050610a38338263ffffffff16610fe7565b50505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610a946114ba565b610a9c6114f5565b46305f5f1b5f67ffffffffffffffff811115610abb57610aba612d14565b5b604051908082528060200260200182016040528015610ae95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060048054610b37906132bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b63906132bf565b8015610bae5780601f10610b8557610100808354040283529160200191610bae565b820191905f5260205f20905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b8063ffffffff16610bc833610a3e565b1015610c00576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c10338263ffffffff16611530565b5f610c208263ffffffff16610f19565b9050610c6960075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826115af565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610cb6600954826115af565b6009819055505050565b5f5f610cca611066565b9050610cd7818585611112565b600191505092915050565b5f5f8290505f610cf38633846115f8565b9050610d00868683611633565b5080925050509392505050565b5f610d19338484611633565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f610db783610db2906133e3565b611276565b90505f610dc58633846115f8565b9050610dd2868683611633565b5080925050509392505050565b5f610def8263ffffffff16610f19565b90505f610e4b610e3c60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b610e455f610f19565b84610f74565b9050610e9460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ee16009548261144b565b600981905550610ef081611494565b505050565b5f610f1183610f0c84610f07906133e3565b611276565b610d0d565b905092915050565b5f610f24825f6117ab565b9050919050565b5f610f35836117c5565b610f4557610f425f610f19565b92505b610f4e826117c5565b610f5e57610f5b5f610f19565b91505b610f6c6004848460156117d6565b905092915050565b5f610f7e846118c5565b610f8e57610f8b5f6118d6565b93505b610f97836117c5565b610fa757610fa45f610f19565b92505b610fb0826117c5565b610fc057610fbd5f610f19565b91505b610fcd60048585856118e8565b90509392505050565b5f610fe0826119d9565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611057575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161104e91906133f5565b60405180910390fd5b6110625f8383611a6d565b5050565b5f33905090565b61107a8383836001611c86565b505050565b5f61108a8484610d21565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561110c57818110156110fd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016110f49392919061340e565b60405180910390fd5b61110b84848484035f611c86565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611182575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161117991906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016111e991906133f5565b60405180910390fd5b6111fd838383611a6d565b505050565b5f61121461120e611e55565b83611f0b565b9050919050565b5f5f5f5f6112298686611f4b565b9250925092506112398282611fa0565b82935050505092915050565b60605f839050808360405160200161125e929190613443565b60405160208183030381529060405291505092915050565b5f5f600490508060ff16836040015160ff16146112d0578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016112c792919061346a565b60405180910390fd5b6112e16112dc84612102565b612144565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611359575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161135091906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c9575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016113c091906133f5565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f611455836117c5565b611465576114625f610f19565b92505b61146e826117c5565b61147e5761147b5f610f19565b91505b61148c6004848460076117d6565b905092915050565b61149d816117c5565b6114ad576114aa5f610f19565b90505b6114b6816121db565b5050565b60606114f060057f000000000000000000000000000000000000000000000000000000000000000061226090919063ffffffff16565b905090565b606061152b60067f000000000000000000000000000000000000000000000000000000000000000061226090919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a0575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161159791906133f5565b60405180910390fd5b6115ab825f83611a6d565b5050565b5f6115b9836117c5565b6115c9576115c65f610f19565b92505b6115d2826117c5565b6115e2576115df5f610f19565b91505b6115f06004848460086117d6565b905092915050565b5f5f6116048585610639565b90505f611611828561230d565b90506116278686611622858561144b565b6112e9565b80925050509392505050565b5f5f61168e61167f8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612356565b846116895f610f19565b610f74565b90506116d760075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826115af565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061175f60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f5f6117b98460048561239f565b90508091505092915050565b5f6117cf8261249a565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd868461181388886124a6565b5f67ffffffffffffffff81111561182d5761182c612d14565b5b60405190808252806020026020018201604052801561185b5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161187b9493929190613504565b6020604051808303815f875af1158015611897573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bb9190613569565b9050949350505050565b5f6118cf8261249a565b9050919050565b5f6118e1825f612540565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611927888888612569565b5f67ffffffffffffffff81111561194157611940612d14565b5b60405190808252806020026020018201604052801561196f5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161198f9493929190613504565b6020604051808303815f875af11580156119ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119cf9190613569565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b8152600401611a279190612af5565b602060405180830381865afa158015611a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a669190613569565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abd578060025f828254611ab191906135c1565b92505081905550611b8b565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611b46578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611b3d9392919061340e565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd2578060025f8282540392505081905550611c1c565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c799190612af5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cf6575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ced91906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d5d91906133f5565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611e4f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e469190612af5565b60405180910390a35b50505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015611ed057507f000000000000000000000000000000000000000000000000000000000000000046145b15611efd577f00000000000000000000000000000000000000000000000000000000000000009050611f08565b611f05612625565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103611f8b575f5f5f602087015192506040870151915060608701515f1a9050611f7d888285856126ba565b955095509550505050611f99565b5f600285515f1b9250925092505b9250925092565b5f6003811115611fb357611fb2613491565b5b826003811115611fc657611fc5613491565b5b03156120fe5760016003811115611fe057611fdf613491565b5b826003811115611ff357611ff2613491565b5b0361202a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561203e5761203d613491565b5b82600381111561205157612050613491565b5b0361209557805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161208c9190612af5565b60405180910390fd5b6003808111156120a8576120a7613491565b5b8260038111156120bb576120ba613491565b5b036120fd57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016120f491906135f4565b60405180910390fd5b5b5050565b61210a6128b8565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016121949291906136c4565b6020604051808303815f875af11580156121b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d49190613569565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b815260040161222b9291906136f2565b5f604051808303815f87803b158015612242575f5ffd5b505af1158015612254573d5f5f3e3d5ffd5b50505050819050919050565b606060ff5f1b831461227c57612275836127a1565b9050612307565b818054612288906132bf565b80601f01602080910402602001604051908101604052809291908181526020018280546122b4906132bf565b80156122ff5780601f106122d6576101008083540402835291602001916122ff565b820191905f5260205f20905b8154815290600101906020018083116122e257829003601f168201915b505050505090505b92915050565b5f612317836117c5565b612327576123245f610f19565b92505b612330826117c5565b6123405761233d5f610f19565b91505b61234e6004848460166117d6565b905092915050565b5f612360836117c5565b6123705761236d5f610f19565b92505b612379826117c5565b612389576123865f610f19565b91505b6123976004848460146117d6565b905092915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156123ed576123ec612d14565b5b60405190808252806020026020018201604052801561241b5781602001602082028036833780820191505090505b50612432898960ff1661242d8a612813565b612569565b6040518563ffffffff1660e01b81526004016124519493929190613504565b6020604051808303815f875af115801561246d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124919190613569565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff8111156124c4576124c3612d14565b5b6040519080825280602002602001820160405280156124f25781602001602082028036833780820191505090505b50905083815f8151811061250957612508613719565b5b602002602001018181525050828160018151811061252a57612529613719565b5b6020026020010181815250508091505092915050565b5f5f5f9050831561255057600190505b5f61255c825f8661239f565b9050809250505092915050565b60605f600367ffffffffffffffff81111561258757612586612d14565b5b6040519080825280602002602001820160405280156125b55781602001602082028036833780820191505090505b50905084815f815181106125cc576125cb613719565b5b60200260200101818152505083816001815181106125ed576125ec613719565b5b602002602001018181525050828160028151811061260e5761260d613719565b5b602002602001018181525050809150509392505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161269f959493929190613746565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156126f6575f600385925092509250612797565b5f6001888888886040515f81526020016040526040516127199493929190613797565b6020604051602081039080840390855afa158015612739573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361278a575f60015f5f1b93509350935050612797565b805f5f5f1b935093509350505b9450945094915050565b60605f6127ad8361286a565b90505f602067ffffffffffffffff8111156127cb576127ca612d14565b5b6040519080825280601f01601f1916602001820160405280156127fd5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b121561285c57816040517f8f568bf800000000000000000000000000000000000000000000000000000000815260040161285391906137f5565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f8111156128af576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612925826128e3565b61292f81856128ed565b935061293f8185602086016128fd565b6129488161290b565b840191505092915050565b5f6020820190508181035f83015261296b818461291b565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f63ffffffff82169050919050565b61299c81612984565b81146129a6575f5ffd5b50565b5f813590506129b781612993565b92915050565b5f602082840312156129d2576129d161297c565b5b5f6129df848285016129a9565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a11826129e8565b9050919050565b612a2181612a07565b8114612a2b575f5ffd5b50565b5f81359050612a3c81612a18565b92915050565b5f819050919050565b612a5481612a42565b8114612a5e575f5ffd5b50565b5f81359050612a6f81612a4b565b92915050565b5f5f60408385031215612a8b57612a8a61297c565b5b5f612a9885828601612a2e565b9250506020612aa985828601612a61565b9150509250929050565b5f8115159050919050565b612ac781612ab3565b82525050565b5f602082019050612ae05f830184612abe565b92915050565b612aef81612a42565b82525050565b5f602082019050612b085f830184612ae6565b92915050565b5f5f5f60608486031215612b2557612b2461297c565b5b5f612b3286828701612a2e565b9350506020612b4386828701612a2e565b9250506040612b5486828701612a61565b9150509250925092565b5f5f60408385031215612b7457612b7361297c565b5b5f612b8185828601612a2e565b9250506020612b9285828601612a2e565b9150509250929050565b5f819050919050565b5f612bbf612bba612bb584612a42565b612b9c565b612a42565b9050919050565b612bcf81612ba5565b82525050565b5f602082019050612be85f830184612bc6565b92915050565b5f60ff82169050919050565b612c0381612bee565b82525050565b5f602082019050612c1c5f830184612bfa565b92915050565b5f5ffd5b5f60408284031215612c3b57612c3a612c22565b5b81905092915050565b5f5f60408385031215612c5a57612c5961297c565b5b5f612c6785828601612a2e565b925050602083013567ffffffffffffffff811115612c8857612c87612980565b5b612c9485828601612c26565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f612cc282612c9e565b612ccc8185612ca8565b9350612cdc8185602086016128fd565b612ce58161290b565b840191505092915050565b5f6020820190508181035f830152612d088184612cb8565b905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d4a8261290b565b810181811067ffffffffffffffff82111715612d6957612d68612d14565b5b80604052505050565b5f612d7b612973565b9050612d878282612d41565b919050565b5f5ffd5b5f819050919050565b612da281612d90565b8114612dac575f5ffd5b50565b5f81359050612dbd81612d99565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff821115612de557612de4612d14565b5b612dee8261290b565b9050602081019050919050565b828183375f83830152505050565b5f612e1b612e1684612dcb565b612d72565b905082815260208101848484011115612e3757612e36612dc7565b5b612e42848285612dfb565b509392505050565b5f82601f830112612e5e57612e5d612dc3565b5b8135612e6e848260208601612e09565b91505092915050565b5f60408284031215612e8c57612e8b612d10565b5b612e966040612d72565b90505f612ea584828501612daf565b5f83015250602082013567ffffffffffffffff811115612ec857612ec7612d8c565b5b612ed484828501612e4a565b60208301525092915050565b5f5f60408385031215612ef657612ef561297c565b5b5f612f0385828601612a2e565b925050602083013567ffffffffffffffff811115612f2457612f23612980565b5b612f3085828601612e77565b9150509250929050565b5f60808284031215612f4f57612f4e612c22565b5b81905092915050565b5f5f60408385031215612f6e57612f6d61297c565b5b5f612f7b85828601612a2e565b925050602083013567ffffffffffffffff811115612f9c57612f9b612980565b5b612fa885828601612f3a565b9150509250929050565b5f60208284031215612fc757612fc661297c565b5b5f612fd484828501612a2e565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61301181612fdd565b82525050565b61302081612a07565b82525050565b61302f81612d90565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61306781612a42565b82525050565b5f613078838361305e565b60208301905092915050565b5f602082019050919050565b5f61309a82613035565b6130a4818561303f565b93506130af8361304f565b805f5b838110156130df5781516130c6888261306d565b97506130d183613084565b9250506001810190506130b2565b5085935050505092915050565b5f60e0820190506130ff5f83018a613008565b8181036020830152613111818961291b565b90508181036040830152613125818861291b565b90506131346060830187612ae6565b6131416080830186613017565b61314e60a0830185613026565b81810360c08301526131608184613090565b905098975050505050505050565b61317781612a42565b8114613181575f5ffd5b50565b5f813590506131928161316e565b92915050565b5f5f5f606084860312156131af576131ae61297c565b5b5f6131bc86828701612a2e565b93505060206131cd86828701612a2e565b92505060406131de86828701613184565b9150509250925092565b5f5f604083850312156131fe576131fd61297c565b5b5f61320b85828601612a2e565b925050602061321c85828601613184565b9150509250929050565b5f5f5f6060848603121561323d5761323c61297c565b5b5f61324a86828701612a2e565b935050602061325b86828701612a2e565b925050604084013567ffffffffffffffff81111561327c5761327b612980565b5b61328886828701612f3a565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132d657607f821691505b6020821081036132e9576132e8613292565b5b50919050565b5f6132fa3683612e77565b9050919050565b5f6040820190506133145f830185613026565b6133216020830184613026565b9392505050565b61333181612bee565b811461333b575f5ffd5b50565b5f8135905061334c81613328565b92915050565b5f6080828403121561336757613366612d10565b5b6133716080612d72565b90505f61338084828501612a61565b5f8301525060206133938482850161333e565b60208301525060406133a78482850161333e565b604083015250606082013567ffffffffffffffff8111156133cb576133ca612d8c565b5b6133d784828501612e4a565b60608301525092915050565b5f6133ee3683613352565b9050919050565b5f6020820190506134085f830184613017565b92915050565b5f6060820190506134215f830186613017565b61342e6020830185612ae6565b61343b6040830184612ae6565b949350505050565b5f6040820190506134565f830185612ae6565b6134636020830184613026565b9392505050565b5f60408201905061347d5f830185612bfa565b61348a6020830184612bfa565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106134cf576134ce613491565b5b50565b5f8190506134df826134be565b919050565b5f6134ee826134d2565b9050919050565b6134fe816134e4565b82525050565b5f6080820190506135175f830187612bfa565b61352460208301866134f5565b81810360408301526135368185613090565b9050818103606083015261354a8184613090565b905095945050505050565b5f8151905061356381612a4b565b92915050565b5f6020828403121561357e5761357d61297c565b5b5f61358b84828501613555565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135cb82612a42565b91506135d683612a42565b92508282019050808211156135ee576135ed613594565b5b92915050565b5f6020820190506136075f830184613026565b92915050565b61361681612bee565b82525050565b5f82825260208201905092915050565b5f61363682612c9e565b613640818561361c565b93506136508185602086016128fd565b6136598161290b565b840191505092915050565b5f608083015f8301516136795f86018261305e565b50602083015161368c602086018261360d565b50604083015161369f604086018261360d565b50606083015184820360608601526136b7828261362c565b9150508091505092915050565b5f6040820190508181035f8301526136dc8185613664565b90506136eb6020830184613017565b9392505050565b5f6040820190506137055f830185612ae6565b6137126020830184613017565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506137595f830188613026565b6137666020830187613026565b6137736040830186613026565b6137806060830185612ae6565b61378d6080830184613017565b9695505050505050565b5f6080820190506137aa5f830187613026565b6137b76020830186612bfa565b6137c46040830185613026565b6137d16060830184613026565b95945050505050565b5f8160030b9050919050565b6137ef816137da565b82525050565b5f6020820190506138085f8301846137e6565b9291505056fea2646970667358221220dbbe9f3d6f0b424d34997031cb00ad706cc7e63e7e578bf8099b2b50f28391de64736f6c634300081b0033","sourceMap":"440:6370:4:-:0;;;816:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3428:431:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:4:4;904:6;1656:5:16;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;3501:45:25;3532:13;3501:4;:30;;;;:45;;;;:::i;:::-;3493:53;;;;;;3567:51;3601:16;3567:7;:33;;;;:51;;;;:::i;:::-;3556:62;;;;;;3658:4;3642:22;;;;;;3628:36;;;;;;3707:7;3691:25;;;;;;3674:42;;;;;;3744:13;3727:30;;;;;;3792:23;:21;;;:23;;:::i;:::-;3767:48;;;;;;3847:4;3825:27;;;;;;;;;;3428:431;;945:16:4::1;959:1;945:13;;;:16;;:::i;:::-;922:20;:39;;;;816:152:::0;;440:6370;;2887:340:21;2983:11;3032:2;3016:5;3010:19;:24;3006:215;;;3057:20;3071:5;3057:13;;;:20;;:::i;:::-;3050:27;;;;3006:215;3149:5;3108:32;3134:5;3108:25;;;:32;;:::i;:::-;:38;;:46;;;;;;:::i;:::-;;1390:66;3192:17;;3168:42;;2887:340;;;;;:::o;4213:179:25:-;4268:7;2079:95;4326:11;;4339:14;;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;127894:104:6:-;127946:7;127972:19;127982:5;127989:1;127972:9;;;:19;;:::i;:::-;127965:26;;127894:104;;;:::o;1708:286:21:-;1773:11;1796:17;1822:3;1796:30;;1854:2;1840:4;:11;:16;1836:72;;;1893:3;1879:18;;;;;;;;;;;:::i;:::-;;;;;;;;1836:72;1974:4;:11;1965:4;1957:13;;;:::i;:::-;1949:22;;:36;1941:45;;1917:70;;;1708:286;;;:::o;3468:175:22:-;3536:20;3617:10;3607:20;;3468:175;;;:::o;128225:210:6:-;128297:7;128316:10;128329:66;128355:5;7770:1:10;128382:12:6;128329:25;;;:66;;:::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;743:372:8:-;834:7;745:42:9;860:44:8;;;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:7:-;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;1745:284::-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;7:75:32:-;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:77::-;8507:7;8536:5;8525:16;;8470:77;;;:::o;8553:118::-;8640:24;8658:5;8640:24;:::i;:::-;8635:3;8628:37;8553:118;;:::o;8677:::-;8764:24;8782:5;8764:24;:::i;:::-;8759:3;8752:37;8677:118;;:::o;8801:126::-;8838:7;8878:42;8871:5;8867:54;8856:65;;8801:126;;;:::o;8933:96::-;8970:7;8999:24;9017:5;8999:24;:::i;:::-;8988:35;;8933:96;;;:::o;9035:118::-;9122:24;9140:5;9122:24;:::i;:::-;9117:3;9110:37;9035:118;;:::o;9159:664::-;9364:4;9402:3;9391:9;9387:19;9379:27;;9416:71;9484:1;9473:9;9469:17;9460:6;9416:71;:::i;:::-;9497:72;9565:2;9554:9;9550:18;9541:6;9497:72;:::i;:::-;9579;9647:2;9636:9;9632:18;9623:6;9579:72;:::i;:::-;9661;9729:2;9718:9;9714:18;9705:6;9661:72;:::i;:::-;9743:73;9811:3;9800:9;9796:19;9787:6;9743:73;:::i;:::-;9159:664;;;;;;;;:::o;9829:169::-;9913:11;9947:6;9942:3;9935:19;9987:4;9982:3;9978:14;9963:29;;9829:169;;;;:::o;10004:377::-;10092:3;10120:39;10153:5;10120:39;:::i;:::-;10175:71;10239:6;10234:3;10175:71;:::i;:::-;10168:78;;10255:65;10313:6;10308:3;10301:4;10294:5;10290:16;10255:65;:::i;:::-;10345:29;10367:6;10345:29;:::i;:::-;10340:3;10336:39;10329:46;;10096:285;10004:377;;;;:::o;10387:313::-;10500:4;10538:2;10527:9;10523:18;10515:26;;10587:9;10581:4;10577:20;10573:1;10562:9;10558:17;10551:47;10615:78;10688:4;10679:6;10615:78;:::i;:::-;10607:86;;10387:313;;;;:::o;10706:98::-;10757:6;10791:5;10785:12;10775:22;;10706:98;;;:::o;10810:116::-;10861:4;10884:3;10876:11;;10914:4;10909:3;10905:14;10897:22;;10810:116;;;:::o;10932:154::-;10975:11;11011:29;11035:3;11029:10;11011:29;:::i;:::-;11074:5;11050:29;;10987:99;10932:154;;;:::o;11092:594::-;11176:5;11207:38;11239:5;11207:38;:::i;:::-;11270:5;11297:40;11331:5;11297:40;:::i;:::-;11285:52;;11356:35;11382:8;11356:35;:::i;:::-;11347:44;;11415:2;11407:6;11404:14;11401:278;;;11486:169;11571:66;11541:6;11537:2;11533:15;11530:1;11526:23;11486:169;:::i;:::-;11463:5;11442:227;11433:236;;11401:278;11182:504;;11092:594;;;:::o;11692:86::-;11727:7;11767:4;11760:5;11756:16;11745:27;;11692:86;;;:::o;11784:112::-;11867:22;11883:5;11867:22;:::i;:::-;11862:3;11855:35;11784:112;;:::o;11902:180::-;11950:77;11947:1;11940:88;12047:4;12044:1;12037:15;12071:4;12068:1;12061:15;12088:122;12177:2;12170:5;12167:13;12157:47;;12184:18;;:::i;:::-;12157:47;12088:122;:::o;12216:143::-;12269:7;12298:5;12287:16;;12304:49;12347:5;12304:49;:::i;:::-;12216:143;;;:::o;12365:::-;12429:9;12462:40;12496:5;12462:40;:::i;:::-;12449:53;;12365:143;;;:::o;12514:159::-;12615:51;12660:5;12615:51;:::i;:::-;12610:3;12603:64;12514:159;;:::o;12679:114::-;12746:6;12780:5;12774:12;12764:22;;12679:114;;;:::o;12799:184::-;12898:11;12932:6;12927:3;12920:19;12972:4;12967:3;12963:14;12948:29;;12799:184;;;;:::o;12989:132::-;13056:4;13079:3;13071:11;;13109:4;13104:3;13100:14;13092:22;;12989:132;;;:::o;13127:108::-;13204:24;13222:5;13204:24;:::i;:::-;13199:3;13192:37;13127:108;;:::o;13241:179::-;13310:10;13331:46;13373:3;13365:6;13331:46;:::i;:::-;13409:4;13404:3;13400:14;13386:28;;13241:179;;;;:::o;13426:113::-;13496:4;13528;13523:3;13519:14;13511:22;;13426:113;;;:::o;13575:732::-;13694:3;13723:54;13771:5;13723:54;:::i;:::-;13793:86;13872:6;13867:3;13793:86;:::i;:::-;13786:93;;13903:56;13953:5;13903:56;:::i;:::-;13982:7;14013:1;13998:284;14023:6;14020:1;14017:13;13998:284;;;14099:6;14093:13;14126:63;14185:3;14170:13;14126:63;:::i;:::-;14119:70;;14212:60;14265:6;14212:60;:::i;:::-;14202:70;;14058:224;14045:1;14042;14038:9;14033:14;;13998:284;;;14002:14;14298:3;14291:10;;13699:608;;;13575:732;;;;:::o;14313:875::-;14600:4;14638:3;14627:9;14623:19;14615:27;;14652:67;14716:1;14705:9;14701:17;14692:6;14652:67;:::i;:::-;14729:86;14811:2;14800:9;14796:18;14787:6;14729:86;:::i;:::-;14862:9;14856:4;14852:20;14847:2;14836:9;14832:18;14825:48;14890:108;14993:4;14984:6;14890:108;:::i;:::-;14882:116;;15045:9;15039:4;15035:20;15030:2;15019:9;15015:18;15008:48;15073:108;15176:4;15167:6;15073:108;:::i;:::-;15065:116;;14313:875;;;;;;;:::o;15194:122::-;15267:24;15285:5;15267:24;:::i;:::-;15260:5;15257:35;15247:63;;15306:1;15303;15296:12;15247:63;15194:122;:::o;15322:143::-;15379:5;15410:6;15404:13;15395:22;;15426:33;15453:5;15426:33;:::i;:::-;15322:143;;;;:::o;15471:351::-;15541:6;15590:2;15578:9;15569:7;15565:23;15561:32;15558:119;;;15596:79;;:::i;:::-;15558:119;15716:1;15741:64;15797:7;15788:6;15777:9;15773:22;15741:64;:::i;:::-;15731:74;;15687:128;15471:351;;;;:::o;15828:90::-;15863:7;15906:5;15903:1;15892:20;15881:31;;15828:90;;;:::o;15924:112::-;16007:22;16023:5;16007:22;:::i;:::-;16002:3;15995:35;15924:112;;:::o;16042:214::-;16131:4;16169:2;16158:9;16154:18;16146:26;;16182:67;16246:1;16235:9;16231:17;16222:6;16182:67;:::i;:::-;16042:214;;;;:::o;16262:180::-;16310:77;16307:1;16300:88;16407:4;16404:1;16397:15;16431:4;16428:1;16421:15;440:6370:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610140575f3560e01c806370a08231116100b6578063af575a001161007a578063af575a00146103b4578063c4224c19146103e4578063dd62ed3e14610414578063e1a136d514610444578063e83c3af714610474578063fe229cbe1461049057610140565b806370a08231146102f657806384b0196e1461032657806395d89b411461034a5780639f284be714610368578063a9059cbb1461038457610140565b806323db93541161010857806323db9354146101fc578063313ce5671461022c5780635356c4291461024a578063602772041461027a57806363c05a33146102aa5780636e0505e1146102da57610140565b806306fdde0314610144578063095548f314610162578063095ea7b31461017e57806318160ddd146101ae57806323b872dd146101cc575b5f5ffd5b61014c6104c0565b6040516101599190612953565b60405180910390f35b61017c600480360381019061017791906129bd565b610550565b005b61019860048036038101906101939190612a75565b6105e0565b6040516101a59190612acd565b60405180910390f35b6101b6610602565b6040516101c39190612af5565b60405180910390f35b6101e660048036038101906101e19190612b0e565b61060b565b6040516101f39190612acd565b60405180910390f35b61021660048036038101906102119190612b5e565b610639565b6040516102239190612bd5565b60405180910390f35b6102346106bb565b6040516102419190612c09565b60405180910390f35b610264600480360381019061025f9190612c44565b6106c3565b6040516102719190612cf0565b60405180910390f35b610294600480360381019061028f9190612ee0565b6107bd565b6040516102a19190612cf0565b60405180910390f35b6102c460048036038101906102bf9190612f58565b6108e4565b6040516102d19190612acd565b60405180910390f35b6102f460048036038101906102ef91906129bd565b61090b565b005b610310600480360381019061030b9190612fb2565b610a3e565b60405161031d9190612af5565b60405180910390f35b61032e610a83565b60405161034197969594939291906130ec565b60405180910390f35b610352610b28565b60405161035f9190612953565b60405180910390f35b610382600480360381019061037d91906129bd565b610bb8565b005b61039e60048036038101906103999190612a75565b610cc0565b6040516103ab9190612acd565b60405180910390f35b6103ce60048036038101906103c99190613198565b610ce2565b6040516103db9190612bd5565b60405180910390f35b6103fe60048036038101906103f991906131e8565b610d0d565b60405161040b9190612bd5565b60405180910390f35b61042e60048036038101906104299190612b5e565b610d21565b60405161043b9190612af5565b60405180910390f35b61045e60048036038101906104599190613226565b610da3565b60405161046b9190612bd5565b60405180910390f35b61048e600480360381019061048991906129bd565b610ddf565b005b6104aa60048036038101906104a59190612f58565b610ef5565b6040516104b79190612bd5565b60405180910390f35b6060600380546104cf906132bf565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb906132bf565b80156105465780601f1061051d57610100808354040283529160200191610546565b820191905f5260205f20905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b5f6105608263ffffffff16610f19565b90505f6105bc6105ad60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b6105b65f610f19565b84610f74565b90505f6105c882610fd6565b90506105da338263ffffffff16610fe7565b50505050565b5f5f6105ea611066565b90506105f781858561106d565b600191505092915050565b5f600254905090565b5f5f610615611066565b905061062285828561107f565b61062d858585611112565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6012905090565b6060816106cf906132ef565b5f6107247f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f0151604051602001610709929190613301565b60405160208183030381529060405280519060200120611202565b90505f61073582846020015161121b565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461079c576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b26107a93388610639565b865f0135611245565b935050505092915050565b606081835f6108167f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f01516040516020016107fb929190613301565b60405160208183030381529060405280519060200120611202565b90505f61082782856020015161121b565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461088e576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d860075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f0151611245565b94505050505092915050565b5f61090133846108fc856108f7906133e3565b611276565b6112e9565b6001905092915050565b5f61091b8263ffffffff16610f19565b90505f61097761096860075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b6109715f610f19565b84610f74565b90506109c060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610a0d6009548261144b565b600981905550610a1c81611494565b5f610a2682610fd6565b9050610a38338263ffffffff16610fe7565b50505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610a946114ba565b610a9c6114f5565b46305f5f1b5f67ffffffffffffffff811115610abb57610aba612d14565b5b604051908082528060200260200182016040528015610ae95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060048054610b37906132bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b63906132bf565b8015610bae5780601f10610b8557610100808354040283529160200191610bae565b820191905f5260205f20905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b8063ffffffff16610bc833610a3e565b1015610c00576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c10338263ffffffff16611530565b5f610c208263ffffffff16610f19565b9050610c6960075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826115af565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610cb6600954826115af565b6009819055505050565b5f5f610cca611066565b9050610cd7818585611112565b600191505092915050565b5f5f8290505f610cf38633846115f8565b9050610d00868683611633565b5080925050509392505050565b5f610d19338484611633565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f610db783610db2906133e3565b611276565b90505f610dc58633846115f8565b9050610dd2868683611633565b5080925050509392505050565b5f610def8263ffffffff16610f19565b90505f610e4b610e3c60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f2b565b610e455f610f19565b84610f74565b9050610e9460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ee16009548261144b565b600981905550610ef081611494565b505050565b5f610f1183610f0c84610f07906133e3565b611276565b610d0d565b905092915050565b5f610f24825f6117ab565b9050919050565b5f610f35836117c5565b610f4557610f425f610f19565b92505b610f4e826117c5565b610f5e57610f5b5f610f19565b91505b610f6c6004848460156117d6565b905092915050565b5f610f7e846118c5565b610f8e57610f8b5f6118d6565b93505b610f97836117c5565b610fa757610fa45f610f19565b92505b610fb0826117c5565b610fc057610fbd5f610f19565b91505b610fcd60048585856118e8565b90509392505050565b5f610fe0826119d9565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611057575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161104e91906133f5565b60405180910390fd5b6110625f8383611a6d565b5050565b5f33905090565b61107a8383836001611c86565b505050565b5f61108a8484610d21565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561110c57818110156110fd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016110f49392919061340e565b60405180910390fd5b61110b84848484035f611c86565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611182575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161117991906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f2575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016111e991906133f5565b60405180910390fd5b6111fd838383611a6d565b505050565b5f61121461120e611e55565b83611f0b565b9050919050565b5f5f5f5f6112298686611f4b565b9250925092506112398282611fa0565b82935050505092915050565b60605f839050808360405160200161125e929190613443565b60405160208183030381529060405291505092915050565b5f5f600490508060ff16836040015160ff16146112d0578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016112c792919061346a565b60405180910390fd5b6112e16112dc84612102565b612144565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611359575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161135091906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c9575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016113c091906133f5565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f611455836117c5565b611465576114625f610f19565b92505b61146e826117c5565b61147e5761147b5f610f19565b91505b61148c6004848460076117d6565b905092915050565b61149d816117c5565b6114ad576114aa5f610f19565b90505b6114b6816121db565b5050565b60606114f060057f000000000000000000000000000000000000000000000000000000000000000061226090919063ffffffff16565b905090565b606061152b60067f000000000000000000000000000000000000000000000000000000000000000061226090919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a0575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161159791906133f5565b60405180910390fd5b6115ab825f83611a6d565b5050565b5f6115b9836117c5565b6115c9576115c65f610f19565b92505b6115d2826117c5565b6115e2576115df5f610f19565b91505b6115f06004848460086117d6565b905092915050565b5f5f6116048585610639565b90505f611611828561230d565b90506116278686611622858561144b565b6112e9565b80925050509392505050565b5f5f61168e61167f8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612356565b846116895f610f19565b610f74565b90506116d760075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826115af565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061175f60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261144b565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f5f6117b98460048561239f565b90508091505092915050565b5f6117cf8261249a565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd868461181388886124a6565b5f67ffffffffffffffff81111561182d5761182c612d14565b5b60405190808252806020026020018201604052801561185b5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161187b9493929190613504565b6020604051808303815f875af1158015611897573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bb9190613569565b9050949350505050565b5f6118cf8261249a565b9050919050565b5f6118e1825f612540565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004611927888888612569565b5f67ffffffffffffffff81111561194157611940612d14565b5b60405190808252806020026020018201604052801561196f5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161198f9493929190613504565b6020604051808303815f875af11580156119ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119cf9190613569565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b8152600401611a279190612af5565b602060405180830381865afa158015611a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a669190613569565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abd578060025f828254611ab191906135c1565b92505081905550611b8b565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611b46578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611b3d9392919061340e565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd2578060025f8282540392505081905550611c1c565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c799190612af5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cf6575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ced91906133f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d5d91906133f5565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611e4f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e469190612af5565b60405180910390a35b50505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015611ed057507f000000000000000000000000000000000000000000000000000000000000000046145b15611efd577f00000000000000000000000000000000000000000000000000000000000000009050611f08565b611f05612625565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103611f8b575f5f5f602087015192506040870151915060608701515f1a9050611f7d888285856126ba565b955095509550505050611f99565b5f600285515f1b9250925092505b9250925092565b5f6003811115611fb357611fb2613491565b5b826003811115611fc657611fc5613491565b5b03156120fe5760016003811115611fe057611fdf613491565b5b826003811115611ff357611ff2613491565b5b0361202a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561203e5761203d613491565b5b82600381111561205157612050613491565b5b0361209557805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161208c9190612af5565b60405180910390fd5b6003808111156120a8576120a7613491565b5b8260038111156120bb576120ba613491565b5b036120fd57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016120f491906135f4565b60405180910390fd5b5b5050565b61210a6128b8565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016121949291906136c4565b6020604051808303815f875af11580156121b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d49190613569565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b815260040161222b9291906136f2565b5f604051808303815f87803b158015612242575f5ffd5b505af1158015612254573d5f5f3e3d5ffd5b50505050819050919050565b606060ff5f1b831461227c57612275836127a1565b9050612307565b818054612288906132bf565b80601f01602080910402602001604051908101604052809291908181526020018280546122b4906132bf565b80156122ff5780601f106122d6576101008083540402835291602001916122ff565b820191905f5260205f20905b8154815290600101906020018083116122e257829003601f168201915b505050505090505b92915050565b5f612317836117c5565b612327576123245f610f19565b92505b612330826117c5565b6123405761233d5f610f19565b91505b61234e6004848460166117d6565b905092915050565b5f612360836117c5565b6123705761236d5f610f19565b92505b612379826117c5565b612389576123865f610f19565b91505b6123976004848460146117d6565b905092915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156123ed576123ec612d14565b5b60405190808252806020026020018201604052801561241b5781602001602082028036833780820191505090505b50612432898960ff1661242d8a612813565b612569565b6040518563ffffffff1660e01b81526004016124519493929190613504565b6020604051808303815f875af115801561246d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124919190613569565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff8111156124c4576124c3612d14565b5b6040519080825280602002602001820160405280156124f25781602001602082028036833780820191505090505b50905083815f8151811061250957612508613719565b5b602002602001018181525050828160018151811061252a57612529613719565b5b6020026020010181815250508091505092915050565b5f5f5f9050831561255057600190505b5f61255c825f8661239f565b9050809250505092915050565b60605f600367ffffffffffffffff81111561258757612586612d14565b5b6040519080825280602002602001820160405280156125b55781602001602082028036833780820191505090505b50905084815f815181106125cc576125cb613719565b5b60200260200101818152505083816001815181106125ed576125ec613719565b5b602002602001018181525050828160028151811061260e5761260d613719565b5b602002602001018181525050809150509392505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161269f959493929190613746565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156126f6575f600385925092509250612797565b5f6001888888886040515f81526020016040526040516127199493929190613797565b6020604051602081039080840390855afa158015612739573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361278a575f60015f5f1b93509350935050612797565b805f5f5f1b935093509350505b9450945094915050565b60605f6127ad8361286a565b90505f602067ffffffffffffffff8111156127cb576127ca612d14565b5b6040519080825280601f01601f1916602001820160405280156127fd5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b121561285c57816040517f8f568bf800000000000000000000000000000000000000000000000000000000815260040161285391906137f5565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f8111156128af576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612925826128e3565b61292f81856128ed565b935061293f8185602086016128fd565b6129488161290b565b840191505092915050565b5f6020820190508181035f83015261296b818461291b565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f63ffffffff82169050919050565b61299c81612984565b81146129a6575f5ffd5b50565b5f813590506129b781612993565b92915050565b5f602082840312156129d2576129d161297c565b5b5f6129df848285016129a9565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a11826129e8565b9050919050565b612a2181612a07565b8114612a2b575f5ffd5b50565b5f81359050612a3c81612a18565b92915050565b5f819050919050565b612a5481612a42565b8114612a5e575f5ffd5b50565b5f81359050612a6f81612a4b565b92915050565b5f5f60408385031215612a8b57612a8a61297c565b5b5f612a9885828601612a2e565b9250506020612aa985828601612a61565b9150509250929050565b5f8115159050919050565b612ac781612ab3565b82525050565b5f602082019050612ae05f830184612abe565b92915050565b612aef81612a42565b82525050565b5f602082019050612b085f830184612ae6565b92915050565b5f5f5f60608486031215612b2557612b2461297c565b5b5f612b3286828701612a2e565b9350506020612b4386828701612a2e565b9250506040612b5486828701612a61565b9150509250925092565b5f5f60408385031215612b7457612b7361297c565b5b5f612b8185828601612a2e565b9250506020612b9285828601612a2e565b9150509250929050565b5f819050919050565b5f612bbf612bba612bb584612a42565b612b9c565b612a42565b9050919050565b612bcf81612ba5565b82525050565b5f602082019050612be85f830184612bc6565b92915050565b5f60ff82169050919050565b612c0381612bee565b82525050565b5f602082019050612c1c5f830184612bfa565b92915050565b5f5ffd5b5f60408284031215612c3b57612c3a612c22565b5b81905092915050565b5f5f60408385031215612c5a57612c5961297c565b5b5f612c6785828601612a2e565b925050602083013567ffffffffffffffff811115612c8857612c87612980565b5b612c9485828601612c26565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f612cc282612c9e565b612ccc8185612ca8565b9350612cdc8185602086016128fd565b612ce58161290b565b840191505092915050565b5f6020820190508181035f830152612d088184612cb8565b905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d4a8261290b565b810181811067ffffffffffffffff82111715612d6957612d68612d14565b5b80604052505050565b5f612d7b612973565b9050612d878282612d41565b919050565b5f5ffd5b5f819050919050565b612da281612d90565b8114612dac575f5ffd5b50565b5f81359050612dbd81612d99565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff821115612de557612de4612d14565b5b612dee8261290b565b9050602081019050919050565b828183375f83830152505050565b5f612e1b612e1684612dcb565b612d72565b905082815260208101848484011115612e3757612e36612dc7565b5b612e42848285612dfb565b509392505050565b5f82601f830112612e5e57612e5d612dc3565b5b8135612e6e848260208601612e09565b91505092915050565b5f60408284031215612e8c57612e8b612d10565b5b612e966040612d72565b90505f612ea584828501612daf565b5f83015250602082013567ffffffffffffffff811115612ec857612ec7612d8c565b5b612ed484828501612e4a565b60208301525092915050565b5f5f60408385031215612ef657612ef561297c565b5b5f612f0385828601612a2e565b925050602083013567ffffffffffffffff811115612f2457612f23612980565b5b612f3085828601612e77565b9150509250929050565b5f60808284031215612f4f57612f4e612c22565b5b81905092915050565b5f5f60408385031215612f6e57612f6d61297c565b5b5f612f7b85828601612a2e565b925050602083013567ffffffffffffffff811115612f9c57612f9b612980565b5b612fa885828601612f3a565b9150509250929050565b5f60208284031215612fc757612fc661297c565b5b5f612fd484828501612a2e565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61301181612fdd565b82525050565b61302081612a07565b82525050565b61302f81612d90565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61306781612a42565b82525050565b5f613078838361305e565b60208301905092915050565b5f602082019050919050565b5f61309a82613035565b6130a4818561303f565b93506130af8361304f565b805f5b838110156130df5781516130c6888261306d565b97506130d183613084565b9250506001810190506130b2565b5085935050505092915050565b5f60e0820190506130ff5f83018a613008565b8181036020830152613111818961291b565b90508181036040830152613125818861291b565b90506131346060830187612ae6565b6131416080830186613017565b61314e60a0830185613026565b81810360c08301526131608184613090565b905098975050505050505050565b61317781612a42565b8114613181575f5ffd5b50565b5f813590506131928161316e565b92915050565b5f5f5f606084860312156131af576131ae61297c565b5b5f6131bc86828701612a2e565b93505060206131cd86828701612a2e565b92505060406131de86828701613184565b9150509250925092565b5f5f604083850312156131fe576131fd61297c565b5b5f61320b85828601612a2e565b925050602061321c85828601613184565b9150509250929050565b5f5f5f6060848603121561323d5761323c61297c565b5b5f61324a86828701612a2e565b935050602061325b86828701612a2e565b925050604084013567ffffffffffffffff81111561327c5761327b612980565b5b61328886828701612f3a565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132d657607f821691505b6020821081036132e9576132e8613292565b5b50919050565b5f6132fa3683612e77565b9050919050565b5f6040820190506133145f830185613026565b6133216020830184613026565b9392505050565b61333181612bee565b811461333b575f5ffd5b50565b5f8135905061334c81613328565b92915050565b5f6080828403121561336757613366612d10565b5b6133716080612d72565b90505f61338084828501612a61565b5f8301525060206133938482850161333e565b60208301525060406133a78482850161333e565b604083015250606082013567ffffffffffffffff8111156133cb576133ca612d8c565b5b6133d784828501612e4a565b60608301525092915050565b5f6133ee3683613352565b9050919050565b5f6020820190506134085f830184613017565b92915050565b5f6060820190506134215f830186613017565b61342e6020830185612ae6565b61343b6040830184612ae6565b949350505050565b5f6040820190506134565f830185612ae6565b6134636020830184613026565b9392505050565b5f60408201905061347d5f830185612bfa565b61348a6020830184612bfa565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106134cf576134ce613491565b5b50565b5f8190506134df826134be565b919050565b5f6134ee826134d2565b9050919050565b6134fe816134e4565b82525050565b5f6080820190506135175f830187612bfa565b61352460208301866134f5565b81810360408301526135368185613090565b9050818103606083015261354a8184613090565b905095945050505050565b5f8151905061356381612a4b565b92915050565b5f6020828403121561357e5761357d61297c565b5b5f61358b84828501613555565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135cb82612a42565b91506135d683612a42565b92508282019050808211156135ee576135ed613594565b5b92915050565b5f6020820190506136075f830184613026565b92915050565b61361681612bee565b82525050565b5f82825260208201905092915050565b5f61363682612c9e565b613640818561361c565b93506136508185602086016128fd565b6136598161290b565b840191505092915050565b5f608083015f8301516136795f86018261305e565b50602083015161368c602086018261360d565b50604083015161369f604086018261360d565b50606083015184820360608601526136b7828261362c565b9150508091505092915050565b5f6040820190508181035f8301526136dc8185613664565b90506136eb6020830184613017565b9392505050565b5f6040820190506137055f830185612ae6565b6137126020830184613017565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506137595f830188613026565b6137666020830187613026565b6137736040830186613026565b6137806060830185612ae6565b61378d6080830184613017565b9695505050505050565b5f6080820190506137aa5f830187613026565b6137b76020830186612bfa565b6137c46040830185613026565b6137d16060830184613026565b95945050505050565b5f8160030b9050919050565b6137ef816137da565b82525050565b5f6020820190506138085f8301846137e6565b9291505056fea2646970667358221220dbbe9f3d6f0b424d34997031cb00ad706cc7e63e7e578bf8099b2b50f28391de64736f6c634300081b0033","sourceMap":"440:6370:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:16;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:384:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3902:186:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;974:147:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82:16;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1126:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6179:232;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1399:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4272:575;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2933:116:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:557:25;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;1962:93:16;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2828:379:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3244:178:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2258:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5484:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2531:291:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3283:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5223:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89:16;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3807:384:4:-;3863:17;3883:21;3897:6;3883:21;;:13;:21::i;:::-;3863:41;;3914:22;3939:84;3950:43;3957:12;:24;3970:10;3957:24;;;;;;;;;;;;;;;;3983:9;3950:6;:43::i;:::-;3995:16;4009:1;3995:13;:16::i;:::-;4013:9;3939:10;:84::i;:::-;3914:109;;4079:22;4104:36;4125:14;4104:20;:36::i;:::-;4079:61;;4150:34;4156:10;4168:15;4150:34;;:5;:34::i;:::-;3853:338;;;3807:384;:::o;3902:186:16:-;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;974:147:4:-;1064:7;1090:8;:15;1099:5;1090:15;;;;;;;;;;;;;;;:24;1106:7;1090:24;;;;;;;;;;;;;;;;1083:31;;974:147;;;;:::o;2688:82:16:-;2737:5;2761:2;2754:9;;2688:82;:::o;1126:267:4:-;1277:12;1256:10;1147:385:11;;;:::i;:::-;1207:14;1224:141;1275:44;1333:10;:20;;;1251:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1241:123;;;;;;1224:16;:141::i;:::-;1207:158;;1375:14;1392:43;1406:6;1414:10;:20;;;1392:13;:43::i;:::-;1375:60;;1459:10;1449:20;;:6;:20;;;1445:69;;1490:24;;;;;;;;;;;;;;1445:69;1308:78:4::1;1323:40;1343:10;1355:7;1323:19;:40::i;:::-;1365:10;:20;;;1308:14;:78::i;:::-;1301:85;;1197:335:11::0;;1126:267:4;;;;;:::o;6179:232::-;6320:12;6296:4;6302:7;1915:14:11;1932:141;1983:44;2041:10;:20;;;1959:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1949:123;;;;;;1932:16;:141::i;:::-;1915:158;;2083:14;2100:43;2114:6;2122:10;:20;;;2100:13;:43::i;:::-;2083:60;;2167:5;2157:15;;:6;:15;;;2153:56;;2193:16;;;;;;;;;;;;;;2153:56;6351:53:4::1;6366:12;:21;6379:7;6366:21;;;;;;;;;;;;;;;;6389:4;:14;;;6351;:53::i;:::-;6344:60;;1905:322:11::0;;6179:232:4;;;;;;:::o;1399:186::-;1490:4;1506:51;1515:10;1527:7;1536:20;1550:5;1536:20;;;:::i;:::-;:13;:20::i;:::-;1506:8;:51::i;:::-;1574:4;1567:11;;1399:186;;;;:::o;4272:575::-;4320:17;4340:21;4354:6;4340:21;;:13;:21::i;:::-;4320:41;;4371:22;4396:84;4407:43;4414:12;:24;4427:10;4414:24;;;;;;;;;;;;;;;;4440:9;4407:6;:43::i;:::-;4452:16;4466:1;4452:13;:16::i;:::-;4470:9;4396:10;:84::i;:::-;4371:109;;4518:49;4526:12;:24;4539:10;4526:24;;;;;;;;;;;;;;;;4552:14;4518:7;:49::i;:::-;4491:12;:24;4504:10;4491:24;;;;;;;;;;;;;;;:76;;;;4600:45;4608:20;;4630:14;4600:7;:45::i;:::-;4577:20;:68;;;;4698:27;4710:14;4698:11;:27::i;:::-;4735:22;4760:36;4781:14;4760:20;:36::i;:::-;4735:61;;4806:34;4812:10;4824:15;4806:34;;:5;:34::i;:::-;4310:537;;;4272:575;:::o;2933:116:16:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;5228:557:25:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5674:13;5709:4;5736:1;5728:10;;5766:1;5752:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5566:212;;;;;;;;;;;;;;;;;;;;;5228:557;;;;;;;:::o;1962:93:16:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;2828:379:4:-;2902:6;2878:30;;:21;2888:10;2878:9;:21::i;:::-;:30;2874:92;;;2931:24;;;;;;;;;;;;;;2874:92;2976:25;2982:10;2994:6;2976:25;;:5;:25::i;:::-;3011:15;3029:21;3043:6;3029:21;;:13;:21::i;:::-;3011:39;;3087:42;3095:12;:24;3108:10;3095:24;;;;;;;;;;;;;;;;3121:7;3087;:42::i;:::-;3060:12;:24;3073:10;3060:24;;;;;;;;;;;;;;;:69;;;;3162:38;3170:20;;3192:7;3162;:38::i;:::-;3139:20;:61;;;;2864:343;2828:379;:::o;3244:178:16:-;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;2258:267:4:-;2354:7;2373:11;2387:5;2373:19;;2402:13;2418:38;2434:4;2440:10;2452:3;2418:15;:38::i;:::-;2402:54;;2466:30;2480:4;2486:2;2490:5;2466:13;:30::i;:::-;;2513:5;2506:12;;;;2258:267;;;;;:::o;5484:141::-;5555:7;5581:37;5595:10;5607:2;5611:6;5581:13;:37::i;:::-;5574:44;;5484:141;;;;:::o;3455:140:16:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;2531:291:4:-;2636:7;2655:11;2669:20;2683:5;2669:20;;;:::i;:::-;:13;:20::i;:::-;2655:34;;2699:13;2715:38;2731:4;2737:10;2749:3;2715:15;:38::i;:::-;2699:54;;2763:30;2777:4;2783:2;2787:5;2763:13;:30::i;:::-;;2810:5;2803:12;;;;2531:291;;;;;:::o;3283:463::-;3338:17;3358:21;3372:6;3358:21;;:13;:21::i;:::-;3338:41;;3389:22;3414:84;3425:43;3432:12;:24;3445:10;3432:24;;;;;;;;;;;;;;;;3458:9;3425:6;:43::i;:::-;3470:16;3484:1;3470:13;:16::i;:::-;3488:9;3414:10;:84::i;:::-;3389:109;;3536:49;3544:12;:24;3557:10;3544:24;;;;;;;;;;;;;;;;3570:14;3536:7;:49::i;:::-;3509:12;:24;3522:10;3509:24;;;;;;;;;;;;;;;:76;;;;3618:45;3626:20;;3648:14;3618:7;:45::i;:::-;3595:20;:68;;;;3712:27;3724:14;3712:11;:27::i;:::-;3328:418;;3283:463;:::o;5223:175::-;5312:7;5338:53;5356:2;5360:30;5374:15;5360:30;;;:::i;:::-;:13;:30::i;:::-;5338:17;:53::i;:::-;5331:60;;5223:175;;;;:::o;127894:104:6:-;127946:7;127972:19;127982:5;127989:1;127972:9;:19::i;:::-;127965:26;;127894:104;;;:::o;31097:336::-;31153:5;31175:12;31183:3;31175:7;:12::i;:::-;31170:62;;31209:12;31219:1;31209:9;:12::i;:::-;31203:18;;31170:62;31246:12;31254:3;31246:7;:12::i;:::-;31241:62;;31280:12;31290:1;31280:9;:12::i;:::-;31274:18;;31241:62;31331:94;7770:1:10;31384:3:6;31405;31411:13;31331:17;:94::i;:::-;31313:113;;31097:336;;;;:::o;98634:468::-;98714:7;98738:15;98746:6;98738:7;:15::i;:::-;98733:70;;98778:14;98786:5;98778:7;:14::i;:::-;98769:23;;98733:70;98817:15;98825:6;98817:7;:15::i;:::-;98812:68;;98857:12;98867:1;98857:9;:12::i;:::-;98848:21;;98812:68;98894:15;98902:6;98894:7;:15::i;:::-;98889:68;;98934:12;98944:1;98934:9;:12::i;:::-;98925:21;;98889:68;98987:107;7770:1:10;99038:6:6;99062;99086;98987:17;:107::i;:::-;98967:128;;98634:468;;;;;:::o;88187:156::-;88252:6;88284:51;88327:6;88284:27;:51::i;:::-;88270:66;;88187:156;;;:::o;7362:208:16:-;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;656:96:19:-;709:7;735:10;728:17;;656:96;:::o;8630:128:16:-;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;5017:176:25:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;5120:32;:66::i;:::-;5113:73;;5017:176;;;:::o;3714:255:24:-;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;3953:9;3946:16;;;;;3714:255;;;;:::o;154592:190:6:-;154670:12;154694;154724:5;154694:36;;154758:4;154764:10;154747:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;154740:35;;;154592:190;;;;:::o;115527:335::-;115586:7;115605:19;7770:1:10;115605:40:6;;115674:13;115659:28;;:5;:11;;;:28;;;115655:115;;115732:5;:11;;;115745:13;115710:49;;;;;;;;;;;;:::i;:::-;;;;;;;;115655:115;115801:53;115824:29;115847:5;115824:22;:29::i;:::-;115801:22;:53::i;:::-;115781:74;;;115527:335;;;:::o;1591:320:4:-;1696:1;1679:19;;:5;:19;;;1675:89;;1750:1;1721:32;;;;;;;;;;;:::i;:::-;;;;;;;;1675:89;1796:1;1777:21;;:7;:21;;;1773:90;;1849:1;1821:31;;;;;;;;;;;:::i;:::-;;;;;;;;1773:90;1899:5;1872:8;:15;1881:5;1872:15;;;;;;;;;;;;;;;:24;1888:7;1872:24;;;;;;;;;;;;;;;:32;;;;1591:320;;;:::o;12990:342:6:-;13047:7;13071:12;13079:3;13071:7;:12::i;:::-;13066:62;;13105:12;13115:1;13105:9;:12::i;:::-;13099:18;;13066:62;13142:12;13150:3;13142:7;:12::i;:::-;13137:62;;13176:12;13186:1;13176:9;:12::i;:::-;13170:18;;13137:62;13229:95;7770:1:10;13282:3:6;13303;13309:14;13229:17;:95::i;:::-;13209:116;;12990:342;;;;:::o;82858:193::-;82915:15;82923:6;82915:7;:15::i;:::-;82910:68;;82955:12;82965:1;82955:9;:12::i;:::-;82946:21;;82910:68;83001:42;83035:6;83001:18;:42::i;:::-;82988:56;82858:193;:::o;6105:126:25:-;6151:13;6183:41;6210:13;6183:5;:26;;:41;;;;:::i;:::-;6176:48;;6105:126;:::o;6557:135::-;6606:13;6638:47;6668:16;6638:8;:29;;:47;;;;:::i;:::-;6631:54;;6557:135;:::o;7888:206:16:-;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;5596:342:6:-;5653:7;5677:12;5685:3;5677:7;:12::i;:::-;5672:62;;5711:12;5721:1;5711:9;:12::i;:::-;5705:18;;5672:62;5748:12;5756:3;5748:7;:12::i;:::-;5743:62;;5782:12;5792:1;5782:9;:12::i;:::-;5776:18;;5743:62;5835:95;7770:1:10;5888:3:6;5909;5915:14;5835:17;:95::i;:::-;5815:116;;5596:342;;;;:::o;1917:335:4:-;2015:7;2034:24;2061:35;2081:5;2088:7;2061:19;:35::i;:::-;2034:62;;2106:13;2122:32;2130:16;2148:5;2122:7;:32::i;:::-;2106:48;;2164:58;2173:5;2180:7;2189:32;2197:16;2215:5;2189:7;:32::i;:::-;2164:8;:58::i;:::-;2240:5;2233:12;;;;1917:335;;;;;:::o;5669:504::-;5752:7;5822:20;5845:72;5856:34;5863:6;5871:12;:18;5884:4;5871:18;;;;;;;;;;;;;;;;5856:6;:34::i;:::-;5892:6;5900:16;5914:1;5900:13;:16::i;:::-;5845:10;:72::i;:::-;5822:95;;6025:39;6033:12;:16;6046:2;6033:16;;;;;;;;;;;;;;;;6051:12;6025:7;:39::i;:::-;6006:12;:16;6019:2;6006:16;;;;;;;;;;;;;;;:58;;;;6095:41;6103:12;:18;6116:4;6103:18;;;;;;;;;;;;;;;;6123:12;6095:7;:41::i;:::-;6074:12;:18;6087:4;6074:18;;;;;;;;;;;;;;;:62;;;;6154:12;6147:19;;;5669:504;;;;;:::o;128225:210:6:-;128297:7;128316:10;128329:66;128355:5;7770:1:10;128382:12:6;128329:25;:66::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;2075:110::-;2125:4;2140:42;2179:1;2140:23;:42::i;:::-;2133:49;;2075:110;;;:::o;2614:319:8:-;2715:7;745:42:9;2741:44:8;;;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:6:-;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:8:-;2058:7;745:42:9;2084:44:8;;;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;3410:154::-;3474:7;745:42:9;3500:50:8;;;3551:5;3500:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3493:64;;3410:154;;;:::o;5912:1107:16:-;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;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;3945:262:25:-;3998:7;4038:11;4021:28;;4029:4;4021:28;;;:63;;;;;4070:14;4053:13;:31;4021:63;4017:184;;;4107:22;4100:29;;;;4017:184;4167:23;:21;:23::i;:::-;4160:30;;3945:262;;:::o;3874:374:26:-;3967:14;4049:4;4043:11;4079:10;4074:3;4067:23;4126:15;4119:4;4114:3;4110:14;4103:39;4178:10;4171:4;4166:3;4162:14;4155:34;4227:4;4222:3;4212:20;4202:30;;4018:224;3874:374;;;;:::o;2129:778:24:-;2232:17;2251:16;2269:14;2319:2;2299:9;:16;:22;2295:606;;2337:9;2360;2383:7;2604:4;2593:9;2589:20;2583:27;2578:32;;2653:4;2642:9;2638:20;2632:27;2627:32;;2710:4;2699:9;2695:20;2689:27;2686:1;2681:36;2676:41;;2751:25;2762:4;2768:1;2771;2774;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;2823:1;2827:35;2872:9;:16;2864:25;;2807:83;;;;;;2129:778;;;;;;:::o;7280:532::-;7375:20;7366:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;7362:444;7411:7;7362:444;7471:29;7462:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;7458:348;;7523:23;;;;;;;;;;;;;;7458:348;7576:35;7567:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;7563:243;;7670:8;7662:17;;7634:46;;;;;;;;;;;:::i;:::-;;;;;;;;7563:243;7710:30;7701:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;7697:109;;7786:8;7763:32;;;;;;;;;;;:::i;:::-;;;;;;;;7697:109;7280:532;;;:::o;10682:297:10:-;10753:21;;:::i;:::-;10793:179;;;;;;;;10830:5;:12;;;10793:179;;;;10870:5;:18;;;10793:179;;;;;;7770:1;10793:179;;;;;;10946:5;:15;;;10793:179;;;10786:186;;10682:297;;;:::o;5059:165:8:-;5127:7;745:42:9;5153:45:8;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;3094:168::-;3144:7;745:42:9;3163:51:8;;;3215:5;3222:10;3163:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:5;3243:12;;3094:168;;;:::o;3368:267:21:-;3462:13;1390:66;3520:17;;3510:5;3491:46;3487:142;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3487:142;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:267;;;;;:::o;62753:342:6:-;62810:7;62834:12;62842:3;62834:7;:12::i;:::-;62829:62;;62868:12;62878:1;62868:9;:12::i;:::-;62862:18;;62829:62;62905:12;62913:3;62905:7;:12::i;:::-;62900:62;;62939:12;62949:1;62939:9;:12::i;:::-;62933:18;;62900:62;62992:95;7770:1:10;63045:3:6;63066;63072:14;62992:17;:95::i;:::-;62972:116;;62753:342;;;;:::o;19770:336::-;19826:5;19848:12;19856:3;19848:7;:12::i;:::-;19843:62;;19882:12;19892:1;19882:9;:12::i;:::-;19876:18;;19843:62;19919:12;19927:3;19919:7;:12::i;:::-;19914:62;;19953:12;19963:1;19953:9;:12::i;:::-;19947:18;;19914:62;20004:94;7770:1:10;20057:3:6;20078;20084:13;20004:17;:94::i;:::-;19986:113;;19770:336;;;;:::o;743:372:8:-;834:7;745:42:9;860:44:8;;;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;1020:99:7:-;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:6:-;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:10;126167:12:6;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1745:284:7:-;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;4213:179:25:-;4268:7;2079:95;4326:11;4339:14;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;5203:1551:24:-;5329:17;5348:16;5366:14;6283:66;6278:1;6270:10;;:79;6266:164;;;6381:1;6385:30;6417:1;6365:54;;;;;;;;6266:164;6524:14;6541:24;6551:4;6557:1;6560;6563;6541:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6524:41;;6597:1;6579:20;;:6;:20;;;6575:113;;6631:1;6635:29;6674:1;6666:10;;6615:62;;;;;;;;;6575:113;6706:6;6714:20;6744:1;6736:10;;6698:49;;;;;;;5203:1551;;;;;;;;;:::o;2078:378:21:-;2137:13;2162:11;2176:16;2187:4;2176:10;:16::i;:::-;2162:30;;2280:17;2311:2;2300:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2280:34;;2375:3;2370;2363:16;2415:4;2408;2403:3;2399:14;2392:28;2446:3;2439:10;;;;2078:378;;;:::o;629:208:7:-;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;2528:245:21:-;2589:7;2608:14;2661:4;2652;2625:33;;:40;2608:57;;2688:2;2679:6;:11;2675:69;;;2713:20;;;;;;;;;;;;;;2675:69;2760:6;2753:13;;;2528:245;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:32:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:93;1605:7;1645:10;1638:5;1634:22;1623:33;;1569:93;;;:::o;1668:120::-;1740:23;1757:5;1740:23;:::i;:::-;1733:5;1730:34;1720:62;;1778:1;1775;1768:12;1720:62;1668:120;:::o;1794:137::-;1839:5;1877:6;1864:20;1855:29;;1893:32;1919:5;1893:32;:::i;:::-;1794:137;;;;:::o;1937:327::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:119;;;2050:79;;:::i;:::-;2012:119;2170:1;2195:52;2239:7;2230:6;2219:9;2215:22;2195:52;:::i;:::-;2185:62;;2141:116;1937:327;;;;:::o;2270:126::-;2307:7;2347:42;2340:5;2336:54;2325:65;;2270:126;;;:::o;2402:96::-;2439:7;2468:24;2486:5;2468:24;:::i;:::-;2457:35;;2402:96;;;:::o;2504:122::-;2577:24;2595:5;2577:24;:::i;:::-;2570:5;2567:35;2557:63;;2616:1;2613;2606:12;2557:63;2504:122;:::o;2632:139::-;2678:5;2716:6;2703:20;2694:29;;2732:33;2759:5;2732:33;:::i;:::-;2632:139;;;;:::o;2777:77::-;2814:7;2843:5;2832:16;;2777:77;;;:::o;2860:122::-;2933:24;2951:5;2933:24;:::i;:::-;2926:5;2923:35;2913:63;;2972:1;2969;2962:12;2913:63;2860:122;:::o;2988:139::-;3034:5;3072:6;3059:20;3050:29;;3088:33;3115:5;3088:33;:::i;:::-;2988:139;;;;:::o;3133:474::-;3201:6;3209;3258:2;3246:9;3237:7;3233:23;3229:32;3226:119;;;3264:79;;:::i;:::-;3226:119;3384:1;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3355:117;3511:2;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3482:118;3133:474;;;;;:::o;3613:90::-;3647:7;3690:5;3683:13;3676:21;3665:32;;3613:90;;;:::o;3709:109::-;3790:21;3805:5;3790:21;:::i;:::-;3785:3;3778:34;3709:109;;:::o;3824:210::-;3911:4;3949:2;3938:9;3934:18;3926:26;;3962:65;4024:1;4013:9;4009:17;4000:6;3962:65;:::i;:::-;3824:210;;;;:::o;4040:118::-;4127:24;4145:5;4127:24;:::i;:::-;4122:3;4115:37;4040:118;;:::o;4164:222::-;4257:4;4295:2;4284:9;4280:18;4272:26;;4308:71;4376:1;4365:9;4361:17;4352:6;4308:71;:::i;:::-;4164:222;;;;:::o;4392:619::-;4469:6;4477;4485;4534:2;4522:9;4513:7;4509:23;4505:32;4502:119;;;4540:79;;:::i;:::-;4502:119;4660:1;4685:53;4730:7;4721:6;4710:9;4706:22;4685:53;:::i;:::-;4675:63;;4631:117;4787:2;4813:53;4858:7;4849:6;4838:9;4834:22;4813:53;:::i;:::-;4803:63;;4758:118;4915:2;4941:53;4986:7;4977:6;4966:9;4962:22;4941:53;:::i;:::-;4931:63;;4886:118;4392:619;;;;;:::o;5017:474::-;5085:6;5093;5142:2;5130:9;5121:7;5117:23;5113:32;5110:119;;;5148:79;;:::i;:::-;5110:119;5268:1;5293:53;5338:7;5329:6;5318:9;5314:22;5293:53;:::i;:::-;5283:63;;5239:117;5395:2;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5366:118;5017:474;;;;;:::o;5497:60::-;5525:3;5546:5;5539:12;;5497:60;;;:::o;5563:142::-;5613:9;5646:53;5664:34;5673:24;5691:5;5673:24;:::i;:::-;5664:34;:::i;:::-;5646:53;:::i;:::-;5633:66;;5563:142;;;:::o;5711:159::-;5826:37;5857:5;5826:37;:::i;:::-;5821:3;5814:50;5711:159;;:::o;5876:278::-;5997:4;6035:2;6024:9;6020:18;6012:26;;6048:99;6144:1;6133:9;6129:17;6120:6;6048:99;:::i;:::-;5876:278;;;;:::o;6160:86::-;6195:7;6235:4;6228:5;6224:16;6213:27;;6160:86;;;:::o;6252:112::-;6335:22;6351:5;6335:22;:::i;:::-;6330:3;6323:35;6252:112;;:::o;6370:214::-;6459:4;6497:2;6486:9;6482:18;6474:26;;6510:67;6574:1;6563:9;6559:17;6550:6;6510:67;:::i;:::-;6370:214;;;;:::o;6590:117::-;6699:1;6696;6689:12;6738:235;6815:5;6856:2;6847:6;6842:3;6838:16;6834:25;6831:112;;;6862:79;;:::i;:::-;6831:112;6961:6;6952:15;;6738:235;;;;:::o;6979:696::-;7078:6;7086;7135:2;7123:9;7114:7;7110:23;7106:32;7103:119;;;7141:79;;:::i;:::-;7103:119;7261:1;7286:53;7331:7;7322:6;7311:9;7307:22;7286:53;:::i;:::-;7276:63;;7232:117;7416:2;7405:9;7401:18;7388:32;7447:18;7439:6;7436:30;7433:117;;;7469:79;;:::i;:::-;7433:117;7574:84;7650:7;7641:6;7630:9;7626:22;7574:84;:::i;:::-;7564:94;;7359:309;6979:696;;;;;:::o;7681:98::-;7732:6;7766:5;7760:12;7750:22;;7681:98;;;:::o;7785:168::-;7868:11;7902:6;7897:3;7890:19;7942:4;7937:3;7933:14;7918:29;;7785:168;;;;:::o;7959:373::-;8045:3;8073:38;8105:5;8073:38;:::i;:::-;8127:70;8190:6;8185:3;8127:70;:::i;:::-;8120:77;;8206:65;8264:6;8259:3;8252:4;8245:5;8241:16;8206:65;:::i;:::-;8296:29;8318:6;8296:29;:::i;:::-;8291:3;8287:39;8280:46;;8049:283;7959:373;;;;:::o;8338:309::-;8449:4;8487:2;8476:9;8472:18;8464:26;;8536:9;8530:4;8526:20;8522:1;8511:9;8507:17;8500:47;8564:76;8635:4;8626:6;8564:76;:::i;:::-;8556:84;;8338:309;;;;:::o;8653:117::-;8762:1;8759;8752:12;8776:180;8824:77;8821:1;8814:88;8921:4;8918:1;8911:15;8945:4;8942:1;8935:15;8962:281;9045:27;9067:4;9045:27;:::i;:::-;9037:6;9033:40;9175:6;9163:10;9160:22;9139:18;9127:10;9124:34;9121:62;9118:88;;;9186:18;;:::i;:::-;9118:88;9226:10;9222:2;9215:22;9005:238;8962:281;;:::o;9249:129::-;9283:6;9310:20;;:::i;:::-;9300:30;;9339:33;9367:4;9359:6;9339:33;:::i;:::-;9249:129;;;:::o;9384:117::-;9493:1;9490;9483:12;9507:77;9544:7;9573:5;9562:16;;9507:77;;;:::o;9590:122::-;9663:24;9681:5;9663:24;:::i;:::-;9656:5;9653:35;9643:63;;9702:1;9699;9692:12;9643:63;9590:122;:::o;9718:139::-;9764:5;9802:6;9789:20;9780:29;;9818:33;9845:5;9818:33;:::i;:::-;9718:139;;;;:::o;9863:117::-;9972:1;9969;9962:12;9986:117;10095:1;10092;10085:12;10109:307;10170:4;10260:18;10252:6;10249:30;10246:56;;;10282:18;;:::i;:::-;10246:56;10320:29;10342:6;10320:29;:::i;:::-;10312:37;;10404:4;10398;10394:15;10386:23;;10109:307;;;:::o;10422:148::-;10520:6;10515:3;10510;10497:30;10561:1;10552:6;10547:3;10543:16;10536:27;10422:148;;;:::o;10576:423::-;10653:5;10678:65;10694:48;10735:6;10694:48;:::i;:::-;10678:65;:::i;:::-;10669:74;;10766:6;10759:5;10752:21;10804:4;10797:5;10793:16;10842:3;10833:6;10828:3;10824:16;10821:25;10818:112;;;10849:79;;:::i;:::-;10818:112;10939:54;10986:6;10981:3;10976;10939:54;:::i;:::-;10659:340;10576:423;;;;;:::o;11018:338::-;11073:5;11122:3;11115:4;11107:6;11103:17;11099:27;11089:122;;11130:79;;:::i;:::-;11089:122;11247:6;11234:20;11272:78;11346:3;11338:6;11331:4;11323:6;11319:17;11272:78;:::i;:::-;11263:87;;11079:277;11018:338;;;;:::o;11387:757::-;11465:5;11509:4;11497:9;11492:3;11488:19;11484:30;11481:117;;;11517:79;;:::i;:::-;11481:117;11616:21;11632:4;11616:21;:::i;:::-;11607:30;;11701:1;11741:49;11786:3;11777:6;11766:9;11762:22;11741:49;:::i;:::-;11734:4;11727:5;11723:16;11716:75;11647:155;11894:2;11883:9;11879:18;11866:32;11925:18;11917:6;11914:30;11911:117;;;11947:79;;:::i;:::-;11911:117;12067:58;12121:3;12112:6;12101:9;12097:22;12067:58;:::i;:::-;12060:4;12053:5;12049:16;12042:84;11812:325;11387:757;;;;:::o;12150:692::-;12247:6;12255;12304:2;12292:9;12283:7;12279:23;12275:32;12272:119;;;12310:79;;:::i;:::-;12272:119;12430:1;12455:53;12500:7;12491:6;12480:9;12476:22;12455:53;:::i;:::-;12445:63;;12401:117;12585:2;12574:9;12570:18;12557:32;12616:18;12608:6;12605:30;12602:117;;;12638:79;;:::i;:::-;12602:117;12743:82;12817:7;12808:6;12797:9;12793:22;12743:82;:::i;:::-;12733:92;;12528:307;12150:692;;;;;:::o;12870:233::-;12944:5;12985:3;12976:6;12971:3;12967:16;12963:26;12960:113;;;12992:79;;:::i;:::-;12960:113;13091:6;13082:15;;12870:233;;;;:::o;13109:690::-;13205:6;13213;13262:2;13250:9;13241:7;13237:23;13233:32;13230:119;;;13268:79;;:::i;:::-;13230:119;13388:1;13413:53;13458:7;13449:6;13438:9;13434:22;13413:53;:::i;:::-;13403:63;;13359:117;13543:2;13532:9;13528:18;13515:32;13574:18;13566:6;13563:30;13560:117;;;13596:79;;:::i;:::-;13560:117;13701:81;13774:7;13765:6;13754:9;13750:22;13701:81;:::i;:::-;13691:91;;13486:306;13109:690;;;;;:::o;13805:329::-;13864:6;13913:2;13901:9;13892:7;13888:23;13884:32;13881:119;;;13919:79;;:::i;:::-;13881:119;14039:1;14064:53;14109:7;14100:6;14089:9;14085:22;14064:53;:::i;:::-;14054:63;;14010:117;13805:329;;;;:::o;14140:149::-;14176:7;14216:66;14209:5;14205:78;14194:89;;14140:149;;;:::o;14295:115::-;14380:23;14397:5;14380:23;:::i;:::-;14375:3;14368:36;14295:115;;:::o;14416:118::-;14503:24;14521:5;14503:24;:::i;:::-;14498:3;14491:37;14416:118;;:::o;14540:::-;14627:24;14645:5;14627:24;:::i;:::-;14622:3;14615:37;14540:118;;:::o;14664:114::-;14731:6;14765:5;14759:12;14749:22;;14664:114;;;:::o;14784:184::-;14883:11;14917:6;14912:3;14905:19;14957:4;14952:3;14948:14;14933:29;;14784:184;;;;:::o;14974:132::-;15041:4;15064:3;15056:11;;15094:4;15089:3;15085:14;15077:22;;14974:132;;;:::o;15112:108::-;15189:24;15207:5;15189:24;:::i;:::-;15184:3;15177:37;15112:108;;:::o;15226:179::-;15295:10;15316:46;15358:3;15350:6;15316:46;:::i;:::-;15394:4;15389:3;15385:14;15371:28;;15226:179;;;;:::o;15411:113::-;15481:4;15513;15508:3;15504:14;15496:22;;15411:113;;;:::o;15560:732::-;15679:3;15708:54;15756:5;15708:54;:::i;:::-;15778:86;15857:6;15852:3;15778:86;:::i;:::-;15771:93;;15888:56;15938:5;15888:56;:::i;:::-;15967:7;15998:1;15983:284;16008:6;16005:1;16002:13;15983:284;;;16084:6;16078:13;16111:63;16170:3;16155:13;16111:63;:::i;:::-;16104:70;;16197:60;16250:6;16197:60;:::i;:::-;16187:70;;16043:224;16030:1;16027;16023:9;16018:14;;15983:284;;;15987:14;16283:3;16276:10;;15684:608;;;15560:732;;;;:::o;16298:1215::-;16647:4;16685:3;16674:9;16670:19;16662:27;;16699:69;16765:1;16754:9;16750:17;16741:6;16699:69;:::i;:::-;16815:9;16809:4;16805:20;16800:2;16789:9;16785:18;16778:48;16843:78;16916:4;16907:6;16843:78;:::i;:::-;16835:86;;16968:9;16962:4;16958:20;16953:2;16942:9;16938:18;16931:48;16996:78;17069:4;17060:6;16996:78;:::i;:::-;16988:86;;17084:72;17152:2;17141:9;17137:18;17128:6;17084:72;:::i;:::-;17166:73;17234:3;17223:9;17219:19;17210:6;17166:73;:::i;:::-;17249;17317:3;17306:9;17302:19;17293:6;17249:73;:::i;:::-;17370:9;17364:4;17360:20;17354:3;17343:9;17339:19;17332:49;17398:108;17501:4;17492:6;17398:108;:::i;:::-;17390:116;;16298:1215;;;;;;;;;;:::o;17519:150::-;17620:24;17638:5;17620:24;:::i;:::-;17613:5;17610:35;17600:63;;17659:1;17656;17649:12;17600:63;17519:150;:::o;17675:195::-;17749:5;17787:6;17774:20;17765:29;;17803:61;17858:5;17803:61;:::i;:::-;17675:195;;;;:::o;17876:675::-;17981:6;17989;17997;18046:2;18034:9;18025:7;18021:23;18017:32;18014:119;;;18052:79;;:::i;:::-;18014:119;18172:1;18197:53;18242:7;18233:6;18222:9;18218:22;18197:53;:::i;:::-;18187:63;;18143:117;18299:2;18325:53;18370:7;18361:6;18350:9;18346:22;18325:53;:::i;:::-;18315:63;;18270:118;18427:2;18453:81;18526:7;18517:6;18506:9;18502:22;18453:81;:::i;:::-;18443:91;;18398:146;17876:675;;;;;:::o;18557:530::-;18653:6;18661;18710:2;18698:9;18689:7;18685:23;18681:32;18678:119;;;18716:79;;:::i;:::-;18678:119;18836:1;18861:53;18906:7;18897:6;18886:9;18882:22;18861:53;:::i;:::-;18851:63;;18807:117;18963:2;18989:81;19062:7;19053:6;19042:9;19038:22;18989:81;:::i;:::-;18979:91;;18934:146;18557:530;;;;;:::o;19093:835::-;19198:6;19206;19214;19263:2;19251:9;19242:7;19238:23;19234:32;19231:119;;;19269:79;;:::i;:::-;19231:119;19389:1;19414:53;19459:7;19450:6;19439:9;19435:22;19414:53;:::i;:::-;19404:63;;19360:117;19516:2;19542:53;19587:7;19578:6;19567:9;19563:22;19542:53;:::i;:::-;19532:63;;19487:118;19672:2;19661:9;19657:18;19644:32;19703:18;19695:6;19692:30;19689:117;;;19725:79;;:::i;:::-;19689:117;19830:81;19903:7;19894:6;19883:9;19879:22;19830:81;:::i;:::-;19820:91;;19615:306;19093:835;;;;;:::o;19934:180::-;19982:77;19979:1;19972:88;20079:4;20076:1;20069:15;20103:4;20100:1;20093:15;20120:320;20164:6;20201:1;20195:4;20191:12;20181:22;;20248:1;20242:4;20238:12;20269:18;20259:81;;20325:4;20317:6;20313:17;20303:27;;20259:81;20387:2;20379:6;20376:14;20356:18;20353:38;20350:84;;20406:18;;:::i;:::-;20350:84;20171:269;20120:320;;;:::o;20446:223::-;20556:9;20590:72;20647:14;20640:5;20590:72;:::i;:::-;20577:85;;20446:223;;;:::o;20675:332::-;20796:4;20834:2;20823:9;20819:18;20811:26;;20847:71;20915:1;20904:9;20900:17;20891:6;20847:71;:::i;:::-;20928:72;20996:2;20985:9;20981:18;20972:6;20928:72;:::i;:::-;20675:332;;;;;:::o;21013:118::-;21084:22;21100:5;21084:22;:::i;:::-;21077:5;21074:33;21064:61;;21121:1;21118;21111:12;21064:61;21013:118;:::o;21137:135::-;21181:5;21219:6;21206:20;21197:29;;21235:31;21260:5;21235:31;:::i;:::-;21137:135;;;;:::o;21300:1078::-;21375:5;21419:4;21407:9;21402:3;21398:19;21394:30;21391:117;;;21427:79;;:::i;:::-;21391:117;21526:21;21542:4;21526:21;:::i;:::-;21517:30;;21608:1;21648:49;21693:3;21684:6;21673:9;21669:22;21648:49;:::i;:::-;21641:4;21634:5;21630:16;21623:75;21557:152;21776:2;21817:47;21860:3;21851:6;21840:9;21836:22;21817:47;:::i;:::-;21810:4;21803:5;21799:16;21792:73;21719:157;21936:2;21977:47;22020:3;22011:6;22000:9;21996:22;21977:47;:::i;:::-;21970:4;21963:5;21959:16;21952:73;21886:150;22128:2;22117:9;22113:18;22100:32;22159:18;22151:6;22148:30;22145:117;;;22181:79;;:::i;:::-;22145:117;22301:58;22355:3;22346:6;22335:9;22331:22;22301:58;:::i;:::-;22294:4;22287:5;22283:16;22276:84;22046:325;21300:1078;;;;:::o;22384:214::-;22488:9;22522:69;22576:14;22569:5;22522:69;:::i;:::-;22509:82;;22384:214;;;:::o;22604:222::-;22697:4;22735:2;22724:9;22720:18;22712:26;;22748:71;22816:1;22805:9;22801:17;22792:6;22748:71;:::i;:::-;22604:222;;;;:::o;22832:442::-;22981:4;23019:2;23008:9;23004:18;22996:26;;23032:71;23100:1;23089:9;23085:17;23076:6;23032:71;:::i;:::-;23113:72;23181:2;23170:9;23166:18;23157:6;23113:72;:::i;:::-;23195;23263:2;23252:9;23248:18;23239:6;23195:72;:::i;:::-;22832:442;;;;;;:::o;23280:332::-;23401:4;23439:2;23428:9;23424:18;23416:26;;23452:71;23520:1;23509:9;23505:17;23496:6;23452:71;:::i;:::-;23533:72;23601:2;23590:9;23586:18;23577:6;23533:72;:::i;:::-;23280:332;;;;;:::o;23618:316::-;23731:4;23769:2;23758:9;23754:18;23746:26;;23782:67;23846:1;23835:9;23831:17;23822:6;23782:67;:::i;:::-;23859:68;23923:2;23912:9;23908:18;23899:6;23859:68;:::i;:::-;23618:316;;;;;:::o;23940:180::-;23988:77;23985:1;23978:88;24085:4;24082:1;24075:15;24109:4;24106:1;24099:15;24126:122;24215:2;24208:5;24205:13;24195:47;;24222:18;;:::i;:::-;24195:47;24126:122;:::o;24254:143::-;24307:7;24336:5;24325:16;;24342:49;24385:5;24342:49;:::i;:::-;24254:143;;;:::o;24403:::-;24467:9;24500:40;24534:5;24500:40;:::i;:::-;24487:53;;24403:143;;;:::o;24552:159::-;24653:51;24698:5;24653:51;:::i;:::-;24648:3;24641:64;24552:159;;:::o;24717:875::-;25004:4;25042:3;25031:9;25027:19;25019:27;;25056:67;25120:1;25109:9;25105:17;25096:6;25056:67;:::i;:::-;25133:86;25215:2;25204:9;25200:18;25191:6;25133:86;:::i;:::-;25266:9;25260:4;25256:20;25251:2;25240:9;25236:18;25229:48;25294:108;25397:4;25388:6;25294:108;:::i;:::-;25286:116;;25449:9;25443:4;25439:20;25434:2;25423:9;25419:18;25412:48;25477:108;25580:4;25571:6;25477:108;:::i;:::-;25469:116;;24717:875;;;;;;;:::o;25598:143::-;25655:5;25686:6;25680:13;25671:22;;25702:33;25729:5;25702:33;:::i;:::-;25598:143;;;;:::o;25747:351::-;25817:6;25866:2;25854:9;25845:7;25841:23;25837:32;25834:119;;;25872:79;;:::i;:::-;25834:119;25992:1;26017:64;26073:7;26064:6;26053:9;26049:22;26017:64;:::i;:::-;26007:74;;25963:128;25747:351;;;;:::o;26104:180::-;26152:77;26149:1;26142:88;26249:4;26246:1;26239:15;26273:4;26270:1;26263:15;26290:191;26330:3;26349:20;26367:1;26349:20;:::i;:::-;26344:25;;26383:20;26401:1;26383:20;:::i;:::-;26378:25;;26426:1;26423;26419:9;26412:16;;26447:3;26444:1;26441:10;26438:36;;;26454:18;;:::i;:::-;26438:36;26290:191;;;;:::o;26487:222::-;26580:4;26618:2;26607:9;26603:18;26595:26;;26631:71;26699:1;26688:9;26684:17;26675:6;26631:71;:::i;:::-;26487:222;;;;:::o;26715:102::-;26788:22;26804:5;26788:22;:::i;:::-;26783:3;26776:35;26715:102;;:::o;26823:158::-;26896:11;26930:6;26925:3;26918:19;26970:4;26965:3;26961:14;26946:29;;26823:158;;;;:::o;26987:353::-;27063:3;27091:38;27123:5;27091:38;:::i;:::-;27145:60;27198:6;27193:3;27145:60;:::i;:::-;27138:67;;27214:65;27272:6;27267:3;27260:4;27253:5;27249:16;27214:65;:::i;:::-;27304:29;27326:6;27304:29;:::i;:::-;27299:3;27295:39;27288:46;;27067:273;26987:353;;;;:::o;27400:976::-;27535:3;27571:4;27566:3;27562:14;27660:4;27653:5;27649:16;27643:23;27679:63;27736:4;27731:3;27727:14;27713:12;27679:63;:::i;:::-;27586:166;27842:4;27835:5;27831:16;27825:23;27861:59;27914:4;27909:3;27905:14;27891:12;27861:59;:::i;:::-;27762:168;28013:4;28006:5;28002:16;27996:23;28032:59;28085:4;28080:3;28076:14;28062:12;28032:59;:::i;:::-;27940:161;28188:4;28181:5;28177:16;28171:23;28241:3;28235:4;28231:14;28224:4;28219:3;28215:14;28208:38;28267:71;28333:4;28319:12;28267:71;:::i;:::-;28259:79;;28111:238;28366:4;28359:11;;27540:836;27400:976;;;;:::o;28382:515::-;28569:4;28607:2;28596:9;28592:18;28584:26;;28656:9;28650:4;28646:20;28642:1;28631:9;28627:17;28620:47;28684:124;28803:4;28794:6;28684:124;:::i;:::-;28676:132;;28818:72;28886:2;28875:9;28871:18;28862:6;28818:72;:::i;:::-;28382:515;;;;;:::o;28903:332::-;29024:4;29062:2;29051:9;29047:18;29039:26;;29075:71;29143:1;29132:9;29128:17;29119:6;29075:71;:::i;:::-;29156:72;29224:2;29213:9;29209:18;29200:6;29156:72;:::i;:::-;28903:332;;;;;:::o;29241:180::-;29289:77;29286:1;29279:88;29386:4;29383:1;29376:15;29410:4;29407:1;29400:15;29427:664;29632:4;29670:3;29659:9;29655:19;29647:27;;29684:71;29752:1;29741:9;29737:17;29728:6;29684:71;:::i;:::-;29765:72;29833:2;29822:9;29818:18;29809:6;29765:72;:::i;:::-;29847;29915:2;29904:9;29900:18;29891:6;29847:72;:::i;:::-;29929;29997:2;29986:9;29982:18;29973:6;29929:72;:::i;:::-;30011:73;30079:3;30068:9;30064:19;30055:6;30011:73;:::i;:::-;29427:664;;;;;;;;:::o;30097:545::-;30270:4;30308:3;30297:9;30293:19;30285:27;;30322:71;30390:1;30379:9;30375:17;30366:6;30322:71;:::i;:::-;30403:68;30467:2;30456:9;30452:18;30443:6;30403:68;:::i;:::-;30481:72;30549:2;30538:9;30534:18;30525:6;30481:72;:::i;:::-;30563;30631:2;30620:9;30616:18;30607:6;30563:72;:::i;:::-;30097:545;;;;;;;:::o;30648:90::-;30683:7;30726:5;30723:1;30712:20;30701:31;;30648:90;;;:::o;30744:112::-;30827:22;30843:5;30827:22;:::i;:::-;30822:3;30815:35;30744:112;;:::o;30862:214::-;30951:4;30989:2;30978:9;30974:18;30966:26;;31002:67;31066:1;31055:9;31051:17;31042:6;31002:67;:::i;:::-;30862:214;;;;:::o","linkReferences":{},"immutableReferences":{"22978":[{"start":7895,"length":32}],"22980":[{"start":7854,"length":32}],"22982":[{"start":7768,"length":32}],"22984":[{"start":9801,"length":32}],"22986":[{"start":9834,"length":32}],"22989":[{"start":5315,"length":32}],"22992":[{"start":5374,"length":32}]}},"methodIdentifiers":{"_allowanceEncrypted(address,address)":"23db9354","allowance(address,address)":"dd62ed3e","allowanceEncrypted(address,(bytes32,bytes))":"5356c429","approve(address,uint256)":"095ea7b3","approveEncrypted(address,(uint256,uint8,uint8,bytes))":"63c05a33","balanceOf(address)":"70a08231","balanceOfEncrypted(address,(bytes32,bytes))":"60277204","completeUnwrap(uint32)":"095548f3","decimals()":"313ce567","eip712Domain()":"84b0196e","name()":"06fdde03","requestUnwrap(uint32)":"e83c3af7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferEncrypted(address,(uint256,uint8,uint8,bytes))":"fe229cbe","transferEncrypted(address,uint256)":"c4224c19","transferFrom(address,address,uint256)":"23b872dd","transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":"e1a136d5","transferFromEncrypted(address,address,uint256)":"af575a00","unwrap(uint32)":"6e0505e1","wrap(uint32)":"9f284be7"},"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\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"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\":[],\"name\":\"ErrorInsufficientFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotMessageSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ApprovalEncrypted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"TransferEncrypted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"_allowanceEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"permission\",\"type\":\"tuple\"}],\"name\":\"allowanceEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"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\":\"spender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"approveEncrypted\",\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"auth\",\"type\":\"tuple\"}],\"name\":\"balanceOfEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"completeUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"requestUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"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\":\"euint32\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedAmount\",\"type\":\"tuple\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint32\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"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.\"},\"ApprovalEncrypted(address,address)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approveEncrypted}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"TransferEncrypted(address,address)\":{\"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.\"},\"allowanceEncrypted(address,(bytes32,bytes))\":{\"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.\"},\"approveEncrypted(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"balanceOfEncrypted(address,(bytes32,bytes))\":{\"details\":\"Returns the value of tokens owned by `account`, sealed and encrypted for the caller.\"},\"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}.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"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`.\"},\"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`.\"},\"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"SignerNotMessageSender()\":[{\"notice\":\"Emitted when the signer is not the message sender\"}],\"SignerNotOwner()\":[{\"notice\":\"Emitted when the signer is not the specified owner\"}]},\"kind\":\"user\",\"methods\":{\"completeUnwrap(uint32)\":{\"notice\":\"Complete unwrap after decrypt is ready\"},\"requestUnwrap(uint32)\":{\"notice\":\"Request unwrap - first call to initiate async decrypt\"},\"unwrap(uint32)\":{\"notice\":\"Unwrap in single call (for environments with sync decrypt)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FHERC20.sol\":\"FHERC20\"},\"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/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHERC20.sol\":{\"keccak256\":\"0xc774c0aba4f9c72be81c0ffccfa80d3e1e8817da3cc9dc3f070f8902c612be42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37a0060b9a6dff9f6dc452ad0d92d915604519cf300d2f669ff0cf6aaae4b0f5\",\"dweb:/ipfs/QmVYkdVfJDYGizLsky7tRnJ4r3xJdRtwsqK3yMQhKb4yD1\"]},\"contracts/IFHERC20.sol\":{\"keccak256\":\"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5\",\"dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF\"]},\"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/@luxfi/contracts/fhe/access/Permissioned.sol\":{\"keccak256\":\"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9\",\"dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"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\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"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":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"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":[],"type":"error","name":"ErrorInsufficientFunds"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[],"type":"error","name":"SignerNotMessageSender"},{"inputs":[],"type":"error","name":"SignerNotOwner"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"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":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true}],"type":"event","name":"ApprovalEncrypted","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","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":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"TransferEncrypted","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"_allowanceEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"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":"struct Permission","name":"permission","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"allowanceEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"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":"spender","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"approveEncrypted","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"struct Permission","name":"auth","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"balanceOfEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"completeUnwrap"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"requestUnwrap"},{"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":"euint32","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"encryptedAmount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"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":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint32","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"unwrap"},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"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."},"allowanceEncrypted(address,(bytes32,bytes))":{"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."},"approveEncrypted(address,(uint256,uint8,uint8,bytes))":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"balanceOfEncrypted(address,(bytes32,bytes))":{"details":"Returns the value of tokens owned by `account`, sealed and encrypted for the caller."},"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}."},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"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`."},"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`."},"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event."}},"version":1},"userdoc":{"kind":"user","methods":{"completeUnwrap(uint32)":{"notice":"Complete unwrap after decrypt is ready"},"requestUnwrap(uint32)":{"notice":"Request unwrap - first call to initiate async decrypt"},"unwrap(uint32)":{"notice":"Unwrap in single call (for environments with sync decrypt)"}},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","eth-gas-reporter/=node_modules/eth-gas-reporter/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/FHERC20.sol":"FHERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHERC20.sol":{"keccak256":"0xc774c0aba4f9c72be81c0ffccfa80d3e1e8817da3cc9dc3f070f8902c612be42","urls":["bzz-raw://37a0060b9a6dff9f6dc452ad0d92d915604519cf300d2f669ff0cf6aaae4b0f5","dweb:/ipfs/QmVYkdVfJDYGizLsky7tRnJ4r3xJdRtwsqK3yMQhKb4yD1"],"license":"MIT"},"contracts/IFHERC20.sol":{"keccak256":"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98","urls":["bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5","dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF"],"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/@luxfi/contracts/fhe/access/Permissioned.sol":{"keccak256":"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128","urls":["bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9","dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"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"},"node_modules/@openzeppelin/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol":{"keccak256":"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402","urls":["bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35","dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5","urls":["bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746","dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"}},"version":1},"id":4} |