0 txs
7 calls
constructor
constructor()
functions
allAutoMarkets
viewfunction allAutoMarkets(uint256) view returns (address)
allowedBot
viewfunction allowedBot(address) view returns (bool)
allowedPoolCreator
viewfunction allowedPoolCreator(address) view returns (bool)
autoMarketBeacon
viewfunction autoMarketBeacon() view returns (address)
autoMarketCount
viewfunction autoMarketCount() view returns (uint256)
autoMarketInfo
viewfunction autoMarketInfo(address) view returns (address receiptToken, address pendleMarket, address wrappedLPToken)
depositHelper
viewfunction depositHelper() view returns (address)
feeInfos
viewfunction feeInfos(uint256) view returns (uint256 value, address to)
getAllAutoMarkets
viewfunction getAllAutoMarkets() view returns (address[])
getAutoMarketInfo
viewfunction getAutoMarketInfo(address autoMarketAddress) view returns (address receiptToken, address pendleMarket, address wrappedLPToken)
harvestCoolDown
viewfunction harvestCoolDown() view returns (uint256)
hasAutoMarket
viewfunction hasAutoMarket(address autoMarketAddress) view returns (bool)
masterPenpie
viewfunction masterPenpie() view returns (address)
owner
viewfunction owner() view returns (address)
PENDLE
viewfunction PENDLE() view returns (address)
pendleStaking
viewfunction pendleStaking() view returns (address)
totalAutoFee
viewfunction totalAutoFee() view returns (uint256)
zapInAndOutHelper
viewfunction zapInAndOutHelper() view returns (address)
addAutoFee
nonpayablefunction addAutoFee(uint256 _value, address _to)
batchCollectAndCompound
nonpayablefunction batchCollectAndCompound(address[] autoMarkets, address[] rewardTokens, uint256[] amounts, tuple[] zapInData)
createAutoMarket
nonpayablefunction createAutoMarket(address penpieReceipt, address pendleMarket, address wrappedLPToken) returns (address autoMarketAddress)
depositWithPendleLP
nonpayablefunction depositWithPendleLP(address autoMarketAddress, uint256 lpAmount)
depositWithPenpieLP
nonpayablefunction depositWithPenpieLP(address autoMarketAddress, uint256 lpAmount)
depositWithWrappedPendleLP
nonpayablefunction depositWithWrappedPendleLP(address autoMarketAddress, uint256 wrappedLPAmount)
initialize
nonpayablefunction initialize(address _pendle, address _masterPenpie, address _pendleStaking, address _depositHelper, address _zapInAndOutHelper, address _autoMarketBeacon)
recoverERC20
nonpayablefunction recoverERC20(address token, uint256 amount)
redeemAndSwapFromMarket
nonpayablefunction redeemAndSwapFromMarket(address autoMarketAddress, uint256 aMaketamount, tuple zapOutData)
removeAutoFee
nonpayablefunction removeAutoFee(uint256 _index)
renounceOwnership
nonpayablefunction renounceOwnership()
setAllowedBot
nonpayablefunction setAllowedBot(address bot, bool allowed)
setAllowedPoolCreator
nonpayablefunction setAllowedPoolCreator(address creator, bool allowed)
setAutoFee
nonpayablefunction setAutoFee(uint256 _index, uint256 _value, address _to)
setZapInAndOutHelper
nonpayablefunction setZapInAndOutHelper(address _zapInAndOutHelper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawAsPendleLP
nonpayablefunction withdrawAsPendleLP(address autoMarketAddress, uint256 aMaketamount)
withdrawAsPenpieLP
nonpayablefunction withdrawAsPenpieLP(address autoMarketAddress, uint256 aMaketamount)
withdrawAsWrappedPendleLP
nonpayablefunction withdrawAsWrappedPendleLP(address autoMarketAddress, uint256 aMaketamount)
withdrawNative
nonpayablefunction withdrawNative(uint256 amount)
zapAndStakeToAutoMarket
nonpayablefunction zapAndStakeToAutoMarket(address autoMarketAddress, uint256 tokenInAmount, tuple zapInData)
events
AllowedBotUpdated
event AllowedBotUpdated(address indexed bot, bool allowed)
AllowedPoolCreatorUpdated
event AllowedPoolCreatorUpdated(address indexed creator, bool allowed)
AutoFeeAdded
event AutoFeeAdded(uint256 indexed index, uint256 value, address to)
AutoFeeRemoved
event AutoFeeRemoved(uint256 indexed index, uint256 value, address to)
AutoFeeUpdated
event AutoFeeUpdated(uint256 indexed index, uint256 oldValue, uint256 newValue, address oldTo, address newTo)
AutoMarketCreated
event AutoMarketCreated(address indexed market, address indexed penpieReceiptToken, address autoMarket)
AutoMarketDeposit
event AutoMarketDeposit(address indexed user, address indexed market, uint256 lpAmount, uint256 autoMarketShares, bool isPendleLP)
AutoMarketWithdraw
event AutoMarketWithdraw(address indexed user, address indexed market, uint256 autoMarketShares, bool isPendleLP)
AutoMarketWrappedLPDeposit
event AutoMarketWrappedLPDeposit(address indexed user, address indexed market, address indexed wrappedLPToken, uint256 wrappedLPAmount, uint256 autoMarketShares)
AutoMarketWrappedLPWithdraw
event AutoMarketWrappedLPWithdraw(address indexed user, address indexed market, address indexed wrappedLPToken, uint256 autoMarketShares)
AutoMarketZapInDeposit
event AutoMarketZapInDeposit(address indexed user, address indexed market, address indexed tokenIn, uint256 tokenInAmount, uint256 autoMarketShares)
AutoMarketZapOutWithdraw
event AutoMarketZapOutWithdraw(address indexed user, address indexed market, address indexed tokenOut, uint256 autoMarketShares, uint256 tokenOutAmount)
BatchCollectAndCompound
event BatchCollectAndCompound(address[] autoMarkets, address[] rewardTokens, uint256[] amounts)
ERC20Recovered
event ERC20Recovered(address indexed token, address indexed to, uint256 amount)
Initialized
event Initialized(uint8 version)
NativeWithdrawn
event NativeWithdrawn(address indexed to, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ZapInAndOutHelperUpdated
event ZapInAndOutHelperUpdated(address indexed previousHelper, address indexed newHelper)
errors
AutoMarketAlreadyExists
error AutoMarketAlreadyExists()
AutoMarketNotFound
error AutoMarketNotFound()
InvalidAmount
error InvalidAmount()
InvalidFee
error InvalidFee()
InvalidIndex
error InvalidIndex()
InvalidLength
error InvalidLength()
InvalidZapInMarket
error InvalidZapInMarket()
InvalidZapOutMarket
error InvalidZapOutMarket()
LengthMismatch
error LengthMismatch()
NotAllowed
error NotAllowed()
WrappedLPNotConfigured
error WrappedLPNotConfigured()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6150c380620000f46000396000f3fe608060405260043610620002625760003560e01c806384276d811162000147578063c450c84711620000b9578063e66edf981162000078578063e66edf9814620007ee578063e6e97aee1462000805578063f1794900146200082a578063f2fde38b146200084f578063f529e53c146200087457600080fd5b8063c450c8471462000738578063c6fea47c146200075d578063cc2a9a5b146200077f578063cecad78214620007a4578063da15c08614620007c957600080fd5b8063a4c3f4b61162000106578063a4c3f4b61462000648578063aa727975146200066d578063afd0a4aa1462000692578063b7018aca14620006c6578063bb2f6c2014620006eb57600080fd5b806384276d8114620005a15780638980f11f14620005c657806389c75b8214620005eb5780638da5cb5b1462000603578063a17a19fd146200062357600080fd5b8063349bc30711620001e1578063663b310a11620001a0578063663b310a14620004d65780636d79fab114620004fd578063715018a6146200052257806372e4154f146200053a5780637cf738d2146200057f57600080fd5b8063349bc30714620004245780633c41d5ab14620004495780634428c5e3146200046b57806347059c92146200048d578063497f085f14620004b457600080fd5b806319097f87116200022e57806319097f87146200032257806323e5cdfd14620003725780632879ca2414620003975780632b801e3414620003bc5780632c7b09cb14620003e157600080fd5b80624f30cb146200026f578063061be448146200029657806307c9c43214620002bb57806312d8f34f14620002fd57600080fd5b366200026a57005b600080fd5b3480156200027c57600080fd5b50620002946200028e36600462004001565b62000896565b005b348015620002a357600080fd5b5062000294620002b53660046200407d565b620009e3565b348015620002c857600080fd5b50620002e0620002da3660046200414e565b62000c7f565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200030a57600080fd5b50620002946200031c36600462004184565b62000caa565b3480156200032f57600080fd5b506200034762000341366004620041c0565b62000d3c565b604080516001600160a01b0394851681529284166020840152921691810191909152606001620002f4565b3480156200037f57600080fd5b50620002e062000391366004620041de565b62000d8c565b348015620003a457600080fd5b5062000294620003b636600462004001565b62000fdc565b348015620003c957600080fd5b5062000294620003db36600462004001565b62001202565b348015620003ee57600080fd5b5062000406620004003660046200414e565b620014e3565b604080519283526001600160a01b03909116602083015201620002f4565b3480156200043157600080fd5b50620002946200044336600462004001565b6200151b565b3480156200045657600080fd5b50609854620002e0906001600160a01b031681565b3480156200047857600080fd5b50609c54620002e0906001600160a01b031681565b3480156200049a57600080fd5b50620004a560a25481565b604051908152602001620002f4565b348015620004c157600080fd5b50609b54620002e0906001600160a01b031681565b348015620004e357600080fd5b50620004ee6200163f565b604051620002f4919062004228565b3480156200050a57600080fd5b50620002946200051c36600462004184565b620016a3565b3480156200052f57600080fd5b50620002946200172e565b3480156200054757600080fd5b506200056e62000559366004620041c0565b609e6020526000908152604090205460ff1681565b6040519015158152602001620002f4565b3480156200058c57600080fd5b50609754620002e0906001600160a01b031681565b348015620005ae57600080fd5b5062000294620005c03660046200414e565b62001746565b348015620005d357600080fd5b5062000294620005e536600462004001565b6200183f565b348015620005f857600080fd5b50620004a560a35481565b3480156200061057600080fd5b506033546001600160a01b0316620002e0565b3480156200063057600080fd5b50620002946200064236600462004277565b620018a3565b3480156200065557600080fd5b506200029462000667366004620042a6565b620019f5565b3480156200067a57600080fd5b50620002946200068c36600462004001565b62001b3c565b3480156200069f57600080fd5b506200056e620006b1366004620041c0565b609f6020526000908152604090205460ff1681565b348015620006d357600080fd5b506200056e620006e5366004620041c0565b62001d2a565b348015620006f857600080fd5b50620003476200070a366004620041c0565b609d602052600090815260409020805460018201546002909201546001600160a01b03918216928216911683565b3480156200074557600080fd5b50620002946200075736600462004001565b62001d69565b3480156200076a57600080fd5b50609954620002e0906001600160a01b031681565b3480156200078c57600080fd5b50620002946200079e366004620042d5565b62002040565b348015620007b157600080fd5b5062000294620007c336600462004356565b620021d2565b348015620007d657600080fd5b5062000294620007e8366004620041c0565b620023d7565b348015620007fb57600080fd5b5060a054620004a5565b3480156200081257600080fd5b5062000294620008243660046200414e565b6200245b565b3480156200083757600080fd5b506200029462000849366004620043b9565b6200262b565b3480156200085c57600080fd5b50620002946200086e366004620041c0565b62002ad7565b3480156200088157600080fd5b50609a54620002e0906001600160a01b031681565b600260655403620008c45760405162461bcd60e51b8152600401620008bb9062004412565b60405180910390fd5b600260655581600080620008d88362000d3c565b5090925090506001600160a01b0382161580620008fc57506001600160a01b038116155b156200091b57604051636e19bf1160e01b815260040160405180910390fd5b836000036200093d5760405163162908e360e11b815260040160405180910390fd5b6000806200094b8762000d3c565b509092509050620009686001600160a01b03821633308962002b56565b6000620009788883858a62002bc9565b90508015620009d45760408051888152602081018390526000918101919091526001600160a01b0383169033907ff138292808c004beb64fee911990281253f7434a9f7b333de69da503dc8960b9906060015b60405180910390a35b50506001606555505050505050565b60026065540362000a085760405162461bcd60e51b8152600401620008bb9062004412565b6002606555336000908152609f602052604090205460ff1662000a3e57604051631eb49d6d60e11b815260040160405180910390fd5b600087900362000a615760405163251f56a160e21b815260040160405180910390fd5b868514158062000a715750868314155b1562000a93576040516001621398b960e31b0319815260040160405180910390fd5b60005b8781101562000c2c57600089898381811062000ab65762000ab662004449565b905060200201602081019062000acd9190620041c0565b6001600160a01b03160362000af55760405163d92e233d60e01b815260040160405180910390fd5b600087878381811062000b0c5762000b0c62004449565b905060200201602081019062000b239190620041c0565b6001600160a01b03160362000b4b5760405163d92e233d60e01b815260040160405180910390fd5b84848281811062000b605762000b6062004449565b905060200201356000031562000c175762000c1789898381811062000b895762000b8962004449565b905060200201602081019062000ba09190620041c0565b88888481811062000bb55762000bb562004449565b905060200201602081019062000bcc9190620041c0565b87878581811062000be15762000be162004449565b9050602002013586868681811062000bfd5762000bfd62004449565b905060200281019062000c1191906200445f565b62002e6f565b8062000c238162004497565b91505062000a96565b507fa7205086e36abebb4ac368f83ae0f1b523e9bbaa16d9d5d1f572ee191e2ab78f88888888888860405162000c6896959493929190620044fe565b60405180910390a150506001606555505050505050565b60a0818154811062000c9057600080fd5b6000918252602090912001546001600160a01b0316905081565b62000cb46200309c565b6001600160a01b03821662000cdc5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166000818152609f6020908152604091829020805460ff191685151590811790915591519182527f23b6e78666a210162b70b21836abe21a4f4a718a33259a695fa7e31951c5144b91015b60405180910390a25050565b6001600160a01b038082166000908152609d602090815260409182902082516060810184528154851680825260018301548616938201849052600290920154909416939092018390529093909250565b60006001600160a01b03841662000db65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03831662000dde5760405163d92e233d60e01b815260040160405180910390fd5b60005b60a05481101562000e925760008062000e2460a0848154811062000e095762000e0962004449565b6000918252602090912001546001600160a01b031662000d3c565b5091509150866001600160a01b0316826001600160a01b0316148062000e5b5750856001600160a01b0316816001600160a01b0316145b1562000e7a576040516337d5df6f60e01b815260040160405180910390fd5b5050808062000e899062004497565b91505062000de1565b50336000908152609e602052604090205460ff1662000ec457604051631eb49d6d60e11b815260040160405180910390fd5b60975460985460995462000eea926001600160a01b0390811692811691168730620030f8565b604080516060810182526001600160a01b0387811680835287821660208085018281528985168688019081528886166000818152609d8552898120985189549089166001600160a01b0319918216178a5593516001808b018054928b1692871692909217909155925160029099018054999098169884169890981790965560a0805491820181559096527f78fdc8d422c49ced035a9edf18d00d3c6a8d81df210f3e5e448e045e77b41e889095018054909516841790945593519182529394507fc4766ee7adb5d8bb8fa3532146e177d8ea84ca5b3b013876a4fdd6ed86433764910160405180910390a39392505050565b600260655403620010015760405162461bcd60e51b8152600401620008bb9062004412565b600260655581600080620010158362000d3c565b5090925090506001600160a01b03821615806200103957506001600160a01b038116155b156200105857604051636e19bf1160e01b815260040160405180910390fd5b836000036200107a5760405163162908e360e11b815260040160405180910390fd5b6000620010878662000d3c565b50909150620010a490506001600160a01b03821633308862002b56565b60405163a87d7cf360e01b8152600060048201526001600160a01b0387169063a87d7cf390602401600060405180830381600087803b158015620010e757600080fd5b505af1158015620010fc573d6000803e3d6000fd5b5062001117925050506001600160a01b0382168787620031ed565b604051636e553f6560e01b8152600481018690523360248201526000906001600160a01b03881690636e553f65906044016020604051808303816000875af115801562001168573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200118e919062004566565b9050620011a76001600160a01b038316886000620031ed565b604080518781526020810183905260018183015290516001600160a01b0384169133917ff138292808c004beb64fee911990281253f7434a9f7b333de69da503dc8960b99181900360600190a3505060016065555050505050565b600260655403620012275760405162461bcd60e51b8152600401620008bb9062004412565b6002606555816000806200123b8362000d3c565b5090925090506001600160a01b03821615806200125f57506001600160a01b038116155b156200127e57604051636e19bf1160e01b815260040160405180910390fd5b83600003620012a05760405163162908e360e11b815260040160405180910390fd5b6000806000620012b08862000d3c565b919450925090506001600160a01b038116620012df576040516362a254f560e11b815260040160405180910390fd5b620012f66001600160a01b03821633308a62002b56565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156200133e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001364919062004566565b6040516339f4769360e01b8152306004820152602481018a90529091506001600160a01b038316906339f4769390604401600060405180830381600087803b158015620013b057600080fd5b505af1158015620013c5573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03861691506370a0823190602401602060405180830381865afa15801562001411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001437919062004566565b9050600062001447838362004580565b9050806000036200146b5760405163162908e360e11b815260040160405180910390fd5b60006200147b8c87898562002bc9565b90508015620014d057604080518c8152602081018390526001600160a01b03808816929089169133917fd178df1ab1a5b7c8162e2ae477d48424249d6caf5febd35f88fb99c7ded69fb0910160405180910390a45b5050600160655550505050505050505050565b60a18181548110620014f457600080fd5b6000918252602090912060029091020180546001909101549091506001600160a01b031682565b600260655403620015405760405162461bcd60e51b8152600401620008bb9062004412565b600260655581600080620015548362000d3c565b5090925090506001600160a01b03821615806200157857506001600160a01b038116155b156200159757604051636e19bf1160e01b815260040160405180910390fd5b83600003620015b95760405163162908e360e11b815260040160405180910390fd5b600080620015c78762000d3c565b50915091506000620015dc8883858a6200330f565b90508015620015fb57620015fb6001600160a01b038316338362003643565b60408051888152600060208201526001600160a01b0384169133917ff127dae5cb6f7456af8d8b1eef2e0beb21a51aa4e2042340728b731a60ee29e69101620009cb565b606060a08054806020026020016040519081016040528092919081815260200182805480156200169957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200167a575b5050505050905090565b620016ad6200309c565b6001600160a01b038216620016d55760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166000818152609e6020908152604091829020805460ff191685151590811790915591519182527fd70c480bf256bfd0ace5ce4ec1413926a4981e349d0021235c996d6db976b2f6910162000d30565b620017386200309c565b62001744600062003675565b565b336000908152609f602052604090205460ff166200177757604051631eb49d6d60e11b815260040160405180910390fd5b604051600090339083908381818185875af1925050503d8060008114620017bb576040519150601f19603f3d011682016040523d82523d6000602084013e620017c0565b606091505b50509050806200180c5760405162461bcd60e51b815260206004820152601660248201527513905512559157d514905394d1915497d1905253115160521b6044820152606401620008bb565b60405182815233907fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed5049060200162000d30565b620018496200309c565b6200185f6001600160a01b038316338362003643565b60405181815233906001600160a01b038416907faca8fb252cde442184e5f10e0f2e6e4029e8cd7717cae63559079610702436aa9060200160405180910390a35050565b620018ad6200309c565b6127108210620018d0576040516358d620b360e01b815260040160405180910390fd5b604080518082019091528281526001600160a01b038281166020830190815260a18054600181018255600091825293517faadc37b8ba5645e62f4546802db221593a94729ccbfc5a97d01365a88f64987860029095029485015590517faadc37b8ba5645e62f4546802db221593a94729ccbfc5a97d01365a88f64987990930180546001600160a01b0319169390921692909217905560a280548492906200197a9084906200459c565b909155505060a2546127101015620019a5576040516358d620b360e01b815260040160405180910390fd5b60a154620019b69060019062004580565b604080518481526001600160a01b03841660208201527fc64ac9dfd6d828951f8a8cebae059487c506fdc9ca431d94d090d21dc3083907910162000d30565b620019ff6200309c565b612710821062001a22576040516358d620b360e01b815260040160405180910390fd5b60a154831062001a45576040516363df817160e01b815260040160405180910390fd5b600060a1848154811062001a5d5762001a5d62004449565b6000918252602090912060029091020180546001820180546001600160a01b038681166001600160a01b031983161790925560a2549394509192911690859062001aa990849062004580565b62001ab591906200459c565b60a290815585845554612710101562001ae1576040516358d620b360e01b815260040160405180910390fd5b60408051838152602081018790526001600160a01b038381168284015286166060820152905187917f1696065d497a8ce19cd9ac91083e41194a05a89f9245bce3685d8baa044fba9a919081900360800190a2505050505050565b60026065540362001b615760405162461bcd60e51b8152600401620008bb9062004412565b60026065558160008062001b758362000d3c565b5090925090506001600160a01b038216158062001b9957506001600160a01b038116155b1562001bb857604051636e19bf1160e01b815260040160405180910390fd5b8360000362001bda5760405163162908e360e11b815260040160405180910390fd5b600080600062001bea8862000d3c565b919450925090506001600160a01b03811662001c19576040516362a254f560e11b815260040160405180910390fd5b600062001c298984868b6200330f565b9050801562001cc25762001c486001600160a01b0384168383620031ed565b604051635f9bb63d60e11b8152336004820152602481018290526001600160a01b0383169063bf376c7a90604401600060405180830381600087803b15801562001c9157600080fd5b505af115801562001ca6573d6000803e3d6000fd5b5062001cc2925050506001600160a01b038416836000620031ed565b816001600160a01b0316836001600160a01b0316336001600160a01b03167ff85201be4941bc543a1b5e07836c4555a8516411b6da2edaa3acf7041d9337d18b60405162001d1291815260200190565b60405180910390a45050600160655550505050505050565b600080600062001d3a8462000d3c565b5090925090506001600160a01b0382161580159062001d6157506001600160a01b03811615155b949350505050565b60026065540362001d8e5760405162461bcd60e51b8152600401620008bb9062004412565b60026065558160008062001da28362000d3c565b5090925090506001600160a01b038216158062001dc657506001600160a01b038116155b1562001de557604051636e19bf1160e01b815260040160405180910390fd5b8360000362001e075760405163162908e360e11b815260040160405180910390fd5b600062001e148662000d3c565b505060405163a87d7cf360e01b8152600060048201529091506001600160a01b0387169063a87d7cf390602401600060405180830381600087803b15801562001e5c57600080fd5b505af115801562001e71573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03841691506370a0823190602401602060405180830381865afa15801562001ebd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ee3919062004566565b604051635d043b2960e11b8152600481018890523060248201523360448201529091506001600160a01b0388169063ba087652906064016020604051808303816000875af115801562001f3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f60919062004566565b506040516370a0823160e01b815230600482015260009082906001600160a01b038516906370a0823190602401602060405180830381865afa15801562001fab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd1919062004566565b62001fdd919062004580565b9050801562001ffc5762001ffc6001600160a01b038416338362003643565b60408051888152600160208201526001600160a01b0385169133917ff127dae5cb6f7456af8d8b1eef2e0beb21a51aa4e2042340728b731a60ee29e69101620009cb565b600054610100900460ff1615808015620020615750600054600160ff909116105b806200207d5750303b1580156200207d575060005460ff166001145b620020e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620008bb565b6000805460ff19166001179055801562002106576000805461ff0019166101001790555b62002110620036c7565b6200211a620036fb565b609780546001600160a01b03199081166001600160a01b038a811691909117909255609880548216898416179055609980548216888416179055609a80548216878416179055609b80548216868416179055609c805490911691841691909117905561384060a3558015620021c9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b600260655403620021f75760405162461bcd60e51b8152600401620008bb9062004412565b6002606555826000806200220b8362000d3c565b5090925090506001600160a01b03821615806200222f57506001600160a01b038116155b156200224e57604051636e19bf1160e01b815260040160405180910390fd5b84600003620022705760405163162908e360e11b815260040160405180910390fd5b6000620022846040860160208701620041c0565b6001600160a01b031603620022ac5760405163d92e233d60e01b815260040160405180910390fd5b600080620022ba8862000d3c565b5090925090506001600160a01b038116620022d96020880188620041c0565b6001600160a01b0316146200230157604051630314061360e51b815260040160405180910390fd5b60405163a87d7cf360e01b8152600060048201526001600160a01b0389169063a87d7cf390602401600060405180830381600087803b1580156200234457600080fd5b505af115801562002359573d6000803e3d6000fd5b505050506000806200236e8a8a868b6200372f565b90925090508115620023c657604080518a8152602081018490526001600160a01b0380841692908d169133917feaa803ef22b748a0150c843066772d8635e4440edcea8ab57fc7c5415a277ce8910160405180910390a45b505060016065555050505050505050565b620023e16200309c565b6001600160a01b038116620024095760405163d92e233d60e01b815260040160405180910390fd5b609b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0f0222d170fc9563fd6625d8b4ee27d9929ff2d9c35765f286ac529f90aeb94e90600090a35050565b620024656200309c565b60a154811062002488576040516363df817160e01b815260040160405180910390fd5b600060a18281548110620024a057620024a062004449565b60009182526020918290206040805180820190915260029092020180548252600101546001600160a01b0316918101919091529050815b60a154620024e89060019062004580565b811015620025855760a1620024ff8260016200459c565b8154811062002512576200251262004449565b906000526020600020906002020160a1828154811062002536576200253662004449565b600091825260209091208254600290920201908155600191820154910180546001600160a01b0319166001600160a01b03909216919091179055806200257c8162004497565b915050620024d7565b5060a18054806200259a576200259a620045b2565b60008281526020812060026000199093019283020181815560010180546001600160a01b03191690559155815160a2805491929091620025dc90849062004580565b90915550508051602082015160405184927f4d8026a2b033df6b8d495cd17c3d29497c44df0b4a0cda632b36ca2d9db5892d9262000d30929182526001600160a01b0316602082015260400190565b600260655403620026505760405162461bcd60e51b8152600401620008bb9062004412565b600260655582600080620026648362000d3c565b5090925090506001600160a01b03821615806200268857506001600160a01b038116155b15620026a757604051636e19bf1160e01b815260040160405180910390fd5b84600003620026c95760405163162908e360e11b815260040160405180910390fd5b6000620026dd6040860160208701620041c0565b6001600160a01b031603620027055760405163d92e233d60e01b815260040160405180910390fd5b600080620027138862000d3c565b5090925090506001600160a01b038116620027326020880188620041c0565b6001600160a01b0316146200275d576040516001625451fd60e01b0319815260040160405180910390fd5b620027883330896200277660408b0160208c01620041c0565b6001600160a01b031692919062002b56565b60006200279b3688900388018862004674565b60408082018a9052609b54919250620027dc916001600160a01b0316908a90620027cb908b0160208c01620041c0565b6001600160a01b03169190620031ed565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801562002824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200284a919062004566565b609b549091506001600160a01b0316638508f3c08360c08b01620028736101608d018d62004693565b6040518463ffffffff1660e01b81526004016200289393929190620047ca565b600060405180830381600087803b158015620028ae57600080fd5b505af1158015620028c3573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03871691506370a0823190602401602060405180830381865afa1580156200290f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002935919062004566565b9050600062002945838362004580565b90508015620014d05760405163a87d7cf360e01b8152600060048201526001600160a01b038d169063a87d7cf390602401600060405180830381600087803b1580156200299157600080fd5b505af1158015620029a6573d6000803e3d6000fd5b50620029c1925050506001600160a01b0387168d83620031ed565b604051636e553f6560e01b8152600481018290523360248201526000906001600160a01b038e1690636e553f65906044016020604051808303816000875af115801562002a12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a38919062004566565b905062002a516001600160a01b0388168e6000620031ed565b62002a6360408c0160208d01620041c0565b6001600160a01b03168d6001600160a01b0316336001600160a01b03167f2babb1af99dcfecc6dc0c13b56e47cef352f98482e283dc4cc75a3d138b0acbf8f8560405162002abb929190918252602082015260400190565b60405180910390a4505050600160655550505050505050505050565b62002ae16200309c565b6001600160a01b03811662002b485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620008bb565b62002b538162003675565b50565b6040516001600160a01b038085166024830152831660448201526064810182905262002bc39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262003a92565b50505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa15801562002c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c39919062004566565b60995490915062002c58906001600160a01b03878116911685620031ed565b609a5460405163bad55ca160e01b81526001600160a01b038781166004830152602482018690529091169063bad55ca190604401600060405180830381600087803b15801562002ca757600080fd5b505af115801562002cbc573d6000803e3d6000fd5b505060995462002cdd92506001600160a01b038881169250166000620031ed565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562002d25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d4b919062004566565b9050600062002d5b838362004580565b9050801562002e645760405163a87d7cf360e01b8152600060048201526001600160a01b0389169063a87d7cf390602401600060405180830381600087803b15801562002da757600080fd5b505af115801562002dbc573d6000803e3d6000fd5b5062002dd7925050506001600160a01b0387168983620031ed565b604051636e553f6560e01b8152600481018290523360248201526001600160a01b03891690636e553f65906044016020604051808303816000875af115801562002e25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e4b919062004566565b935062002e646001600160a01b038716896000620031ed565b505050949350505050565b60008062002e7d8662000d3c565b509092509050600062002e963685900385018562004674565b9050816001600160a01b031681600001516001600160a01b03161462002ed2576040516001625451fd60e01b0319815260040160405180910390fd5b600062002ee188888862003b6b565b60408301819052609b5490915062002f07906001600160a01b03898116911683620031ed565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562002f4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f75919062004566565b609b549091506001600160a01b0316638508f3c08460c0890162002f9e6101608b018b62004693565b6040518463ffffffff1660e01b815260040162002fbe93929190620047ca565b600060405180830381600087803b15801562002fd957600080fd5b505af115801562002fee573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03881691506370a0823190602401602060405180830381865afa1580156200303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003060919062004566565b9050600062003070838362004580565b905080156200308f576200308f6001600160a01b0388168c8362003643565b5050505050505050505050565b6033546001600160a01b03163314620017445760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620008bb565b604080516001600160a01b038781166024830152868116604483015285811660648301528481166084830152831660a4808301919091528251808303909101815260c49091018252602080820180516001600160e01b0316630a2ca2bd60e11b17905291516000928391620031e191839133916200317890820162003fd6565b601f1982820381018352601f909101166040819052609c54620031ac916001600160a01b0390911690889060200162004880565b60408051601f1981840301815290829052620031cc9291602001620048a6565b60405160208183030381529060405262003d39565b98975050505050505050565b8015806200326b5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562003243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003269919062004566565b155b620032d85760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401620008bb565b6040516001600160a01b0383166024820152604481018290526200330a90849063095ea7b360e01b9060640162002b8b565b505050565b60405163a87d7cf360e01b8152600060048201819052906001600160a01b0386169063a87d7cf390602401600060405180830381600087803b1580156200335557600080fd5b505af11580156200336a573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03861691506370a0823190602401602060405180830381865afa158015620033b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033dc919062004566565b604051635d043b2960e11b8152600481018590523060248201523360448201529091506001600160a01b0387169063ba087652906064016020604051808303816000875af115801562003433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003459919062004566565b506040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015620034a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034c8919062004566565b90506000620034d8838362004580565b9050801562002e64576040516370a0823160e01b81523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa15801562003529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354f919062004566565b609a546040516310ee444960e01b81526001600160a01b038b81166004830152602482018690529293509116906310ee444990604401600060405180830381600087803b158015620035a057600080fd5b505af1158015620035b5573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b038b1691506370a0823190602401602060405180830381865afa15801562003601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003627919062004566565b905062003635828262004580565b9a9950505050505050505050565b6040516001600160a01b0383166024820152604481018290526200330a90849063a9059cbb60e01b9060640162002b8b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620036f15760405162461bcd60e51b8152600401620008bb90620048d9565b6200174462003e4e565b600054610100900460ff16620037255760405162461bcd60e51b8152600401620008bb90620048d9565b6200174462003e83565b6040516370a0823160e01b8152306004820152600090819081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156200377b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a1919062004566565b604051635d043b2960e11b8152600481018890523060248201523360448201529091506001600160a01b0388169063ba087652906064016020604051808303816000875af1158015620037f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200381e919062004566565b506040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa15801562003867573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200388d919062004566565b905060006200389d838362004580565b9050620038b16040870160208801620041c0565b935080600003620038c9576000945050505062003a89565b6000620038dc3688900388018862004674565b60408101839052609b5490915062003902906001600160a01b038a8116911684620031ed565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa1580156200394a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003970919062004566565b609b549091506001600160a01b031663e90a54d3836200399460c08c018c62004693565b6040518363ffffffff1660e01b8152600401620039b392919062004924565b600060405180830381600087803b158015620039ce57600080fd5b505af1158015620039e3573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03891691506370a0823190602401602060405180830381865afa15801562003a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a55919062004566565b905062003a63828262004580565b9750871562003a825762003a826001600160a01b038816338a62003643565b5050505050505b94509492505050565b600062003ae9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662003eb49092919063ffffffff16565b8051909150156200330a578080602001905181019062003b0a919062004948565b6200330a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620008bb565b60008360008062003b7c8362000d3c565b5090925090506001600160a01b038216158062003ba057506001600160a01b038116155b1562003bbf57604051636e19bf1160e01b815260040160405180910390fd5b60405163eb617be360e01b81526001600160a01b0387811660048301526024820187905286955088169063eb617be390604401600060405180830381600087803b15801562003c0d57600080fd5b505af115801562003c22573d6000803e3d6000fd5b5050505060005b60a15481101562003d2e5760006001600160a01b031660a1828154811062003c555762003c5562004449565b60009182526020909120600160029092020101546001600160a01b03161462003d1957600061271060a1838154811062003c935762003c9362004449565b9060005260206000209060020201600001548862003cb2919062004968565b62003cbe919062004982565b905062003ccc818762004580565b9550801562003d175762003d1760a1838154811062003cef5762003cef62004449565b60009182526020909120600160029092020101546001600160a01b038a811691168362003643565b505b8062003d258162004497565b91505062003c29565b505050509392505050565b6000808447101562003d8e5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401620008bb565b825160000362003de15760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401620008bb565b8383516020850187f590506001600160a01b03811662003e445760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401620008bb565b90505b9392505050565b600054610100900460ff1662003e785760405162461bcd60e51b8152600401620008bb90620048d9565b620017443362003675565b600054610100900460ff1662003ead5760405162461bcd60e51b8152600401620008bb90620048d9565b6001606555565b606062003e448484600085856001600160a01b0385163b62003f195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620008bb565b600080866001600160a01b0316858760405162003f379190620049a5565b60006040518083038185875af1925050503d806000811462003f76576040519150601f19603f3d011682016040523d82523d6000602084013e62003f7b565b606091505b509150915062003f8d82828662003f98565b979650505050505050565b6060831562003fa957508162003e47565b82511562003fba5782518084602001fd5b8160405162461bcd60e51b8152600401620008bb9190620049b9565b6106bf80620049cf83390190565b80356001600160a01b038116811462003ffc57600080fd5b919050565b600080604083850312156200401557600080fd5b620040208362003fe4565b946020939093013593505050565b60008083601f8401126200404157600080fd5b50813567ffffffffffffffff8111156200405a57600080fd5b6020830191508360208260051b85010111156200407657600080fd5b9250929050565b6000806000806000806000806080898b0312156200409a57600080fd5b883567ffffffffffffffff80821115620040b357600080fd5b620040c18c838d016200402e565b909a50985060208b0135915080821115620040db57600080fd5b620040e98c838d016200402e565b909850965060408b01359150808211156200410357600080fd5b620041118c838d016200402e565b909650945060608b01359150808211156200412b57600080fd5b506200413a8b828c016200402e565b999c989b5096995094979396929594505050565b6000602082840312156200416157600080fd5b5035919050565b801515811462002b5357600080fd5b803562003ffc8162004168565b600080604083850312156200419857600080fd5b620041a38362003fe4565b91506020830135620041b58162004168565b809150509250929050565b600060208284031215620041d357600080fd5b62003e478262003fe4565b600080600060608486031215620041f457600080fd5b620041ff8462003fe4565b92506200420f6020850162003fe4565b91506200421f6040850162003fe4565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156200426b5783516001600160a01b03168352928401929184019160010162004244565b50909695505050505050565b600080604083850312156200428b57600080fd5b823591506200429d6020840162003fe4565b90509250929050565b600080600060608486031215620042bc57600080fd5b83359250602084013591506200421f6040850162003fe4565b60008060008060008060c08789031215620042ef57600080fd5b620042fa8762003fe4565b95506200430a6020880162003fe4565b94506200431a6040880162003fe4565b93506200432a6060880162003fe4565b92506200433a6080880162003fe4565b91506200434a60a0880162003fe4565b90509295509295509295565b6000806000606084860312156200436c57600080fd5b620043778462003fe4565b925060208401359150604084013567ffffffffffffffff8111156200439b57600080fd5b840160e08187031215620043ae57600080fd5b809150509250925092565b600080600060608486031215620043cf57600080fd5b620043da8462003fe4565b925060208401359150604084013567ffffffffffffffff811115620043fe57600080fd5b84016101808187031215620043ae57600080fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000823561017e198336030181126200447757600080fd5b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b600060018201620044ac57620044ac62004481565b5060010190565b8183526000602080850194508260005b85811015620044f3576001600160a01b03620044df8362003fe4565b1687529582019590820190600101620044c3565b509495945050505050565b6060815260006200451460608301888a620044b3565b828103602084015262004529818789620044b3565b838103604085015284815290506001600160fb1b038411156200454b57600080fd5b8360051b808660208401370160200198975050505050505050565b6000602082840312156200457957600080fd5b5051919050565b8181038181111562004596576200459662004481565b92915050565b8082018082111562004596576200459662004481565b634e487b7160e01b600052603160045260246000fd5b600060c08284031215620045db57600080fd5b60405160c0810181811067ffffffffffffffff821117156200460d57634e487b7160e01b600052604160045260246000fd5b6040529050806200461e8362003fe4565b81526200462e6020840162003fe4565b6020820152604083013560408201526200464b6060840162003fe4565b6060820152608083013560808201526200466860a0840162004177565b60a08201525092915050565b600060c082840312156200468757600080fd5b62003e478383620045c8565b60008235607e198336030181126200447757600080fd5b80516001600160a01b03908116835260208083015182169084015260408083015190840152606080830151909116908301526080808201519083015260a0908101511515910152565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008135600481106200472e57600080fd5b83526001600160a01b03620047466020840162003fe4565b1660208401526040820135601e198336030181126200476457600080fd5b820160208101903567ffffffffffffffff8111156200478257600080fd5b8036038213156200479257600080fd5b60806040860152620047a9608086018284620046f3565b915050620047ba6060840162004177565b8015156060860152509392505050565b6000610180620047db8387620046aa565b843560c0840152602085013560e08401526040850135610100840152606085013561012084015260808501356101408401528061016084015262004822818401856200471c565b9695505050505050565b60005b83811015620048495781810151838201526020016200482f565b50506000910152565b600081518084526200486c8160208601602086016200482c565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009062003e449083018462004852565b60008351620048ba8184602088016200482c565b835190830190620048d08183602088016200482c565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b620049308184620046aa565b60e060c0820152600062003e4460e08301846200471c565b6000602082840312156200495b57600080fd5b815162003e478162004168565b808202811582820484141762004596576200459662004481565b600082620049a057634e487b7160e01b600052601260045260246000fd5b500490565b60008251620044778184602087016200482c565b60208152600062003e4760208301846200485256fe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea264697066735822122086a7b7ad48c0c3adc3335457dfa11de09aa5f5da79544c1e2ca6a52b92c66df764736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cafdb4b1dd0d4c8c43721d7ecbc858dda0985f6063cdb14559754f7ee92f8fc864736f6c63430008130033