@layerzerolabs/oapp-alt-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OAppAlt) for EndpointV2Alt implementation
1 lines • 245 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_localEidV2","type":"uint32","internalType":"uint32"},{"name":"_vid","type":"uint32","internalType":"uint32"},{"name":"_messageLibs","type":"address[]","internalType":"address[]"},{"name":"_priceFeed","type":"address","internalType":"address"},{"name":"_signers","type":"address[]","internalType":"address[]"},{"name":"_quorum","type":"uint64","internalType":"uint64"},{"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":"_param","type":"tuple","internalType":"struct ILayerZeroDVN.AssignJobParam","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"packetHeader","type":"bytes","internalType":"bytes"},{"name":"payloadHash","type":"bytes32","internalType":"bytes32"},{"name":"confirmations","type":"uint64","internalType":"uint64"},{"name":"sender","type":"address","internalType":"address"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"assignJob","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"","type":"uint16","internalType":"uint16"},{"name":"_confirmations","type":"uint64","internalType":"uint64"},{"name":"_sender","type":"address","internalType":"address"}],"outputs":[{"name":"totalFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"assignJob","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"_cmd","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"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":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"_params","type":"tuple[]","internalType":"struct ExecuteParam[]","components":[{"name":"vid","type":"uint32","internalType":"uint32"},{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"expiration","type":"uint256","internalType":"uint256"},{"name":"signatures","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getFee","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_confirmations","type":"uint64","internalType":"uint64"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"","type":"uint16","internalType":"uint16"},{"name":"_confirmations","type":"uint64","internalType":"uint64"},{"name":"_sender","type":"address","internalType":"address"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"_cmd","type":"bytes","internalType":"bytes"},{"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":"hashCallData","inputs":[{"name":"_vid","type":"uint32","internalType":"uint32"},{"name":"_target","type":"address","internalType":"address"},{"name":"_callData","type":"bytes","internalType":"bytes"},{"name":"_expiration","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"localEidV2","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"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":"quorum","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"quorumChangeAdmin","inputs":[{"name":"_param","type":"tuple","internalType":"struct ExecuteParam","components":[{"name":"vid","type":"uint32","internalType":"uint32"},{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"expiration","type":"uint256","internalType":"uint256"},{"name":"signatures","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"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 IDVN.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","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":"setQuorum","inputs":[{"name":"_quorum","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSigner","inputs":[{"name":"_signer","type":"address","internalType":"address"},{"name":"_active","type":"bool","internalType":"bool"}],"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":"signerSize","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"signers","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[{"name":"active","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"usedHashes","inputs":[{"name":"executableHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"used","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifySignatures","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signatures","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint8","internalType":"enum MultiSigMock.Errors"}],"stateMutability":"view"},{"type":"function","name":"vid","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"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":"withdrawFeeFromUlnV2","inputs":[{"name":"_lib","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address payable"},{"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":"ExecuteFailed","inputs":[{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"HashAlreadyUsed","inputs":[{"name":"param","type":"tuple","indexed":false,"internalType":"struct ExecuteParam","components":[{"name":"vid","type":"uint32","internalType":"uint32"},{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"expiration","type":"uint256","internalType":"uint256"},{"name":"signatures","type":"bytes","internalType":"bytes"}]},{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"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":"SetDstConfig","inputs":[{"name":"params","type":"tuple[]","indexed":false,"internalType":"struct IDVN.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}]}],"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":"UpdateQuorum","inputs":[{"name":"_quorum","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"UpdateSigner","inputs":[{"name":"_signer","type":"address","indexed":false,"internalType":"address"},{"name":"_active","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"VerifierFeePaid","inputs":[{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VerifySignaturesFailed","inputs":[{"name":"idx","type":"uint256","indexed":false,"internalType":"uint256"}],"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":"DVN_DuplicatedHash","inputs":[{"name":"executableHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"DVN_InstructionExpired","inputs":[]},{"type":"error","name":"DVN_InvalidRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"DVN_InvalidSignatures","inputs":[]},{"type":"error","name":"DVN_InvalidTarget","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"DVN_InvalidVid","inputs":[{"name":"vid","type":"uint32","internalType":"uint32"}]},{"type":"error","name":"DVN_OnlySelf","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"MultiSig_OnlySigner","inputs":[]},{"type":"error","name":"MultiSig_QuorumIsZero","inputs":[]},{"type":"error","name":"MultiSig_SignersSizeIsLessThanQuorum","inputs":[{"name":"signersSize","type":"uint64","internalType":"uint64"},{"name":"quorum","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"MultiSig_StateAlreadySet","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"active","type":"bool","internalType":"bool"}]},{"type":"error","name":"MultiSig_UnorderedSigners","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":"0x60c060405234801562000010575f80fd5b5060405162003a8d38038062003a8d8339810160408190526200003391620004ca565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b03861617905582828686612ee05f865f5b8551811015620000d357620000c97f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000b557620000b5620005a5565b60200260200101516200027860201b60201c565b5060010162000071565b505f5b815181101562000124576200011a7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000b557620000b5620005a5565b50600101620000d6565b505050505050806001600160401b03165f036200015457604051635f86e17760e01b815260040160405180910390fd5b806001600160401b0316825110156200019a5781516040516378e2c15760e11b81526001600160401b039182166004820152908216602482015260440160405180910390fd5b5f805b835181101562000229575f848281518110620001bd57620001bd620005a5565b60200260200101519050826001600160a01b0316816001600160a01b031611620001fa576040516305fa937f60e11b815260040160405180910390fd5b6001600160a01b0381165f908152600460205260409020805460ff19166001908117909155909250016200019d565b50509051600580546001600160401b0393841668010000000000000000026001600160801b0319909116939092169290921717905550505063ffffffff92831660805250501660a052620005f3565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca83148015620002c957505f838152602081815260408083206001600160a01b038616845290915290205460ff16155b15620003165760018054601590620002f190600160a81b90046001600160401b0316620005b9565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6200032283836200032e565b50600190505b92915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620003d1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620003883390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000328565b505f62000328565b805163ffffffff81168114620003ed575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114620003ed575f80fd5b5f82601f8301126200042d575f80fd5b815160206001600160401b03808311156200044c576200044c620003f2565b8260051b604051601f19603f83011681018181108482111715620004745762000474620003f2565b604052938452602081870181019490810192508785111562000494575f80fd5b6020870191505b84821015620004bf57620004af8262000406565b835291830191908301906200049b565b979650505050505050565b5f805f805f805f60e0888a031215620004e1575f80fd5b620004ec88620003d9565b9650620004fc60208901620003d9565b60408901519096506001600160401b038082111562000519575f80fd5b620005278b838c016200041d565b96506200053760608b0162000406565b955060808a01519150808211156200054d575f80fd5b6200055b8b838c016200041d565b945060a08a01519150808216821462000572575f80fd5b60c08a01519193508082111562000587575f80fd5b50620005968a828b016200041d565b91505092959891949750929550565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038281166002600160401b03198101620005e957634e487b7160e01b5f52601160045260245ffd5b6001019392505050565b60805160a05161345c620006315f395f81816107eb01528181611cc00152611df001525f818161073f0152818161124c0152611b05015261345c5ff3fe608060405260043610610248575f3560e01c806395d376d711610134578063cd88b903116100b3578063e395eb5c11610078578063e395eb5c146107da578063f010cb231461080d578063f3b4ebd01461082c578063f42ed2ed1461084b578063fd62e7501461085e578063fdb9b0f11461087d575f80fd5b8063cd88b9031461070f578063cf34c7681461072e578063d2ae210414610776578063d547741f1461079c578063dafe0ccc146107bb575f80fd5b8063c358de0a116100f9578063c358de0a14610661578063c416aa5114610680578063c5e193cd146106a4578063c7a823e0146106c3578063c7b2370b146106f0575f80fd5b806395d376d71461056b5780639e9449651461057e578063a217fddf14610601578063aef18bf714610614578063b143044b14610642575f80fd5b806330bb3aac116101cb5780635c975abb116101905780635c975abb14610492578063724e78da146104a9578063736c0d5b146104c8578063741bef1a146104f65780638585c9451461052d57806391d148541461054c575f80fd5b806330bb3aac146103f757806331cb61051461041657806336568abe1461043557806352d3b871146104545780635553fb8e14610473575f80fd5b80631703a018116102115780631703a01814610313578063248a9ca31461035157806326e67a371461038d5780632de11376146103b95780632f2ff15d146103d8575f80fd5b8062bf2e801461024c57806301e336671461028557806301ffc9a7146102a65780631095b6d7146102d557806316c38b3c146102f4575b5f80fd5b348015610257575f80fd5b5060015461026d90600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b348015610290575f80fd5b506102a461029f3660046127cb565b61089c565b005b3480156102b1575f80fd5b506102c56102c0366004612809565b6108c4565b604051901515815260200161027c565b3480156102e0575f80fd5b506102a46102ef3660046127cb565b6108fa565b3480156102ff575f80fd5b506102a461030e366004612846565b6109f5565b34801561031e575f80fd5b5060055461033990600160401b90046001600160401b031681565b6040516001600160401b03909116815260200161027c565b34801561035c575f80fd5b5061037f61036b36600461285f565b5f9081526020819052604090206001015490565b60405190815260200161027c565b348015610398575f80fd5b506103ac6103a7366004612889565b610a19565b60405161027c91906128a2565b3480156103c4575f80fd5b506102c56103d33660046128e8565b610a9c565b3480156103e3575f80fd5b506102a46103f2366004612903565b610b1d565b348015610402575f80fd5b5061037f61041136600461298b565b610bee565b348015610421575f80fd5b506102a46104303660046129fd565b610d02565b348015610440575f80fd5b506102a461044f366004612903565b610d2c565b34801561045f575f80fd5b506102a461046e366004612a30565b610d45565b34801561047e575f80fd5b5061037f61048d366004612aaf565b610eba565b34801561049d575f80fd5b5060015460ff166102c5565b3480156104b4575f80fd5b506102a46104c33660046128e8565b610fce565b3480156104d3575f80fd5b506102c56104e23660046128e8565b60046020525f908152604090205460ff1681565b348015610501575f80fd5b50600254610515906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b348015610538575f80fd5b506102a4610547366004612b02565b61103b565b348015610557575f80fd5b506102c5610566366004612903565b611067565b61037f610579366004612b31565b61108f565b348015610589575f80fd5b506105d0610598366004612889565b60066020525f90815260409020546001600160401b03811690600160401b810461ffff1690600160501b90046001600160801b031683565b604080516001600160401b03909416845261ffff90921660208401526001600160801b03169082015260600161027c565b34801561060c575f80fd5b5061037f5f81565b34801561061f575f80fd5b506102c561062e36600461285f565b60076020525f908152604090205460ff1681565b34801561064d575f80fd5b506102a461065c366004612bd4565b6111fd565b34801561066c575f80fd5b506102a461067b366004612c12565b6114a5565b34801561068b575f80fd5b506001546105159061010090046001600160a01b031681565b3480156106af575f80fd5b5061037f6106be366004612aaf565b61150c565b3480156106ce575f80fd5b506106e26106dd366004612c2b565b611673565b60405161027c929190612c79565b3480156106fb575f80fd5b506102a461070a3660046128e8565b611843565b34801561071a575f80fd5b506102a4610729366004612cab565b6118b0565b348015610739575f80fd5b506107617f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161027c565b348015610781575f80fd5b5060015461033990600160a81b90046001600160401b031681565b3480156107a7575f80fd5b506102a46107b6366004612903565b6118ed565b3480156107c6575f80fd5b506102a46107d53660046127cb565b61199d565b3480156107e5575f80fd5b506107617f000000000000000000000000000000000000000000000000000000000000000081565b348015610818575f80fd5b5061037f610827366004612cec565b611a4b565b348015610837575f80fd5b506102a4610846366004612d51565b611a86565b61037f610859366004612d8a565b611c2f565b348015610869575f80fd5b50600554610339906001600160401b031681565b348015610888575f80fd5b5061037f610897366004612d8a565b611d76565b5f805160206133e78339815191526108b381611ea3565b6108be848484611ead565b50505050565b5f6001600160e01b03198216637965db0b60e01b14806108f457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f805160206133e783398151915261091181611ea3565b6109285f805160206133c783398151915285611067565b61094557604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be522906044015f604051808303815f87803b15801561098c575f80fd5b505af115801561099e573d5f803e3d5ffd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb925060600190505b60405180910390a150505050565b5f6109ff81611ea3565b8115610a1157610a0d611ed5565b5050565b610a0d611f29565b63ffffffff81165f90815260036020908152604091829020805483518184028101840190945280845260609392830182828015610a9057602002820191905f5260205f20905f905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610a615790505b50505050509050919050565b5f610ac77f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e483611067565b15610ad357505f919050565b600154600160a81b90046001600160401b03161580610b045750610b045f8051602061340783398151915283611067565b15610b1157506001919050565b505f919050565b919050565b815f80516020613407833981519152811480610b5857507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80610b6f57505f805160206133c783398151915281145b15610b9957303314610b9457604051637d5d391d60e11b815260040160405180910390fd5b610be4565b5f805160206133e78339815191528103610bc357610b945f805160206133e7833981519152611ea3565b604051634a7ee1b960e11b8152600481018290526024015b60405180910390fd5b6108be8383611f62565b5f83610bf981610a9c565b610c1657604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825263ffffffff8a1660208084018290526001600160401b03808c16858701528a84166060860152600554600160401b900416608085015260015461ffff600160e81b82041660a08601525f9283526006909152908490209351637bfa20a960e01b8152929361010090910490911691637bfa20a991610cb7918591908a908a90600401612ee4565b602060405180830381865afa158015610cd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf69190612f13565b98975050505050505050565b303314610d2257604051637d5d391d60e11b815260040160405180910390fd5b610a0d8282611fe4565b60405163dec9f03160e01b815260040160405180910390fd5b5f805160206133e7833981519152610d5c81611ea3565b5f5b82811015610e7b5736848483818110610d7957610d79612f2a565b90506080020190506040518060600160405280826020016020810190610d9f9190612b02565b6001600160401b03168152602001610dbd6060840160408501612c12565b61ffff168152602001610dd66080840160608501612f54565b6001600160801b0316905260065f610df16020850185612889565b63ffffffff16815260208082019290925260409081015f20835181549385015194909201516001600160801b0316600160501b026fffffffffffffffffffffffffffffffff60501b1961ffff909516600160401b0269ffffffffffffffffffff199094166001600160401b0390931692909217929092179290921691909117905550600101610d5e565b507f7dd21e42791b013d1929e86f0c59085e4fca24251f0f1aa81917b3b1611766e08383604051610ead929190612f6d565b60405180910390a1505050565b5f81610ec581610a9c565b610ee257604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825261ffff808a1660208085018290526001600160401b03808b16868801528985166060870152600554600160401b9004166080860152600154600160e81b810490931660a08601525f91825260068152858220865191820187529181529451637bfa20a960e01b8152939461010090920490921692637bfa20a992610f84928692600401613043565b602060405180830381865afa158015610f9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc39190612f13565b979650505050505050565b5f805160206133e7833981519152610fe581611ea3565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b30331461105b57604051637d5d391d60e11b815260040160405180910390fd5b6110648161213d565b50565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f805160206133c78339815191526110a781611ea3565b6110b760a08601608087016128e8565b6110c081610a9c565b6110dd57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c081019091526002546001600160a01b031681525f9060208082019061110a908a018a612889565b63ffffffff16815260200161112560808a0160608b01612b02565b6001600160401b0316815260200161114360a08a0160808b016128e8565b6001600160a01b039081168252600554600160401b90046001600160401b0316602080840191909152600154600160e81b810461ffff16604090940193909352929350610100909104169063df2b057e9083906006905f906111a7908d018d612889565b63ffffffff1663ffffffff1681526020019081526020015f2089896040518563ffffffff1660e01b81526004016111e19493929190612ee4565b6020604051808303815f875af1158015610f9f573d5f803e3d5ffd5b5f805160206133e783398151915261121481611ea3565b5f5b828110156108be573684848381811061123157611231612f2a565b9050602002810190611243919061307b565b905063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166112796020830183612889565b63ffffffff161461128a575061149d565b4281606001351161129b575061149d565b5f6112d36112ac6020840184612889565b6112bc60408501602086016128e8565b6112c96040860186613099565b8660600135611a4b565b90505f6112e7826106dd6080860186613099565b5090508061132a576040518481527fd6d90193101048cc1b6edcdc2348f5acf7a4a4a97d3e7b668b74cb7602ab3ebc9060200160405180910390a150505061149d565b5f61134961133b6040860186613099565b611344916130db565b61220a565b905080156113c2575f8381526007602052604090205460ff16156113a9577f9bb9bddbdf537a2104255307230b323d7982f4512ee8e5bd15df62ddca50ab97848460405161139892919061314c565b60405180910390a15050505061149d565b5f838152600760205260409020805460ff191660011790555b5f806113d460408701602088016128e8565b6001600160a01b03166113ea6040880188613099565b6040516113f89291906131e6565b5f604051808303815f865af19150503d805f8114611431576040519150601f19603f3d011682016040523d82523d5f602084013e611436565b606091505b50915091508161149657821561145c575f858152600760205260409020805460ff191690555b7fdc8cdd96296241bbefda4a8e18ad2e0985a8da6495b34d409cfc4c886ee3b0cf878260405161148d9291906131f5565b60405180910390a15b5050505050505b600101611216565b5f805160206133e78339815191526114bc81611ea3565b6001805461ffff60e81b1916600160e81b61ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d9060200161102f565b5f5f805160206133c783398151915261152481611ea3565b8261152e81610a9c565b61154b57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825261ffff808b1660208085018290526001600160401b03808c16868801528a85166060870152600554600160401b9004166080860152600154600160e81b810490931660a08601525f91825260068152858220865191820187529181529451636f9582bf60e11b815293946101009092049092169263df2b057e926115ed928692600401613043565b6020604051808303815f875af1158015611609573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162d9190612f13565b93507f87e46b0a6199bc734632187269a103c05714ee0adae5b28f30723955724f37ef8460405161166091815260200190565b60405180910390a1505050949350505050565b6005545f90819061169590600160401b90046001600160401b03166041613221565b83146116a657505f9050600161183b565b5f6116fd866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018290525f90605c01604051602081830303815290604052805190602001209050919050565b90505f805b600554600160401b90046001600160401b031681101561183057365f888861172b856041613221565b90611737866001613238565b611742906041613221565b9261174f9392919061324b565b915091505f806117948785858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061225f92505050565b5090925090505f8160038111156117ad576117ad612c65565b146117c5575f6001985098505050505050505061183b565b856001600160a01b0316826001600160a01b0316116117f1575f6002985098505050505050505061183b565b6001600160a01b0382165f9081526004602052604090205460ff16611823575f6003985098505050505050505061183b565b5093505050600101611702565b5060015f9350935050505b935093915050565b5f805160206133e783398151915261185a81611ea3565b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e09060200161102f565b5f805160206133e78339815191526118c781611ea3565b63ffffffff84165f9081526003602052604090206118e69084846126ff565b5050505050565b815f8051602061340783398151915281148061192857507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b8061193f57505f805160206133c783398151915281145b156119695730331461196457604051637d5d391d60e11b815260040160405180910390fd5b611993565b5f805160206133e78339815191528103610bc3576119645f805160206133e7833981519152611ea3565b6108be83836122a8565b5f805160206133e78339815191526119b481611ea3565b6119cb5f805160206133c783398151915285611067565b6119e857604051635ee08b9760e01b815260040160405180910390fd5b6040516303d8c5ef60e11b81526001600160a01b038481166004830152602482018490528516906307b18bde906044015f604051808303815f87803b158015611a2f575f80fd5b505af1158015611a41573d5f803e3d5ffd5b5050505050505050565b5f8585838686604051602001611a65959493929190613272565b60405160208183030381529060405280519060200120905095945050505050565b42816060013511611aaa57604051630bbaf26360e01b815260040160405180910390fd5b30611abb60408301602084016128e8565b6001600160a01b031614611afe57611ad960408201602083016128e8565b604051631ce0bfcd60e01b81526001600160a01b039091166004820152602401610bdb565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611b326020830183612889565b63ffffffff1614611b6c57611b4a6020820182612889565b60405163134bf0e160e11b815263ffffffff9091166004820152602401610bdb565b5f611b7d6112ac6020840184612889565b90505f611b91826106dd6080860186613099565b50905080611bb257604051630af656f760e11b815260040160405180910390fd5b5f8281526007602052604090205460ff1615611be457604051634eb522d360e11b815260048101839052602401610bdb565b5f8281526007602052604090819020805460ff191660011790556108be905f805160206133e783398151915290611c1d90860186613099565b810190611c2a91906128e8565b611f62565b5f5f805160206133c7833981519152611c4781611ea3565b88611c5181610a9c565b611c6e57604051634ab5ebcd60e01b815260040160405180910390fd5b604080516080810182526002546001600160a01b0390811682528c8116602080840191909152600554600160401b90046001600160401b031683850152600154600160e81b810461ffff1660608501527f000000000000000000000000000000000000000000000000000000000000000063ffffffff165f908152600690925290849020935163bbc5a33b60e01b815292936101009091049091169163bbc5a33b91611d27918591908d908d908d908d906004016132b7565b6020604051808303815f875af1158015611d43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d679190612f13565b9b9a5050505050505050505050565b5f87611d8181610a9c565b611d9e57604051634ab5ebcd60e01b815260040160405180910390fd5b604080516080810182526002546001600160a01b0390811682528b8116602080840191909152600554600160401b90046001600160401b031683850152600154600160e81b810461ffff1660608501527f000000000000000000000000000000000000000000000000000000000000000063ffffffff165f908152600690925290849020935162d358b360e81b815292936101009091049091169163d358b30091611e56918591908c908c908c908c906004016132b7565b602060405180830381865afa158015611e71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e959190612f13565b9a9950505050505050505050565b611064813361231e565b6001600160a01b038316611eca57611ec58282612357565b505050565b611ec5838383612400565b611edd61243b565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b611f31612461565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611f0c565b5f5f8051602061340783398151915283148015611f865750611f848383611067565b155b15611fd05760018054601590611fab90600160a81b90046001600160401b0316613339565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b611fda8383612484565b5060019392505050565b6001600160a01b0382165f9081526004602052604090205481151560ff909116151503612037576040516302c6469560e51b81526001600160a01b03831660048201528115156024820152604401610bdb565b6001600160a01b0382165f908152600460205260408120805460ff19168315151790558161207c57600554612077906001906001600160401b031661335e565b612093565b600554612093906001600160401b03166001613385565b6005549091506001600160401b03600160401b90910481169082168111156120e1576040516378e2c15760e11b81526001600160401b03808416600483015282166024820152604401610bdb565b6005805467ffffffffffffffff19166001600160401b038416179055604080516001600160a01b038616815284151560208201527f863d338cad74814b108a06288ad5e0e80d56495e0332238b1d2cdcfa0ca8e5ce91016109e7565b806001600160401b03165f0361216657604051635f86e17760e01b815260040160405180910390fd5b6005546001600160401b039081169082168110156121aa576040516378e2c15760e11b81526001600160401b03808316600483015283166024820152604401610bdb565b600580546fffffffffffffffff00000000000000001916600160401b6001600160401b038516908102919091179091556040519081527fb600f3cf7f38a4b49bb0c75f722ef69f7e3e39ef3bb4aa8207fd86e724a232499060200161102f565b5f6001600160e01b03198216630111a9b760e11b1480159061223d57506001600160e01b0319821663ab750e7560e01b14155b80156108f457506001600160e01b0319821663704316e560e01b141592915050565b5f805f8351604103612296576020840151604085015160608601515f1a61228888828585612513565b9550955095505050506122a1565b505081515f91506002905b9250925092565b5f5f80516020613407833981519152831480156122ca57506122ca8383611067565b1561231457600180546015906122ef90600160a81b90046001600160401b03166133a5565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b611fda83836125db565b6123288282611067565b610a0d5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610bdb565b6001600160a01b03821661237e576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123c7576040519150601f19603f3d011682016040523d82523d5f602084013e6123cc565b606091505b5050905080611ec557604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610bdb565b6001600160a01b038216612427576040516306b7a93160e41b815260040160405180910390fd5b611ec56001600160a01b0384168383612644565b60015460ff161561245f5760405163d93c066560e01b815260040160405180910390fd5b565b60015460ff1661245f57604051638dfc202b60e01b815260040160405180910390fd5b5f61248f8383611067565b61250c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556124c43390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016108f4565b505f6108f4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561254c57505f915060039050826125d1565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561259d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166125c857505f9250600191508290506125d1565b92505f91508190505b9450945094915050565b5f6125e68383611067565b1561250c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016108f4565b604080516001600160a01b03841660248201526044808201849052825180830390910181526064909101909152602080820180516001600160e01b031663a9059cbb60e01b1781528251611ec593879390925f9283929183919082885af1806126b2576040513d5f823e3d81fd5b50505f513d915081156126c95780600114156126d6565b6001600160a01b0384163b155b156108be57604051635274afe760e01b81526001600160a01b0385166004820152602401610bdb565b828054828255905f5260205f2090601f01602090048101928215612793579160200282015f5b8382111561276557833560ff1683826101000a81548160ff021916908360ff16021790555092602001926001016020815f01049283019260010302612725565b80156127915782816101000a81549060ff02191690556001016020815f01049283019260010302612765565b505b5061279f9291506127a3565b5090565b5b8082111561279f575f81556001016127a4565b6001600160a01b0381168114611064575f80fd5b5f805f606084860312156127dd575f80fd5b83356127e8816127b7565b925060208401356127f8816127b7565b929592945050506040919091013590565b5f60208284031215612819575f80fd5b81356001600160e01b031981168114612830575f80fd5b9392505050565b80358015158114610b18575f80fd5b5f60208284031215612856575f80fd5b61283082612837565b5f6020828403121561286f575f80fd5b5035919050565b803563ffffffff81168114610b18575f80fd5b5f60208284031215612899575f80fd5b61283082612876565b602080825282518282018190525f9190848201906040850190845b818110156128dc57835160ff16835292840192918401916001016128bd565b50909695505050505050565b5f602082840312156128f8575f80fd5b8135612830816127b7565b5f8060408385031215612914575f80fd5b823591506020830135612926816127b7565b809150509250929050565b80356001600160401b0381168114610b18575f80fd5b5f8083601f840112612957575f80fd5b5081356001600160401b0381111561296d575f80fd5b602083019150836020828501011115612984575f80fd5b9250929050565b5f805f805f6080868803121561299f575f80fd5b6129a886612876565b94506129b660208701612931565b935060408601356129c6816127b7565b925060608601356001600160401b038111156129e0575f80fd5b6129ec88828901612947565b969995985093965092949392505050565b5f8060408385031215612a0e575f80fd5b8235612a19816127b7565b9150612a2760208401612837565b90509250929050565b5f8060208385031215612a41575f80fd5b82356001600160401b0380821115612a57575f80fd5b818501915085601f830112612a6a575f80fd5b813581811115612a78575f80fd5b8660208260071b8501011115612a8c575f80fd5b60209290920196919550909350505050565b803561ffff81168114610b18575f80fd5b5f805f8060808587031215612ac2575f80fd5b612acb85612a9e565b9350612ad960208601612a9e565b9250612ae760408601612931565b91506060850135612af7816127b7565b939692955090935050565b5f60208284031215612b12575f80fd5b61283082612931565b5f60a08284031215612b2b575f80fd5b50919050565b5f805f60408486031215612b43575f80fd5b83356001600160401b0380821115612b59575f80fd5b612b6587838801612b1b565b94506020860135915080821115612b7a575f80fd5b50612b8786828701612947565b9497909650939450505050565b5f8083601f840112612ba4575f80fd5b5081356001600160401b03811115612bba575f80fd5b6020830191508360208260051b8501011115612984575f80fd5b5f8060208385031215612be5575f80fd5b82356001600160401b03811115612bfa575f80fd5b612c0685828601612b94565b90969095509350505050565b5f60208284031215612c22575f80fd5b61283082612a9e565b5f805f60408486031215612c3d575f80fd5b8335925060208401356001600160401b03811115612c59575f80fd5b612b8786828701612947565b634e487b7160e01b5f52602160045260245ffd5b82151581526040810160048310612c9e57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f805f60408486031215612cbd575f80fd5b612cc684612876565b925060208401356001600160401b03811115612ce0575f80fd5b612b8786828701612b94565b5f805f805f60808688031215612d00575f80fd5b612d0986612876565b94506020860135612d19816127b7565b935060408601356001600160401b03811115612d33575f80fd5b612d3f88828901612947565b96999598509660600135949350505050565b5f60208284031215612d61575f80fd5b81356001600160401b03811115612d76575f80fd5b612d8284828501612b1b565b949350505050565b5f805f805f805f6080888a031215612da0575f80fd5b8735612dab816127b7565b965060208801356001600160401b0380821115612dc6575f80fd5b612dd28b838c01612947565b909850965060408a0135915080821115612dea575f80fd5b612df68b838c01612947565b909650945060608a0135915080821115612e0e575f80fd5b50612e1b8a828b01612947565b989b979a50959850939692959293505050565b60018060a01b0380825116835263ffffffff602083015116602084015260408201516001600160401b03808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b546001600160401b0381168252604081811c61ffff16602084015260509190911c6001600160801b0316910152565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f610140612ef28388612e2e565b612eff60c0840187612e8d565b80610120840152610fc38184018587612ebc565b5f60208284031215612f23575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b80356001600160801b0381168114610b18575f80fd5b5f60208284031215612f64575f80fd5b61283082612f3e565b60208082528181018390525f90604080840186845b87811015612ff35763ffffffff612f9883612876565b1683526001600160401b03612fae868401612931565b168584015261ffff612fc1858401612a9e565b168484015260606001600160801b03612fdb828501612f3e565b16908401526080928301929190910190600101612f82565b5090979650505050505050565b5f81518084525f5b8181101561302457602081850181015186830182015201613008565b505f602082860101526020601f19601f83011685010191505092915050565b5f6101406130518387612e2e565b61305e60c0840186612e8d565b8061012084015261307181840185613000565b9695505050505050565b5f8235609e1983360301811261308f575f80fd5b9190910192915050565b5f808335601e198436030181126130ae575f80fd5b8301803591506001600160401b038211156130c7575f80fd5b602001915036819003821315612984575f80fd5b6001600160e01b031981358181169160048510156131035780818660040360031b1b83161692505b505092915050565b5f808335601e19843603018112613120575f80fd5b83016020810192503590506001600160401b0381111561313e575f80fd5b803603821315612984575f80fd5b6040815263ffffffff61315e84612876565b1660408201525f6020840135613173816127b7565b6001600160a01b0316606083015261318e604085018561310b565b60a060808501526131a360e085018284612ebc565b915050606085013560a08401526131bd608086018661310b565b848303603f190160c08601526131d4838284612ebc565b93505050508260208301529392505050565b818382375f9101908152919050565b828152604060208201525f612d826040830184613000565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108f4576108f461320d565b808201808211156108f4576108f461320d565b5f8085851115613259575f80fd5b83861115613265575f80fd5b5050820193919092039150565b63ffffffff60e01b8660e01b1681526bffffffffffffffffffffffff198560601b166004820152836018820152818360388301375f9101603801908152949350505050565b5f61012060018060a01b03808a511684528060208b0151166020850152506001600160401b0360408a015116604084015261ffff60608a01511660608401526133036080840189612e8d565b8060e08401526133168184018789612ebc565b905082810361010084015261332c818587612ebc565b9998505050505050505050565b5f6001600160401b038083168181036133545761335461320d565b6001019392505050565b6001600160401b0382811682821603908082111561337e5761337e61320d565b5092915050565b6001600160401b0381811683821601908082111561337e5761337e61320d565b5f6001600160401b038216806133bd576133bd61320d565b5f19019291505056fe724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19dea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177574845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bcaa264697066735822122025df162999d18cfe45a661ee268eec8fc838527e0d9cfbba60c850aaf2c9f24364736f6c63430008160033","sourceMap":"825:14535:62:-:0;;;2374:379;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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;;;;;2673:8:62;2683:7;2608:12;1753:22:73;2634:5:62;-1:-1:-1;2655:7:62;1945:9:73;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;;;;1504:676;;;;;972:7:67;-1:-1:-1;;;;;972:12:67;983:1;972:12;968:73;;1007:23;;-1:-1:-1;;;1007:23:67;;;;;;;;;;;968:73;1072:7;-1:-1:-1;;;;;1054:25:67;:8;:15;:25;1050:133;;;1146:15;;1102:70;;-1:-1:-1;;;1102:70:67;;-1:-1:-1;;;;;3044:15:122;;;1102:70:67;;;3026:34:122;3096:15;;;3076:18;;;3069:43;2962:18;;1102:70:67;;;;;;;1050:133;1192:18;1238:9;1233:274;1257:8;:15;1253:1;:19;1233:274;;;1293:14;1310:8;1319:1;1310:11;;;;;;;;:::i;:::-;;;;;;;1293:28;;1349:10;-1:-1:-1;;;;;1339:20:67;:6;-1:-1:-1;;;;;1339:20:67;;1335:93;;1386:27;;-1:-1:-1;;;1386:27:67;;;;;;;;;;;1335:93;-1:-1:-1;;;;;1441:15:67;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;1441:22:67;1459:4;1441:22;;;;;;1449:6;;-1:-1:-1;1274:3:67;1233:274;;;-1:-1:-1;;1536:15:67;;1516:10;:36;;-1:-1:-1;;;;;1562:16:67;;;;;-1:-1:-1;;;;;;1562:16:67;;;1516:36;;;;1562:16;;;;;;;-1:-1:-1;;;2702:10:62::2;::::0;;::::2;;::::0;-1:-1:-1;;2722:24:62::2;;::::0;825:14535;;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:167:122;92:13;;145:10;134:22;;124:33;;114:61;;171:1;168;161:12;114:61;14:167;;;:::o;186:127::-;247:10;242:3;238:20;235:1;228:31;278:4;275:1;268:15;302:4;299:1;292:15;318:177;397:13;;-1:-1:-1;;;;;439:31:122;;429:42;;419:70;;485:1;482;475:12;500:929;565:5;618:3;611:4;603:6;599:17;595:27;585:55;;636:1;633;626:12;585:55;659:13;;691:4;-1:-1:-1;;;;;744:10:122;;;741:36;;;757:18;;:::i;:::-;803:2;800:1;796:10;835:2;829:9;898:2;894:7;889:2;885;881:11;877:25;869:6;865:38;953:6;941:10;938:22;933:2;921:10;918:18;915:46;912:72;;;964:18;;:::i;:::-;1000:2;993:22;1050:18;;;1096:4;1128:15;;;1124:26;;;1084:17;;;;-1:-1:-1;116