@layerzerolabs/oapp-alt-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OAppAlt) for EndpointV2Alt implementation
1 lines • 166 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_endpoint","type":"address","internalType":"address"},{"name":"_receiveUln301","type":"address","internalType":"address"},{"name":"_messageLibs","type":"address[]","internalType":"address[]"},{"name":"_priceFeed","type":"address","internalType":"address"},{"name":"_roleAdmin","type":"address","internalType":"address"},{"name":"_admins","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowlistSize","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"assignJob","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_calldataSize","type":"uint256","internalType":"uint256"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"assignJob","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"compose302","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_index","type":"uint16","internalType":"uint16"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_extraData","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"defaultMultiplierBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"dstConfig","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"execute301","inputs":[{"name":"_packet","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute302","inputs":[{"name":"_executionParams","type":"tuple","internalType":"struct IExecutor.ExecutionParams","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getFee","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_calldataSize","type":"uint256","internalType":"uint256"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSupportedOptionTypes","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint8[]","internalType":"uint8[]"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasAcl","inputs":[{"name":"_sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"localEidV2","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"nativeDrop","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_oapp","type":"address","internalType":"address"},{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nativeDropAndExecute301","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"},{"name":"_packet","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nativeDropAndExecute302","inputs":[{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"},{"name":"_executionParams","type":"tuple","internalType":"struct IExecutor.ExecutionParams","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"priceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"receiveUln301","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMultiplierBps","inputs":[{"name":"_multiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDstConfig","inputs":[{"name":"_params","type":"tuple[]","internalType":"struct IExecutor.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaused","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceFeed","inputs":[{"name":"_priceFeed","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSupportedOptionTypes","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"},{"name":"_optionTypes","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWorkerFeeLib","inputs":[{"name":"_workerFeeLib","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawFee","inputs":[{"name":"_lib","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"workerFeeLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"DstConfigSet","inputs":[{"name":"params","type":"tuple[]","indexed":false,"internalType":"struct IExecutor.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"NativeDropApplied","inputs":[{"name":"origin","type":"tuple","indexed":false,"internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"dstEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"oapp","type":"address","indexed":false,"internalType":"address"},{"name":"params","type":"tuple[]","indexed":false,"internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"success","type":"bool[]","indexed":false,"internalType":"bool[]"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDefaultMultiplierBps","inputs":[{"name":"multiplierBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SetPriceFeed","inputs":[{"name":"priceFeed","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetSupportedOptionTypes","inputs":[{"name":"dstEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"optionTypes","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetWorkerLib","inputs":[{"name":"workerLib","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"lib","type":"address","indexed":false,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Transfer_NativeFailed","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Transfer_ToAddressIsZero","inputs":[]},{"type":"error","name":"Worker_NotAllowed","inputs":[]},{"type":"error","name":"Worker_OnlyMessageLib","inputs":[]},{"type":"error","name":"Worker_RoleRenouncingDisabled","inputs":[]}],"bytecode":{"object":"0x608060405234801562000010575f80fd5b50604051620030083803806200300883398101604081905262000033916200045e565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b038581169190911790915584908490612ee090859085908216156200008d576200008b5f8362000220565b505b5f5b8551811015620000f157620000e77f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000d357620000d36200050c565b60200260200101516200022060201b60201c565b506001016200008f565b505f5b81518110156200014257620001387fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000d357620000d36200050c565b50600101620000f4565b505060016004908155600680546001600160a01b0319166001600160a01b038d169081179091556040805163416ecebf60e01b8152905191965063416ecebf95508083019450602093509091908290030181865afa158015620001a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cd919062000520565b6006805463ffffffff92909216600160a01b0263ffffffff60a01b199092169190911790555050600780546001600160a01b039094166001600160a01b0319909416939093179092555062000586915050565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156200027157505f838152602081815260408083206001600160a01b038616845290915290205460ff16155b15620002be57600180546015906200029990600160a81b90046001600160401b03166200054c565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b620002ca8383620002d6565b50600190505b92915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1662000379575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620003303390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002d0565b505f620002d0565b80516001600160a01b038116811462000398575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620003c1575f80fd5b815160206001600160401b0380831115620003e057620003e06200039d565b8260051b604051601f19603f830116810181811084821117156200040857620004086200039d565b604052938452602081870181019490810192508785111562000428575f80fd5b6020870191505b848210156200045357620004438262000381565b835291830191908301906200042f565b979650505050505050565b5f805f805f8060c0878903121562000474575f80fd5b6200047f8762000381565b95506200048f6020880162000381565b60408801519095506001600160401b0380821115620004ac575f80fd5b620004ba8a838b01620003b1565b9550620004ca60608a0162000381565b9450620004da60808a0162000381565b935060a0890151915080821115620004f0575f80fd5b50620004ff89828a01620003b1565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562000531575f80fd5b815163ffffffff8116811462000545575f80fd5b9392505050565b5f6001600160401b038281166002600160401b031981016200057c57634e487b7160e01b5f52601160045260245ffd5b6001019392505050565b612a7480620005945f395ff3fe608060405260043610610206575f3560e01c8063724e78da11610113578063c358de0a1161009d578063cd88b9031161006d578063cd88b90314610688578063cfc32570146106a7578063d2ae2104146106ba578063d547741f146106f8578063e395eb5c14610717575f80fd5b8063c358de0a14610607578063c416aa5114610626578063c7b2370b1461064a578063c8f8dcd114610669575f80fd5b806391d14854116100e357806391d14854146104ea5780639e94496514610509578063a217fddf146105b6578063c015bb7d146105c9578063c2803b2c146105e8575f80fd5b8063724e78da14610486578063741bef1a146104a55780637cd44734146104c45780638624ba07146104d7575f80fd5b80633146646a11610194578063475b6d9e11610164578063475b6d9e146103e75780635c975abb146103fa5780635e280f1114610411578063709eb66414610448578063717e8a4214610467575f80fd5b80633146646a1461037757806336568abe146103965780633927c075146103b55780633d85ac33146103c8575f80fd5b806316c38b3c116101da57806316c38b3c146102b2578063248a9ca3146102d157806326e67a371461030d5780632de11376146103395780632f2ff15d14610358575f80fd5b8062bf2e801461020a57806301e336671461024357806301ffc9a7146102645780631095b6d714610293575b5f80fd5b348015610215575f80fd5b5060015461022b90600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561024e575f80fd5b5061026261025d366004611d33565b61074f565b005b34801561026f575f80fd5b5061028361027e366004611d6c565b610777565b604051901515815260200161023a565b34801561029e575f80fd5b506102626102ad366004611d33565b6107ad565b3480156102bd575f80fd5b506102626102cc366004611d93565b6108ba565b3480156102dc575f80fd5b506102ff6102eb366004611db2565b5f9081526020819052604090206001015490565b60405190815260200161023a565b348015610318575f80fd5b5061032c610327366004611ddc565b6108de565b60405161023a9190611df5565b348015610344575f80fd5b50610283610353366004611e3b565b610961565b348015610363575f80fd5b50610262610372366004611e54565b6109f5565b348015610382575f80fd5b50610262610391366004611ec2565b610a19565b3480156103a1575f80fd5b506102626103b0366004611e54565b610aa3565b6102626103c3366004611f5f565b610abc565b3480156103d3575f80fd5b506102626103e2366004612094565b610b71565b6102626103f53660046121a8565b610ce4565b348015610405575f80fd5b5060015460ff16610283565b34801561041c575f80fd5b50600654610430906001600160a01b031681565b6040516001600160a01b03909116815260200161023a565b348015610453575f80fd5b506102ff610462366004612221565b610d25565b348015610472575f80fd5b506102ff610481366004612221565b610e28565b348015610491575f80fd5b506102626104a0366004611e3b565b610f4f565b3480156104b0575f80fd5b50600254610430906001600160a01b031681565b6102626104d236600461228a565b610fb4565b6102626104e5366004612345565b61105a565b3480156104f5575f80fd5b50610283610504366004611e54565b61115e565b348015610514575f80fd5b50610573610523366004611ddc565b60056020525f9081526040902080546001909101546001600160401b038083169261ffff600160401b820416926001600160801b03600160501b90920482169291811691600160801b9091041685565b604080516001600160401b03968716815261ffff90951660208601526001600160801b03938416908501529116606083015291909116608082015260a00161023a565b3480156105c1575f80fd5b506102ff5f81565b3480156105d4575f80fd5b506102ff6105e33660046123b2565b611186565b3480156105f3575f80fd5b50600754610430906001600160a01b031681565b348015610612575f80fd5b50610262610621366004612400565b6112a9565b348015610631575f80fd5b506001546104309061010090046001600160a01b031681565b348015610655575f80fd5b50610262610664366004611e3b565b611310565b348015610674575f80fd5b506102ff6106833660046123b2565b61137d565b348015610693575f80fd5b506102626106a2366004612419565b611474565b6102626106b5366004612497565b6114aa565b3480156106c5575f80fd5b506001546106e090600160a81b90046001600160401b031681565b6040516001600160401b03909116815260200161023a565b348015610703575f80fd5b50610262610712366004611e54565b611568565b348015610722575f80fd5b5060065461073a90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161023a565b5f80516020612a1f8339815191526107668161158c565b610771848484611599565b50505050565b5f6001600160e01b03198216637965db0b60e01b14806107a757506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f80516020612a1f8339815191526107c48161158c565b6107ee7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de8561115e565b61080b57604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be522906044015f604051808303815f87803b158015610852575f80fd5b505af1158015610864573d5f803e3d5ffd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b5f6108c48161158c565b81156108d6576108d26115c1565b5050565b6108d2611615565b63ffffffff81165f9081526003602090815260409182902080548351818402810184019094528084526060939283018282801561095557602002820191905f5260205f20905f905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109265790505b50505050509050919050565b5f61098c7f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e48361115e565b1561099857505f919050565b600154600160a81b90046001600160401b031615806109dc57506109dc7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8361115e565b156109e957506001919050565b505f919050565b919050565b5f82815260208190526040902060010154610a0f8161158c565b610771838361164e565b5f80516020612a1f833981519152610a308161158c565b610a386116e3565b600754604051631cca20df60e31b81526001600160a01b039091169063e65106f890610a6c908790879087906004016124f8565b5f604051808303815f87803b158015610a83575f80fd5b505af1158015610a95573d5f803e3d5ffd5b505050506107716001600455565b60405163dec9f03160e01b815260040160405180910390fd5b5f80516020612a1f833981519152610ad38161158c565b610adb6116e3565b610afb88610ae9868661170d565b610af3878761172f565b8a8a8a611747565b50600754604051631cca20df60e31b81526001600160a01b039091169063e65106f890610b30908790879087906004016124f8565b5f604051808303815f87803b158015610b47575f80fd5b505af1158015610b59573d5f803e3d5ffd5b50505050610b676001600455565b5050505050505050565b5f80516020612a1f833981519152610b888161158c565b5f5b8251811015610ca8575f838281518110610ba657610ba661251b565b6020908102919091018101516040805160a08082018352838501516001600160401b03908116835260608086015161ffff9081168589019081526080808901516001600160801b03908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff165f9081526005909a529690982094518554985194518816600160501b026fffffffffffffffffffffffffffffffff60501b1995909216600160401b0269ffffffffffffffffffff1990991690841617979097179290921695909517825551600191820180549351909516600160801b026001600160c01b031990931693169290921717909155919091019050610b8a565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc5382604051610cd8919061252f565b60405180910390a15050565b5f80516020612a1f833981519152610cfb8161158c565b610d036116e3565b610d11878787878787611747565b50610d1c6001600455565b50505050505050565b5f84610d3081610961565b610d4d57604051634ab5ebcd60e01b815260040160405180910390fd5b610d556118a6565b6040805160a0810182526002546001600160a01b03908116825263ffffffff8a1660208084018290528a831684860152606084018a905260015461ffff600160e81b82041660808601525f92835260059091529084902093516321a7700b60e11b815292936101009091049091169163434ee01691610ddd918591908a908a9060040161261b565b602060405180830381865afa158015610df8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1c9190612682565b98975050505050505050565b5f7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de610e538161158c565b85610e5d81610961565b610e7a57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160a0810182526002546001600160a01b03908116825263ffffffff8b1660208084018290528b831684860152606084018b905260015461ffff600160e81b82041660808601525f9283526005909152908490209351632b377bb160e11b815292936101009091049091169163566ef76291610f02918591908b908b9060040161261b565b6020604051808303815f875af1158015610f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f429190612682565b9998505050505050505050565b5f80516020612a1f833981519152610f668161158c565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001610cd8565b5f80516020612a1f833981519152610fcb8161158c565b610fd36116e3565b6006546040516391d20fa160e01b81526001600160a01b03909116906391d20fa19084903490611015908f908f908f908f908f908f908f908f90600401612699565b5f604051808303818589803b15801561102c575f80fd5b5088f115801561103e573d5f803e3d5ffd5b50505050505061104e6001600455565b50505050505050505050565b5f80516020612a1f8339815191526110718161158c565b6110796116e3565b6006545f906110a6906020850190600160a01b900463ffffffff1661109e8287611e3b565b898989611747565b90505f6110b3823461270c565b6006549091506001600160a01b0316630c0c389e60e086013583602088016110db818a611e3b565b60808a01356110ed60a08c018c61271f565b6110fa60c08e018e61271f565b6040518a63ffffffff1660e01b815260040161111c979695949392919061279a565b5f604051808303818589803b158015611133575f80fd5b5088f1158015611145573d5f803e3d5ffd5b50505050505050506111576001600455565b5050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de6111b18161158c565b846111bb81610961565b6111d857604051634ab5ebcd60e01b815260040160405180910390fd5b604080516060810182526002546001600160a01b039081168252888116602080840191909152600154600160e81b810461ffff1684860152600654600160a01b900463ffffffff165f90815260059092529084902093516319400de160e21b815292936101009091049091169163650037849161125e918591908b908b906004016127ef565b6020604051808303815f875af115801561127a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e9190612682565b979650505050505050565b5f80516020612a1f8339815191526112c08161158c565b6001805461ffff60e81b1916600160e81b61ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001610cd8565b5f80516020612a1f8339815191526113278161158c565b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001610cd8565b5f8361138881610961565b6113a557604051634ab5ebcd60e01b815260040160405180910390fd5b604080516060810182526002546001600160a01b039081168252878116602080840191909152600154600160e81b810461ffff1684860152600654600160a01b900463ffffffff165f90815260059092529084902093516319be3d4f60e11b815292936101009091049091169163337c7a9e9161142b918591908a908a906004016127ef565b602060405180830381865afa158015611446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146a9190612682565b9695505050505050565b5f80516020612a1f83398151915261148b8161158c565b63ffffffff84165f908152600360205260409020611157908484611c65565b5f80516020612a1f8339815191526114c18161158c565b6114c96116e3565b6006546001600160a01b0316630c0c389e60e084013534602086016114ee8188611e3b565b608088013561150060a08a018a61271f565b61150d60c08c018c61271f565b6040518a63ffffffff1660e01b815260040161152f979695949392919061279a565b5f604051808303818589803b158015611546575f80fd5b5088f1158015611558573d5f803e3d5ffd5b5050505050506108d26001600455565b5f828152602081905260409020600101546115828161158c565b61077183836118cc565b6115968133611955565b50565b6001600160a01b0383166115b6576115b18282611993565b505050565b6115b1838383611a3c565b6115c96118a6565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b61161d611a77565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336115f8565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156116855750611683838361115e565b155b156116cf57600180546015906116aa90600160a81b90046001600160401b031661283e565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6116d98383611a9a565b5060019392505050565b60026004540361170657604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b5f61171c6031602d8486612863565b6117259161288a565b60e01c9392505050565b5f61174061173d8484611b29565b90565b9392505050565b5f80836001600160401b0381111561176157611761611feb565b60405190808252806020026020018201604052801561178a578160200160208202803683370190505b5090505f5b84811015611859575f8686838181106117aa576117aa61251b565b9050604002018036038101906117c091906128ba565b90505f815f01516001600160a01b0316826020015187906040515f60405180830381858888f193505050503d805f8114611815576040519150601f19603f3d011682016040523d82523d5f602084013e61181a565b606091505b50509050808484815181106118315761183161251b565b91151560209283029190910182015282015161184d908661290e565b9450505060010161178f565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c34688888888888866040516118939695949392919061295d565b60405180910390a1509695505050505050565b60015460ff16156118ca5760405163d93c066560e01b815260040160405180910390fd5b565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156119015750611901838361115e565b1561194b576001805460159061192690600160a81b90046001600160401b03166129e0565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6116d98383611b41565b61195f828261115e565b6108d25760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b6001600160a01b0382166119ba576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611a03576040519150601f19603f3d011682016040523d82523d5f602084013e611a08565b606091505b50509050806115b157604051631196f20d60e21b81526001600160a01b03841660048201526024810183905260440161198a565b6001600160a01b038216611a63576040516306b7a93160e41b815260040160405180910390fd5b6115b16001600160a01b0384168383611baa565b60015460ff166118ca57604051638dfc202b60e01b815260040160405180910390fd5b5f611aa5838361115e565b611b22575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611ada3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107a7565b505f6107a7565b5f611b38605160318486612863565b61174091612a01565b5f611b4c838361115e565b15611b22575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107a7565b604080516001600160a01b03841660248201526044808201849052825180830390910181526064909101909152602080820180516001600160e01b031663a9059cbb60e01b17815282516115b193879390925f9283929183919082885af180611c18576040513d5f823e3d81fd5b50505f513d91508115611c2f578060011415611c3c565b6001600160a01b0384163b155b1561077157604051635274afe760e01b81526001600160a01b038516600482015260240161198a565b828054828255905f5260205f2090601f01602090048101928215611cf9579160200282015f5b83821115611ccb57833560ff1683826101000a81548160ff021916908360ff16021790555092602001926001016020815f01049283019260010302611c8b565b8015611cf75782816101000a81549060ff02191690556001016020815f01049283019260010302611ccb565b505b50611d05929150611d09565b5090565b5b80821115611d05575f8155600101611d0a565b80356001600160a01b03811681146109f0575f80fd5b5f805f60608486031215611d45575f80fd5b611d4e84611d1d565b9250611d5c60208501611d1d565b9150604084013590509250925092565b5f60208284031215611d7c575f80fd5b81356001600160e01b031981168114611740575f80fd5b5f60208284031215611da3575f80fd5b81358015158114611740575f80fd5b5f60208284031215611dc2575f80fd5b5035919050565b803563ffffffff811681146109f0575f80fd5b5f60208284031215611dec575f80fd5b61174082611dc9565b602080825282518282018190525f9190848201906040850190845b81811015611e2f57835160ff1683529284019291840191600101611e10565b50909695505050505050565b5f60208284031215611e4b575f80fd5b61174082611d1d565b5f8060408385031215611e65575f80fd5b82359150611e7560208401611d1d565b90509250929050565b5f8083601f840112611e8e575f80fd5b5081356001600160401b03811115611ea4575f80fd5b602083019150836020828501011115611ebb575f80fd5b9250929050565b5f805f60408486031215611ed4575f80fd5b83356001600160401b03811115611ee9575f80fd5b611ef586828701611e7e565b909790965060209590950135949350505050565b5f60608284031215611f19575f80fd5b50919050565b5f8083601f840112611f2f575f80fd5b5081356001600160401b03811115611f45575f80fd5b6020830191508360208260061b8501011115611ebb575f80fd5b5f805f805f805f60e0888a031215611f75575f80fd5b611f7f8989611f09565b965060608801356001600160401b0380821115611f9a575f80fd5b611fa68b838c01611f1f565b909850965060808a0135955060a08a0135915080821115611fc5575f80fd5b50611fd28a828b01611e7e565b989b979a5095989497959660c090950135949350505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561202157612021611feb565b60405290565b604051601f8201601f191681016001600160401b038111828210171561204f5761204f611feb565b604052919050565b80356001600160401b03811681146109f0575f80fd5b803561ffff811681146109f0575f80fd5b80356001600160801b03811681146109f0575f80fd5b5f60208083850312156120a5575f80fd5b82356001600160401b03808211156120bb575f80fd5b818501915085601f8301126120ce575f80fd5b8135818111156120e0576120e0611feb565b6120ee848260051b01612027565b818152848101925060c091820284018501918883111561210c575f80fd5b938501935b8285101561219c5780858a031215612127575f80fd5b61212f611fff565b61213886611dc9565b8152612145878701612057565b878201526040612156818801612057565b90820152606061216787820161206d565b90820152608061217887820161207e565b9082015260a061218987820161207e565b9082015284529384019392850192612111565b50979650505050505050565b5f805f805f8060e087890312156121bd575f80fd5b6121c78888611f09565b95506121d560608801611dc9565b94506121e360808801611d1d565b935060a08701356001600160401b038111156121fd575f80fd5b61220989828a01611f1f565b979a969950949794969560c090950135949350505050565b5f805f805f60808688031215612235575f80fd5b61223e86611dc9565b945061224c60208701611d1d565b93506040860135925060608601356001600160401b0381111561226d575f80fd5b61227988828901611e7e565b969995985093965092949392505050565b5f805f805f805f805f60e08a8c0312156122a2575f80fd5b6122ab8a611d1d565b98506122b960208b01611d1d565b975060408a013596506122ce60608b0161206d565b955060808a01356001600160401b03808211156122e9575f80fd5b6122f58d838e01611e7e565b909750955060a08c013591508082111561230d575f80fd5b5061231a8c828d01611e7e565b9a9d999c50979a9699959894979660c00135949350505050565b5f6101008284031215611f19575f80fd5b5f805f8060608587031215612358575f80fd5b84356001600160401b038082111561236e575f80fd5b61237a88838901611f1f565b9096509450602087013593506040870135915080821115612399575f80fd5b506123a687828801612334565b91505092959194509250565b5f805f604084860312156123c4575f80fd5b6123cd84611d1d565b925060208401356001600160401b038111156123e7575f80fd5b6123f386828701611e7e565b9497909650939450505050565b5f60208284031215612410575f80fd5b6117408261206d565b5f805f6040848603121561242b575f80fd5b61243484611dc9565b925060208401356001600160401b038082111561244f575f80fd5b818601915086601f830112612462575f80fd5b813581811115612470575f80fd5b8760208260051b8501011115612484575f80fd5b6020830194508093505050509250925092565b5f602082840312156124a7575f80fd5b81356001600160401b038111156124bc575f80fd5b6124c884828501612334565b949350505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f61250b6040830185876124d0565b9050826020830152949350505050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f919060409081850190868401855b828110156125be578151805163ffffffff168552868101516001600160401b039081168887015286820151168686015260608082015161ffff16908601526080808201516001600160801b039081169187019190915260a091820151169085015260c0909301929085019060010161254b565b5091979650505050505050565b80546001600160401b03808216845261ffff8260401c1660208501526001600160801b03808360501c16604086015260018401549250808316606086015250808260801c16608085015250505050565b5f61016060018060a01b0380885116845263ffffffff6020890151166020850152806040890151166040850152506060870151606084015261ffff608088015116608084015261266e60a08401876125cb565b8061014084015261129e81840185876124d0565b5f60208284031215612692575f80fd5b5051919050565b6001600160a01b038981168252881660208201526040810187905261ffff8616606082015260c0608082018190525f906126d690830186886124d0565b82810360a08401526126e98185876124d0565b9b9a5050505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107a7576107a76126f8565b5f808335601e19843603018112612734575f80fd5b8301803591506001600160401b0382111561274d575f80fd5b602001915036819003821315611ebb575f80fd5b63ffffffff61276f82611dc9565b168252602081013560208301526001600160401b0361279060408301612057565b1660408301525050565b6127a48189612761565b60018060a01b038716606082015285608082015260e060a08201525f6127ce60e0830186886124d0565b82810360c08401526127e18185876124d0565b9a9950505050505050505050565b84516001600160a01b0390811682526020808701519091169082015260408086015161ffff16908201525f61012061282a60608401876125cb565b8061010084015261129e81840185876124d0565b5f6001600160401b03808316818103612859576128596126f8565b6001019392505050565b5f8085851115612871575f80fd5b8386111561287d575f80fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156128b25780818660040360031b1b83161692505b505092915050565b5f604082840312156128ca575f80fd5b604051604081018181106001600160401b03821117156128ec576128ec611feb565b6040526128f883611d1d565b8152602083013560208201528091505092915050565b808201808211156107a7576107a76126f8565b5f815180845260208085019450602084015f5b83811015612952578151151587529582019590820190600101612934565b509495945050505050565b5f60e0820161296c838a612761565b63ffffffff881660608401526001600160a01b03878116608085015260e060a085015290859052859061010084015f5b878110156129cd57826129ae85611d1d565b168252602084810135908301526040938401939091019060010161299c565b5084810360c08601526126e98187612921565b5f6001600160401b038216806129f8576129f86126f8565b5f190192915050565b803560208310156107a7575f19602084900360031b1b169291505056fea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220ae884e952b7b614b1eca06ee67542e48026e58cfc905e7cbb8ae29326d2b99b164736f6c63430008160033","sourceMap":"881:6700:66:-:0;;;1175:404;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1231:7:113;:15;;-1:-1:-1;;;;;;1699:44:73;-1:-1:-1;;;1699:44:73;;;1753:9;:22;;-1:-1:-1;;;;;;1753:22:73;-1:-1:-1;;;;;1753:22:73;;;;;;;;;;1388:12:66;;1753:22:73;;1414:5:66;;1421:10;;1433:7;;1790:26:73;;;1786:144;;1832:42;2232:4:98;1863:10:73;1832;:42::i;:::-;;1786:144;1945:9;1940:120;1964:12;:19;1960:1;:23;1940:120;;;2004:45;654:29;2033:12;2046:1;2033:15;;;;;;;;:::i;:::-;;;;;;;2004:10;;;:45;;:::i;:::-;-1:-1:-1;1985:3:73;;1940:120;;;;2075:9;2070:104;2094:7;:14;2090:1;:18;2070:104;;;2129:34;858:23;2152:7;2160:1;2152:10;;;;;;;;:::i;2129:34::-;-1:-1:-1;2110:3:73;;2070:104;;;-1:-1:-1;;1857:1:114;2061:7;:21;;;1452:8:66::1;:20:::0;;-1:-1:-1;;;;;;1452:20:66::1;-1:-1:-1::0;;;;;1452:20:66;::::1;::::0;;::::1;::::0;;;1495:37:::1;::::0;;-1:-1:-1;;;1495:37:66;;;;1452:20;;-1:-1:-1;1495:35:66::1;::::0;-1:-1:-1;1495:37:66;;::::1;::::0;-1:-1:-1;1495:37:66::1;::::0;-1:-1:-1;1495:37:66;;;;;;;;1452:20;1495:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1482:10;:50:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;1482:50:66::1;-1:-1:-1::0;;;;1482:50:66;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;1542:13:66::1;:30:::0;;-1:-1:-1;;;;;1542:30:66;;::::1;-1:-1:-1::0;;;;;;1542:30:66;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;881:6700:66;;-1:-1:-1;;881:6700:66;5627:259:73;5707:4;727:22;5727:5;:18;:47;;;;-1:-1:-1;2931:4:98;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:98;;;;;;;;;;;;5749:25:73;5727:47;5723:93;;;5792:13;5790:15;;5792:13;;5790:15;;-1:-1:-1;;;5790:15:73;;-1:-1:-1;;;;;5790:15:73;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;5790:15:73;;;;;-1:-1:-1;;;;;5790:15:73;;;;;;5723:93;5825:33;5842:5;5849:8;5825:16;:33::i;:::-;;5875:4;5868:11;;5627:259;;;;;:::o;6179:316:98:-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:98;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:98;;;;;;;;;:36;;-1:-1:-1;;6315:36:98;6347:4;6315:36;;;6397:12;735:10:110;;656:96;6397:12:98;-1:-1:-1;;;;;6370:40:98;6388:7;-1:-1:-1;;;;;6370:40:98;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:98;6424:11;;6272:217;-1:-1:-1;6473:5:98;6466:12;;14:177:122;93:13;;-1:-1:-1;;;;;135:31:122;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:929;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:122;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;924:4;956:15;;;952:26;;;912:17;;;;-1:-1:-1;990:15:122;;;987:35;;;1018:1;1015;1008:12;987:35;1054:4;1046:6;1042:17;1031:28;;1068:159;1084:6;1079:3;1076:15;1068:159;;;1150:34;1180:3;1150:34;:::i;:::-;1138:47;;1205:12;;;;1101;;;;1068:159;;;1245:6;328:929;-1:-1:-1;;;;;;;328:929:122:o;1262:957::-;1427:6;1435;1443;1451;1459;1467;1520:3;1508:9;1499:7;1495:23;1491:33;1488:53;;;1537:1;1534;1527:12;1488:53;1560:40;1590:9;1560:40;:::i;:::-;1550:50;;1619:49;1664:2;1653:9;1649:18;1619:49;:::i;:::-;1712:2;1697:18;;1691:25;1609:59;;-1:-1:-1;;;;;;1765:14:122;;;1762:34;;;1792:1;1789;1782:12;1762:34;1815:72;1879:7;1870:6;1859:9;1855:22;1815:72;:::i;:::-;1805:82;;1906:49;1951:2;1940:9;1936:18;1906:49;:::i;:::-;1896:59;;1974:50;2019:3;2008:9;2004:19;1974:50;:::i;:::-;1964:60;;2070:3;2059:9;2055:19;2049:26;2033:42;;2100:2;2090:8;2087:16;2084:36;;;2116:1;2113;2106:12;2084:36;;2139:74;2205:7;2194:8;2183:9;2179:24;2139:74;:::i;:::-;2129:84;;;1262:957;;;;;;;;:::o;2224:127::-;2285:10;2280:3;2276:20;2273:1;2266:31;2316:4;2313:1;2306:15;2340:4;2337:1;2330:15;2356:280;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;2526:9;2520:16;2576:10;2569:5;2565:22;2558:5;2555:33;2545:61;;2602:1;2599;2592:12;2545:61;2625:5;2356:280;-1:-1:-1;;;2356:280:122:o;2641:306::-;2679:3;-1:-1:-1;;;;;2749:14:122;;;-1:-1:-1;;;;;;2775:15:122;;2772:138;;2832:10;2827:3;2823:20;2820:1;2813:31;2867:4;2864:1;2857:15;2895:4;2892:1;2885:15;2772:138;2939:1;2926:15;;2641:306;-1:-1:-1;;;2641:306:122:o;:::-;881:6700:66;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610206575f3560e01c8063724e78da11610113578063c358de0a1161009d578063cd88b9031161006d578063cd88b90314610688578063cfc32570146106a7578063d2ae2104146106ba578063d547741f146106f8578063e395eb5c14610717575f80fd5b8063c358de0a14610607578063c416aa5114610626578063c7b2370b1461064a578063c8f8dcd114610669575f80fd5b806391d14854116100e357806391d14854146104ea5780639e94496514610509578063a217fddf146105b6578063c015bb7d146105c9578063c2803b2c146105e8575f80fd5b8063724e78da14610486578063741bef1a146104a55780637cd44734146104c45780638624ba07146104d7575f80fd5b80633146646a11610194578063475b6d9e11610164578063475b6d9e146103e75780635c975abb146103fa5780635e280f1114610411578063709eb66414610448578063717e8a4214610467575f80fd5b80633146646a1461037757806336568abe146103965780633927c075146103b55780633d85ac33146103c8575f80fd5b806316c38b3c116101da57806316c38b3c146102b2578063248a9ca3146102d157806326e67a371461030d5780632de11376146103395780632f2ff15d14610358575f80fd5b8062bf2e801461020a57806301e336671461024357806301ffc9a7146102645780631095b6d714610293575b5f80fd5b348015610215575f80fd5b5060015461022b90600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561024e575f80fd5b5061026261025d366004611d33565b61074f565b005b34801561026f575f80fd5b5061028361027e366004611d6c565b610777565b604051901515815260200161023a565b34801561029e575f80fd5b506102626102ad366004611d33565b6107ad565b3480156102bd575f80fd5b506102626102cc366004611d93565b6108ba565b3480156102dc575f80fd5b506102ff6102eb366004611db2565b5f9081526020819052604090206001015490565b60405190815260200161023a565b348015610318575f80fd5b5061032c610327366004611ddc565b6108de565b60405161023a9190611df5565b348015610344575f80fd5b50610283610353366004611e3b565b610961565b348015610363575f80fd5b50610262610372366004611e54565b6109f5565b348015610382575f80fd5b50610262610391366004611ec2565b610a19565b3480156103a1575f80fd5b506102626103b0366004611e54565b610aa3565b6102626103c3366004611f5f565b610abc565b3480156103d3575f80fd5b506102626103e2366004612094565b610b71565b6102626103f53660046121a8565b610ce4565b348015610405575f80fd5b5060015460ff16610283565b34801561041c575f80fd5b50600654610430906001600160a01b031681565b6040516001600160a01b03909116815260200161023a565b348015610453575f80fd5b506102ff610462366004612221565b610d25565b348015610472575f80fd5b506102ff610481366004612221565b610e28565b348015610491575f80fd5b506102626104a0366004611e3b565b610f4f565b3480156104b0575f80fd5b50600254610430906001600160a01b031681565b6102626104d236600461228a565b610fb4565b6102626104e5366004612345565b61105a565b3480156104f5575f80fd5b50610283610504366004611e54565b61115e565b348015610514575f80fd5b50610573610523366004611ddc565b60056020525f9081526040902080546001909101546001600160401b038083169261ffff600160401b820416926001600160801b03600160501b90920482169291811691600160801b9091041685565b604080516001600160401b03968716815261ffff90951660208601526001600160801b03938416908501529116606083015291909116608082015260a00161023a565b3480156105c1575f80fd5b506102ff5f81565b3480156105d4575f80fd5b506102ff6105e33660046123b2565b611186565b3480156105f3575f80fd5b50600754610430906001600160a01b031681565b348015610612575f80fd5b50610262610621366004612400565b6112a9565b348015610631575f80fd5b506001546104309061010090046001600160a01b031681565b348015610655575f80fd5b50610262610664366004611e3b565b611310565b348015610674575f80fd5b506102ff6106833660046123b2565b61137d565b348015610693575f80fd5b506102626106a2366004612419565b611474565b6102626106b5366004612497565b6114aa565b3480156106c5575f80fd5b506001546106e090600160a81b90046001600160401b031681565b6040516001600160401b03909116815260200161023a565b348015610703575f80fd5b50610262610712366004611e54565b611568565b348015610722575f80fd5b5060065461073a90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161023a565b5f80516020612a1f8339815191526107668161158c565b610771848484611599565b50505050565b5f6001600160e01b03198216637965db0b60e01b14806107a757506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f80516020612a1f8339815191526107c48161158c565b6107ee7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de8561115e565b61080b57604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be522906044015f604051808303815f87803b158015610852575f80fd5b505af1158015610864573d5f803e3d5ffd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b5f6108c48161158c565b81156108d6576108d26115c1565b5050565b6108d2611615565b63ffffffff81165f9081526003602090815260409182902080548351818402810184019094528084526060939283018282801561095557602002820191905f5260205f20905f905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109265790505b50505050509050919050565b5f61098c7f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e48361115e565b1561099857505f919050565b600154600160a81b90046001600160401b031615806109dc57506109dc7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8361115e565b156109e957506001919050565b505f919050565b919050565b5f82815260208190526040902060010154610a0f8161158c565b610771838361164e565b5f80516020612a1f833981519152610a308161158c565b610a386116e3565b600754604051631cca20df60e31b81526001600160a01b039091169063e65106f890610a6c908790879087906004016124f8565b5f604051808303815f87803b15