0 txs
5 calls
constructor
constructor(bytes facetsAndSelectors, address permit2Address, address wrappedNativeAddress)
functions
facetAddress
viewfunction facetAddress(bytes4 functionSelector) view returns (address _facet)
facetAddresses
viewfunction facetAddresses() view returns (address[] _facets)
facetFunctionSelectors
viewfunction facetFunctionSelectors(address facet) view returns (bytes4[] _facetFunctionSelectors)
facets
viewfunction facets() view returns (tuple[] _facets)
getFeeContractAddressAndFee
viewfunction getFeeContractAddressAndFee() view returns (address feeContractAddress, uint256 fee)
getModuleAddress
viewfunction getModuleAddress(bytes4 moduleSignature) view returns (address moduleAddress)
getModules
viewfunction getModules() view returns (tuple[] info)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
acceptOwnership
nonpayablefunction acceptOwnership()
addModule
nonpayablefunction addModule(bytes4 moduleSignature, address moduleAddress)
crossChainMulticall
nonpayablefunction crossChainMulticall(address dstAddress, uint256 feeAmount, address token, bytes extraData, bytes data)
initialize
nonpayablefunction initialize(address newOwner)
metaMulticall
nonpayablefunction metaMulticall(address sender, tuple tokenTransfersPermit2, bytes[] data)
multicall
nonpayablefunction multicall(tuple tokenTransfersPermit2, bytes[] data)
multicall
payablefunction multicall(tuple tokenTransfers, bytes[] data) payable
multicall
nonpayablefunction multicall(bytes[] data)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeContractAddressAndFee
nonpayablefunction setFeeContractAddressAndFee(address feeContractAddress, uint256 fee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateModule
nonpayablefunction updateModule(bytes4 moduleSignature, address moduleAddress)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
events
CallFailed
event CallFailed(bytes errorMessage)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
DuplicateToken
error DuplicateToken()
EntryPoint_FunctionDoesNotExist
error EntryPoint_FunctionDoesNotExist(bytes4 selector)
EntryPoint_ModuleAlreadyAdded
error EntryPoint_ModuleAlreadyAdded(bytes4 methodSignature)
EntryPoint_ModuleNotAdded
error EntryPoint_ModuleNotAdded(bytes4 methodSignature)
EntryPoint_OnlySelfCall
error EntryPoint_OnlySelfCall()
ERC1967_InvalidImplementation
error ERC1967_InvalidImplementation(address implementation)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
Ownable_CallerIsNotTheNewOwner
error Ownable_CallerIsNotTheNewOwner(address caller)
Ownable_NewOwnerCannotBeAddressZero
error Ownable_NewOwnerCannotBeAddressZero()
Ownable_SenderIsNotOwner
error Ownable_SenderIsNotOwner(address sender)
SSTORE2_DeploymentFailed
error SSTORE2_DeploymentFailed()
TransferHelper_GetBalanceError
error TransferHelper_GetBalanceError()
TransferHelper_TransferError
error TransferHelper_TransferError()
TransferHelper_TransferFromError
error TransferHelper_TransferFromError()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x610100604052306080523480156200001657600080fd5b50604051620038e2380380620038e28339810160408190526200003991620001bb565b6200004362000077565b6001600160a01b0380831660c052811660e052620000618362000102565b6001600160a01b031660a05250620002d0915050565b600154600160a81b900460ff1615620000a35760405163f92ee8a960e01b815260040160405180910390fd5b600154600160a01b900460ff9081161462000100576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600080826040516020016200011891906200029a565b60405160208183030381529060405290508051602082016000f091506001600160a01b0382166200015c576040516325dc3c1560e21b815260040160405180910390fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620001955781810151838201526020016200017b565b50506000910152565b80516001600160a01b0381168114620001b657600080fd5b919050565b600080600060608486031215620001d157600080fd5b83516001600160401b0380821115620001e957600080fd5b818601915086601f830112620001fe57600080fd5b81518181111562000213576200021362000162565b604051601f8201601f19908116603f011681019083821181831017156200023e576200023e62000162565b816040528281528960208487010111156200025857600080fd5b6200026b83602083016020880162000178565b809750505050505062000281602085016200019e565b915062000291604085016200019e565b90509250925092565b6a600b5981380380925939f360a81b81528151600090620002c381600c85016020870162000178565b91909101600c0192915050565b60805160a05160c05160e05161358b6200035760003960008181610960015281816109d401528181610d9301528181610db60152610eb3015260008181611661015261171c015260008181610590015281816107d901528181610b4301528181610f840152612626015260008181611ac401528181611aed0152611c7a015261358b6000f3fe6080604052600436106101845760003560e01c806379ba5097116100d6578063adfca15e1161007f578063cdffacc611610059578063cdffacc6146104da578063e30c3978146104fa578063f2fde38b146105185761018b565b8063adfca15e1461046b578063b2494df314610498578063c4d66de8146104ba5761018b565b80638b7cca70116100b05780638b7cca701461040d5780638da5cb5b1461042d578063ac9650d81461044b5761018b565b806379ba5097146103b65780637a0ed627146103cb57806385d2e318146103ed5761018b565b806352ef6b2c116101385780636d40717e116101125780636d40717e14610331578063715018a61461035157806374834542146103665761018b565b806352ef6b2c146102c457806357c1ce21146102e65780636069f1f9146102f95761018b565b80632d844fa2116101695780632d844fa21461025c5780633659cfe61461027c57806352d1902d1461029c5761018b565b806317d09f921461021c57806323e29cb51461023c5761018b565b3661018b57005b6000610195610538565b90506001600160a01b0381166101f6576101ba6000356001600160e01b031916610588565b90506001600160a01b0381166101f657604051639365f53760e01b81526001600160e01b03196000351660048201526024015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610215573d6000f35b3d6000fd5b005b34801561022857600080fd5b5061021a610237366004612a44565b61060c565b34801561024857600080fd5b5061021a610257366004612ae1565b610666565b34801561026857600080fd5b5061021a610277366004612b14565b6106ec565b34801561028857600080fd5b5061021a610297366004612b8b565b610783565b3480156102a857600080fd5b506102b16107a0565b6040519081526020015b60405180910390f35b3480156102d057600080fd5b506102d96107cf565b6040516102bb9190612bad565b61021a6102f4366004612bfa565b610807565b34801561030557600080fd5b50610319610314366004612c51565b610a7f565b6040516001600160a01b0390911681526020016102bb565b34801561033d57600080fd5b5061021a61034c366004612c6c565b610a9e565b34801561035d57600080fd5b5061021a610ad7565b34801561037257600080fd5b507fde699227b1a7fb52a64c41a77682cef2fe2815e2a233a451b6c9f64b1abac29054604080516001600160a01b038316815260a09290921c6020830152016102bb565b3480156103c257600080fd5b5061021a610aeb565b3480156103d757600080fd5b506103e0610b3a565b6040516102bb9190612cdb565b3480156103f957600080fd5b5061021a610408366004612ae1565b610c61565b34801561041957600080fd5b5061021a610428366004612d9a565b610d37565b34801561043957600080fd5b506000546001600160a01b0316610319565b34801561045757600080fd5b5061021a610466366004612e35565b610f32565b34801561047757600080fd5b5061048b610486366004612b8b565b610f7b565b6040516102bb9190612e77565b3480156104a457600080fd5b506104ad611019565b6040516102bb9190612e8a565b3480156104c657600080fd5b5061021a6104d5366004612b8b565b611136565b3480156104e657600080fd5b506103196104f5366004612c51565b61125b565b34801561050657600080fd5b506001546001600160a01b0316610319565b34801561052457600080fd5b5061021a610533366004612b8b565b611266565b7f1248b983d56fa782b7a88ee11066fc0746058888ea550df970b9eea952d65dd05480156105855760007f1248b983d56fa782b7a88ee11066fc0746058888ea550df970b9eea952d65dd0555b90565b6000806105b47f00000000000000000000000000000000000000000000000000000000000000006112d5565b9050601d815110156105e557604051639365f53760e01b81526001600160e01b0319841660048201526024016101ed565b602081015160f081901c9060e01c61ffff1661060385848484611301565b95945050505050565b3361061681611381565b61063761062f848461062a338960006113d1565b6118bb565b5160006119da565b61066060007f289cc669fe96ce33e95427b15b06e5cf0e5e79eb9894ad468d456975ce05c19755565b50505050565b61066e6119f7565b81600052600260205260406000208054156106955763efd5d8e4600052826020526024601cfd5b60038054600181018255600091909152600881047fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805460e09590951c600783166020021b90940190935560a09290921b019055565b836106f681611381565b61073661070960c0860160a08701612b8b565b8560c0013560a01b017f9c13ee85847e65d4779a4abcc83bdb760e20a0bde59fae75b7067e1808225b0755565b61075361062f848461062a898961074e8a8a33611a3d565b6113d1565b61077c60007f289cc669fe96ce33e95427b15b06e5cf0e5e79eb9894ad468d456975ce05c19755565b5050505050565b61078b611ab9565b61079481611b67565b61079d81611b6f565b50565b60006107aa611c6f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60606108026107fd7f00000000000000000000000000000000000000000000000000000000000000006112d5565b611cb8565b905090565b3361081181611381565b61082361081e8580612eec565b611d18565b7fde699227b1a7fb52a64c41a77682cef2fe2815e2a233a451b6c9f64b1abac290546001600160a01b0381169060a01c600061085f8780612eec565b9050905060008167ffffffffffffffff81111561087e5761087e612f36565b6040519080825280602002602001820160405280156108a7578160200160208202803683370190505b509050815b8015610a37576000190160006108c560208b018b612eec565b838181106108d5576108d5612f4c565b9050602002013590506108e781611de7565b60006108f38b80612eec565b8481811061090357610903612f4c565b90506020020160208101906109189190612b8b565b90506001600160a01b0381161561095e5760006109358230611dfa565b905061094382338530611f2c565b6109566109508330611dfa565b82611fd4565b9250506109f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000090505b610a0287878385611fe6565b82039150610a12818360a01b0190565b848481518110610a2457610a24612f4c565b60200260200101818152505050506108ac565b50816020026020018101604052610a5261062f8888846118bb565b5050505061066060007f289cc669fe96ce33e95427b15b06e5cf0e5e79eb9894ad468d456975ce05c19755565b6000818152600260205260408120546001600160a01b03165b92915050565b610aa66119f7565b610ad3828260a01b017fde699227b1a7fb52a64c41a77682cef2fe2815e2a233a451b6c9f64b1abac29055565b5050565b610adf6119f7565b610ae96000612019565b565b6001546001600160a01b03163314610b31576040517f6cce7fdd0000000000000000000000000000000000000000000000000000000081523360048201526024016101ed565b610ae933612019565b60606000610b677f00000000000000000000000000000000000000000000000000000000000000006112d5565b90506000610b7482611cb8565b9050805167ffffffffffffffff811115610b9057610b90612f36565b604051908082528060200260200182016040528015610bd657816020015b604080518082019091526000815260606020820152815260200190600190039081610bae5790505b50925060005b8151811015610c5b57818181518110610bf757610bf7612f4c565b6020026020010151848281518110610c1157610c11612f4c565b60209081029190910101516001600160a01b039091169052610c33838261203f565b848281518110610c4557610c45612f4c565b6020908102919091018101510152600101610bdc565b50505090565b610c696119f7565b8160005260026020526040600020805480610c905763eac1ef32600052836020526024601cfd5b828015610cb85773ffffffffffffffffffffffffffffffffffffffff1982168401835561077c565b600083558160a01c600160035403806003558015610d2e5760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6008808304820154908404909101805463ffffffff6007808716602090810283811b19909416918716029490941c16901b9190910190555b50505050505050565b610d4182826120b4565b600080610d508987878a61217c565b9150915087811015610d6c57610d67878383612283565b610f27565b8715610d7d57610d7d87838a612283565b8790036001600160a01b038716801590610e29577f000000000000000000000000000000000000000000000000000000000000000097507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e0f57600080fd5b505af1158015610e23573d6000803e3d6000fd5b50505050505b600080610e3a8a858b8b8b8b6122a7565b9150915081610f23577fa5fa8d2bd23af43608c66a1e71e091ad72afa45dfd478efa1657e01a9a4ceea681604051610e729190612fb2565b60405180910390a18215610f18576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905260009a507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610eff57600080fd5b505af1158015610f13573d6000803e3d6000fd5b505050505b610f238a8686612283565b5050505b505050505050505050565b333014610f6b576040517fa158c3e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad361062f838361062a612506565b60606000610fa87f00000000000000000000000000000000000000000000000000000000000000006112d5565b90506000610fb582611cb8565b905067ffffffffffffffff60005b825181101561100e57856001600160a01b0316838281518110610fe857610fe8612f4c565b60200260200101516001600160a01b0316036110065780915061100e565b600101610fc3565b50610603838261203f565b6003546060908067ffffffffffffffff81111561103857611038612f36565b60405190808252806020026020018201604052801561107d57816020015b60408051808201909152600080825260208201528152602001906001900390816110565790505b50915060005b81811015611131576000600382815481106110a0576110a0612f4c565b90600052602060002090600891828204019190066004029054906101000a900460e01b90506040518060400160405280826001600160e01b03191681526020016110ff836000908152600260205260409020546001600160a01b031690565b6001600160a01b031681525084838151811061111d5761111d612f4c565b602090810291909101015250600101611083565b505090565b60015460ff600160a81b820481161591600160a01b90041660008115801561115b5750825b905060008267ffffffffffffffff1660011480156111785750303b155b905081158015611186575080155b156111bd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790558315611205576001805460ff60a81b1916600160a81b1790555b61120e85612019565b831561077c576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6000610a9882610588565b61126e6119f7565b6112778161253e565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227009190a350565b60408051603e833b908101601f1916820190925260001990910180825280600160208401853c50919050565b60006001600160e01b03196024850182858180805b838510156113725750505080820160011c600581028401518581168b810361135257888601601460d884901c60ff1602015160601c9750611372565b8b8110600181146113655783945061136c565b6001840195505b50611316565b50505050505050949350505050565b7f289cc669fe96ce33e95427b15b06e5cf0e5e79eb9894ad468d456975ce05c19754156113ad57600080fd5b7f289cc669fe96ce33e95427b15b06e5cf0e5e79eb9894ad468d456975ce05c19755565b60606113e061081e8480612eec565b60006113ec8480612eec565b905090508067ffffffffffffffff81111561140957611409612f36565b604051908082528060200260200182016040528015611432578160200160208202803683370190505b50915060008167ffffffffffffffff81111561145057611450612f36565b60405190808252806020026020018201604052801561149557816020015b604080518082019091526000808252602082015281526020019060019003908161146e5790505b50905060008267ffffffffffffffff8111156114b3576114b3612f36565b6040519080825280602002602001820160405280156114f857816020015b60408051808201909152600080825260208201528152602001906001900390816114d15790505b509050825b8015611659576000190160006115166020890189612eec565b8381811061152657611526612f4c565b90506020020135905061153881611de7565b60006115448980612eec565b8481811061155457611554612f4c565b90506020020160208101906115699190612b8b565b90508085848151811061157e5761157e612f4c565b6020026020010151600001906001600160a01b031690816001600160a01b031681525050818584815181106115b5576115b5612f4c565b60200260200101516020018181525050308484815181106115d8576115d8612f4c565b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508184848151811061160f5761160f612f4c565b602002602001015160200181815250506116348161162d8330611dfa565b60a01b0190565b87848151811061164657611646612f4c565b60200260200101818152505050506114fd565b508461171a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663edd9444b6040518060600160405280858152602001896040013581526020018960600135815250838a8a80608001906116c39190612fc5565b6040518663ffffffff1660e01b81526004016116e39594939291906130fb565b600060405180830381600087803b1580156116fd57600080fd5b505af1158015611711573d6000803e3d6000fd5b505050506117d9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe8ec1a76040518060600160405280858152602001896040013581526020018960600135815250838a8961177761257e565b61178460808e018e612fc5565b6040518863ffffffff1660e01b81526004016117a69796959493929190613150565b600060405180830381600087803b1580156117c057600080fd5b505af11580156117d4573d6000803e3d6000fd5b505050505b7fde699227b1a7fb52a64c41a77682cef2fe2815e2a233a451b6c9f64b1abac290546001600160a01b0381169060a01c845b80156118aa5780600190039050600087828151811061182c5761182c612f4c565b602002602001015190506000611848826001600160a01b031690565b905060006118686118598330611dfa565b6118638560a01c90565b611fd4565b905061187686868484611fe6565b9003611884828260a01b0190565b8a858151811061189657611896612f4c565b60200260200101818152505050505061180b565b505050816040525050509392505050565b606060006118c985856125d7565b90508360208201604051878860005b85156119c357508351813583018161192c576001600160e01b03196020820135168060005260026020526001600160a01b036040600020541692508261192a57639365f537600052806020526024601cfd5b505b8035806020830187378b880361197457602091508086018b5160208d015b811561196b578051835260209485019492830192600019909201910161194a565b50508b51905281015b878c146119925760203d039150808601826020823e8051908301523d015b60008082886000875af26119aa573d6000803e3d6000fd5b50506001860395506020820191506020850194506118d8565b50505050505060203d036020843e50909392505050565b818114610ad35763460b993960005281602052806040526044601cfd5b6000546001600160a01b03163314610ae9576040517f37c14b450000000000000000000000000000000000000000000000000000000081523360048201526024016101ed565b6000826040518086835b8015611a7357813589018035806020830186378420845250602092830192919091019060001901611a47565b50505060208202812060208201527f1db49191f6aedd50e82a59daff95f48b956d744441ff81e8755316b05950578a815283604082015260608120925050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b4957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b3d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031614155b15610ae95760405163703e46dd60e11b815260040160405180910390fd5b61079d6119f7565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bc9575060408051601f3d908101601f19168201909252611bc6918101906131c1565b60015b611c0a576040517f4a4a0aa20000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c66576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016101ed565b610ad3826126fb565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ae95760405163703e46dd60e11b815260040160405180910390fd5b60606000604051915061ffff836020015160e01c166024840101602083015b815160601c80611ce75750611cff565b81526001929092019160149190910190602001611cd7565b5050808252602081026020016040510160405250919050565b808015611de25760005b6001820381101561066057600181015b82811015611dd957848482818110611d4c57611d4c612f4c565b9050602002016020810190611d619190612b8b565b6001600160a01b0316858584818110611d7c57611d7c612f4c565b9050602002016020810190611d919190612b8b565b6001600160a01b031603611dd1576040517f464e3f6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611d32565b50600101611d22565b505050565b8061079d576375a0be416000526004601cfd5b60006001600160a01b03831615611f1c576040516001600160a01b038381166024830152600091829186169060440160408051601f198184030181529181526020820180516001600160e01b03167f70a082310000000000000000000000000000000000000000000000000000000017905251611e7791906131da565b600060405180830381855afa9150503d8060008114611eb2576040519150601f19603f3d011682016040523d82523d6000602084013e611eb7565b606091505b5091509150811580611ec857508051155b15611eff576040517ff6d1729d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190611f1391906131c1565b92505050610a98565b506001600160a01b031631919050565b6040516001600160a01b0380851660248301528216604482015260648101839052611f9e90859060840160408051601f198184030181529190526020810180516001600160e01b03167f23b872dd0000000000000000000000000000000000000000000000000000000017905261273b565b610660576040517f0368311b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fe083836127c4565b50900390565b60006001600160a01b038516156120115750620f4240838202048015612011576120118386836127e2565b949350505050565b6001805473ffffffffffffffffffffffffffffffffffffffff1916905561079d81612882565b6060600060405191506020820160248501856020015160f01c5b80156120995781518660ff8260d81c1603612088576001600160e01b0319811684526001850194506020840193505b506005919091019060001901612059565b50505080825260208102602001604051016040525092915050565b81356001600160e01b0319167f9e00ccbf000000000000000000000000000000000000000000000000000000008114611de2576001600160e01b031981167f683cfc610000000000000000000000000000000000000000000000000000000014611de2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed9060208082526004908201527f544f444f00000000000000000000000000000000000000000000000000000000604082015260600190565b6001600160a01b03841660009081527f7f8156d470b4ca2c59b150cce6693dce9d231528b9e476a0fbfb17f10e0dab0d60209081526040808320549051839283916121cb9189918991016131f6565b604051602081830303815290604052905060006121e88630611dfa565b90506001600160a01b0383169450846000528260c01c63ffffffff8460a01c1660201b016020526040600020808351602085016000f590508981146122305760008052600080fd5b5085801561224d578660005260008060206000808e5af15061225a565b60008060008060008e5af1505b508160405261226c6109508730611dfa565b935061227784611de7565b50505094509492505050565b6001600160a01b0383161561229d57611de28383836127e2565b611de282826128df565b600060606122e96040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612907565b60006122f7868801886132e6565b90506123376040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250612907565b6000815160010167ffffffffffffffff81111561235657612356612f36565b60405190808252806020026020018201604052801561238957816020015b60608152602001906001900390816123745790505b5090506123ca6040518060400160405280600181526020017f3300000000000000000000000000000000000000000000000000000000000000815250612907565b600086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845160018501948693509150811061241a5761241a612f4c565b602002602001018190525060005b82518210156124745783818151811061244357612443612f4c565b602002602001015183838151811061245d5761245d612f4c565b602090810291909101015260019182019101612428565b5063ac9650d88260405160240161248b91906133f1565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050935083518060200185018c8c60a01b018152600160208201525060408101905060008082602088016000305af1955050846124f8573d6000602086013e3d84525b505050965096945050505050565b606060405190506020360335808252806020026020018201604052801561253a578060200281602002602001360360208401375b5090565b6001600160a01b03811661079d576040517f7b30466f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606040518060600160405280603181526020016134f7603191396040518060600160405280602e8152602001613528602e91396040516020016125c3929190613453565b604051602081830303815290604052905090565b6060818067ffffffffffffffff8111156125f3576125f3612f36565b60405190808252806020026020018201604052801561261c578160200160208202803683370190505b509150600061264a7f00000000000000000000000000000000000000000000000000000000000000006112d5565b9050601d8151101561267257604051639365f53760e01b8152600060048201526024016101ed565b60208101518590819060f081901c9060e01c61ffff166000805b878110156126e95760208581019535870101356001600160e01b03191691506126b782888686611301565b8982815181106126c9576126c9612f4c565b6001600160a01b039092166020928302919091019091015260010161268c565b50856040525050505050505092915050565b61270481612963565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000806000846001600160a01b03168460405161275891906131da565b6000604051808303816000865af19150503d8060008114612795576040519150601f19603f3d011682016040523d82523d6000602084013e61279a565b606091505b509150915081801561060357508051158061060357508080602001905181019061060391906134d4565b80821015610ad35763a80090fd60005281602052806040526044601cfd5b6040516001600160a01b03831660248201526044810182905261284c90849060640160408051601f198184030181529190526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261273b565b611de2576040517fc63edbd000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008084865af16128fb5763b1a0fdf86000526004601cfd5b610ad38260008361299f565b61079d8160405160240161291b9190612fb2565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac000000000000000000000000000000000000000000000000000000001790526129bb565b803b61297b57634a4a0aa2600052806020526024601cfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60405183600052826020528160405260606000a0604052505050565b61079d8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600060e082840312156129f257600080fd5b50919050565b60008083601f840112612a0a57600080fd5b50813567ffffffffffffffff811115612a2257600080fd5b6020830191508360208260051b8501011115612a3d57600080fd5b9250929050565b600080600060408486031215612a5957600080fd5b833567ffffffffffffffff80821115612a7157600080fd5b612a7d878388016129e0565b94506020860135915080821115612a9357600080fd5b50612aa0868287016129f8565b9497909650939450505050565b80356001600160e01b031981168114612ac557600080fd5b919050565b80356001600160a01b0381168114612ac557600080fd5b60008060408385031215612af457600080fd5b612afd83612aad565b9150612b0b60208401612aca565b90509250929050565b60008060008060608587031215612b2a57600080fd5b612b3385612aca565b9350602085013567ffffffffffffffff80821115612b5057600080fd5b612b5c888389016129e0565b94506040870135915080821115612b7257600080fd5b50612b7f878288016129f8565b95989497509550505050565b600060208284031215612b9d57600080fd5b612ba682612aca565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015612bee5783516001600160a01b031683529284019291840191600101612bc9565b50909695505050505050565b600080600060408486031215612c0f57600080fd5b833567ffffffffffffffff80821115612c2757600080fd5b9085019060408288031215612c3b57600080fd5b90935060208501359080821115612a9357600080fd5b600060208284031215612c6357600080fd5b612ba682612aad565b60008060408385031215612c7f57600080fd5b612c8883612aca565b946020939093013593505050565b600081518084526020808501945080840160005b83811015612cd05781516001600160e01b03191687529582019590820190600101612caa565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612d4a57888303603f19018552815180516001600160a01b03168452870151878401879052612d3787850182612c96565b9588019593505090860190600101612d02565b509098975050505050505050565b60008083601f840112612d6a57600080fd5b50813567ffffffffffffffff811115612d8257600080fd5b602083019150836020828501011115612a3d57600080fd5b600080600080600080600060a0888a031215612db557600080fd5b612dbe88612aca565b965060208801359550612dd360408901612aca565b9450606088013567ffffffffffffffff80821115612df057600080fd5b612dfc8b838c01612d58565b909650945060808a0135915080821115612e1557600080fd5b50612e228a828b01612d58565b989b979a50959850939692959293505050565b60008060208385031215612e4857600080fd5b823567ffffffffffffffff811115612e5f57600080fd5b612e6b858286016129f8565b90969095509350505050565b602081526000612ba66020830184612c96565b602080825282518282018190526000919060409081850190868401855b82811015612edf57815180516001600160e01b03191685528601516001600160a01b0316868501529284019290850190600101612ea7565b5091979650505050505050565b6000808335601e19843603018112612f0357600080fd5b83018035915067ffffffffffffffff821115612f1e57600080fd5b6020019150600581901b3603821315612a3d57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60005b83811015612f7d578181015183820152602001612f65565b50506000910152565b60008151808452612f9e816020860160208601612f62565b601f01601f19169290920160200192915050565b602081526000612ba66020830184612f86565b6000808335601e19843603018112612fdc57600080fd5b83018035915067ffffffffffffffff821115612ff757600080fd5b602001915036819003821315612a3d57600080fd5b805160608084528151908401819052600091602091908201906080860190845b818110156130655761305283855180516001600160a01b03168252602090810151910152565b928401926040929092019160010161302c565b505082850151838701526040850151604087015280935050505092915050565b600081518084526020808501945080840160005b83811015612cd0576130bf87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101613099565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061310e608083018861300c565b82810360208401526131208188613085565b90506001600160a01b038616604084015282810360608401526131448185876130d2565b98975050505050505050565b60c08152600061316360c083018a61300c565b8281036020840152613175818a613085565b90506001600160a01b0388166040840152866060840152828103608084015261319e8187612f86565b905082810360a08401526131b38185876130d2565b9a9950505050505050505050565b6000602082840312156131d357600080fd5b5051919050565b600082516131ec818460208701612f62565b9190910192915050565b7f608160113439333d60010152608134f3fe7f000000000000000000000000000081526d3381146029575b005b368060001460208201527f607057602014603c575b6027565b60006044601c8280948135906370a082318360408201527f523060205260206040602486855afa5063a9059cbb83526020525af15038603860608201527f565b5060008080809347905af15038603856000000000000000000000000000060808201528183609283013760009101609201908152919050565b604051601f8201601f1916810167ffffffffffffffff811182821017156132de576132de612f36565b604052919050565b600060208083850312156132f957600080fd5b823567ffffffffffffffff8082111561331157600080fd5b8185019150601f868184011261332657600080fd5b82358281111561333857613338612f36565b8060051b6133478682016132b5565b918252848101860191868101908a84111561336157600080fd5b87870192505b838310156131b35782358681111561337f5760008081fd5b8701603f81018c136133915760008081fd5b888101356040888211156133a7576133a7612f36565b6133b8828901601f19168c016132b5565b8281528e828486010111156133cd5760008081fd5b828285018d83013760009281018c0192909252508352509187019190870190613367565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561344657603f19888603018452613434858351612f86565b94509285019290850190600101613418565b5092979650505050505050565b7f44617461416e6453656e64657244657461696c732064617461416e6453656e6481527f657244657461696c7329000000000000000000000000000000000000000000006020820152600083516134b181602a850160208801612f62565b8351908301906134c881602a840160208801612f62565b01602a01949350505050565b6000602082840312156134e657600080fd5b81518015158114612ba657600080fdfe44617461416e6453656e64657244657461696c732862797465735b5d20646174612c616464726573732073656e64657229546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220579101ca2261500578be263a5850dcabd50502ed4c1af9cefd29955ec00df27c64736f6c634300081300330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270000000000000000000000000000000000000000000000000000000000000010d002100a5128c99910313137d65031c7df38c0329b85fff0329fb3fdb022b94e499032fd3b7580335d5133e023772df58033a5be8cb043fcccd3d00416ecebf0343ea4fa903505baac2005449da9201562fc590036750cd4c03683cfc61016e35056f027d25a05e0395368d2e0399dd15c8039e00ccbf01a1074c5c04afdac3d604b353aaa702bc7f3b5003ca5eb5e103d0a1026002d83dfc9f03dab0b5c700de1f137903ff7bd03d035bd810757d09fd3cd139379c7a8d4321f50c45054e8b3593b50942133d0484f90fd38a655e5ffa7dbe821d014e90417a4389f1f919326e213aaa1b8a2d9577a7873c4607b77704a338c0772d8a2b60fcd4d07c5cd66390833b0ba9e5f6d2c93b83e511c400000000000000000000000000000000000000