14 txs
23 calls
constructor
constructor(address _algebraFactory)
functions
afterCreatePoolHook
viewfunction afterCreatePoolHook(address, address, address) view
ALGEBRA_BASE_PLUGIN_FACTORY_ADMINISTRATOR
viewfunction ALGEBRA_BASE_PLUGIN_FACTORY_ADMINISTRATOR() view returns (bytes32)
algebraFactory
viewfunction algebraFactory() view returns (address)
defaultFeeConfiguration
viewfunction defaultFeeConfiguration() view returns (uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint16 baseFee)
dynamicFeeStatus
viewfunction dynamicFeeStatus() view returns (bool)
pluginByPool
viewfunction pluginByPool(address poolAddress) view returns (address pluginAddress)
securityRegistry
viewfunction securityRegistry() view returns (address)
slidingFeeStatus
viewfunction slidingFeeStatus() view returns (bool)
beforeCreatePoolHook
nonpayablefunction beforeCreatePoolHook(address pool, address, address, address, address, bytes) returns (address)
createPluginForExistingPool
nonpayablefunction createPluginForExistingPool(address token0, address token1) returns (address)
setDefaultFeeConfiguration
nonpayablefunction setDefaultFeeConfiguration(tuple newConfig)
setDynamicFeeStatus
nonpayablefunction setDynamicFeeStatus(bool status)
setSecurityRegistry
nonpayablefunction setSecurityRegistry(address _securityRegistry)
setSlidingFeeStatus
nonpayablefunction setSlidingFeeStatus(bool status)
events
DefaultFeeConfiguration
event DefaultFeeConfiguration((uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint16 baseFee) newConfig)
DynamicFeeStatus
event DynamicFeeStatus(bool isEnabled)
SecurityRegistry
event SecurityRegistry(address securityRegistry)
SlidingFeeStatus
event SlidingFeeStatus(bool isEnabled)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162005b7b38038062005b7b833981016040819052620000349162000249565b6001600160a01b0381166080526200004b620001bf565b80516000805460208401516040808601516060870151608088015160a089015160c09099015161ffff908116600160801b0261ffff60801b199a8216600160701b0261ffff60701b199383166c01000000000000000000000000029390931663ffffffff60601b1963ffffffff958616680100000000000000000263ffffffff60401b19969097166401000000000295909516600160201b600160601b0319988416620100000263ffffffff19909a1693909b16929092179790971795909516979097179190911716919091179390931793909316929092178255517fe04232512a5cb82c08e0f9b1f51432930cd7a0b7ea9f9f916f080cb0b4ac644b91620001b091600060e082019050825461ffff8082168452808260101c16602085015263ffffffff808360201c166040860152808360401c16606086015250808260601c166080850152808260701c1660a0850152808260801c1660c0850152505092915050565b60405180910390a150620002ac565b6040805160e08082018352600080835260208301819052828401819052606083018190526080830181905260a0830181905260c0830152825190810190925290806200020f6064610bb86200027b565b61ffff168152612ee06020820152610168604082015261ea606060820152603b608082015261213460a0820152606460c090910152919050565b6000602082840312156200025c57600080fd5b81516001600160a01b03811681146200027457600080fd5b9392505050565b61ffff828116828216039080821115620002a557634e487b7160e01b600052601160045260246000fd5b5092915050565b60805161587b620003006000396000818161026c015281816103530152818161048b01528181610585015281816105cc015281816107d8015281816108f20152818161094c0152610aa2015261587b6000f3fe60806040523480156200001157600080fd5b5060043610620000fd5760003560e01c80639b21f9ae1162000097578063cddff269116200006e578063cddff26914620002ad578063cdef16f614620002d3578063eb7bfd7014620002ff578063f718949a146200031257600080fd5b80639b21f9ae146200024c578063a7b64b041462000266578063b7c53e79146200028e57600080fd5b80632773302611620000d85780632773302614620001665780634e09a96a146200017d57806364fae8a9146200021e5780638d5ef8d1146200023557600080fd5b8063038011651462000102578063141773b3146200011b5780631d0338d91462000132575b600080fd5b620001196200011336600462000e1c565b62000329565b005b620001196200012c36600462000e1c565b62000461565b620001496200014336600462000e59565b62000578565b6040516001600160a01b0390911681526020015b60405180910390f35b620001496200017736600462000f38565b620005c7565b600054620001d59061ffff8082169162010000810482169163ffffffff640100000000830481169268010000000000000000810490911691600160601b8204811691600160701b8104821691600160801b9091041687565b6040805161ffff9889168152968816602088015263ffffffff9586169087015293909216606085015284166080840152831660a08301529190911660c082015260e0016200015d565b620001196200022f36600462000f76565b620007ae565b620001196200024636600462000f96565b620008e7565b60015462000149906201000090046001600160a01b031681565b620001497f000000000000000000000000000000000000000000000000000000000000000081565b6001546200029c9060ff1681565b60405190151581526020016200015d565b620002c46000805160206200584f83398151915281565b6040519081526020016200015d565b62000149620002e436600462000f76565b6002602052600090815260409020546001600160a01b031681565b6001546200029c90610100900460ff1681565b620001196200032336600462000fe8565b62000922565b60405163e8ae2b6960e01b81526000805160206200584f83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c9919062001001565b620003f15760405162461bcd60e51b8152600401620003e89062001021565b60405180910390fd5b600154610100900460ff161515811515036200040c57600080fd5b600180548215156101000261ff00199091161790556040517fed914f77b4ee9da92dc44eca05265d7b168564af723f7315a29219a7c4ec0806906200045690831515815260200190565b60405180910390a150565b60405163e8ae2b6960e01b81526000805160206200584f83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015620004db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000501919062001001565b620005205760405162461bcd60e51b8152600401620003e89062001021565b60015460ff161515811515036200053657600080fd5b6001805460ff19168215159081179091556040519081527f58f9428857bb2169a30823bdc57081bfb2f6b106893f90bb9317d878967490bb9060200162000456565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620005b057600080fd5b620005bb8862000a3f565b98975050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663e8ae2b69826001600160a01b031663b500a48b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200063b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200066191906200104d565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa158015620006a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006ca919062001001565b620006d457600080fd5b60405163d9a641e160e01b81526001600160a01b03858116600483015284811660248301526000919083169063d9a641e190604401602060405180830381865afa15801562000727573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200074d919062001067565b90506001600160a01b038116620007985760405162461bcd60e51b815260206004820152600e60248201526d141bdbdb081b9bdd08195e1a5cdd60921b6044820152606401620003e8565b620007a38162000a3f565b925050505b92915050565b60405163e8ae2b6960e01b81526000805160206200584f83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa15801562000828573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084e919062001001565b6200086d5760405162461bcd60e51b8152600401620003e89062001021565b6001546001600160a01b038083166201000090920416036200088e57600080fd5b6001805462010000600160b01b031916620100006001600160a01b038416908102919091179091556040519081527f9c2a61186234594f572ba9fd3d6137c9e751c20d5cad21e5c4bf008a768b36579060200162000456565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146200091d57600080fd5b505050565b60405163e8ae2b6960e01b81526000805160206200584f83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156200099c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c2919062001001565b620009e15760405162461bcd60e51b8152600401620003e89062001021565b620009fc620009f636839003830183620010ca565b62000d27565b80600062000a0b8282620011b6565b9050507fe04232512a5cb82c08e0f9b1f51432930cd7a0b7ea9f9f916f080cb0b4ac644b816040516200045691906200130b565b6001600160a01b038181166000908152600260205260408120549091161562000a9d5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818dc99585d1959608a1b6044820152606401620003e8565b6000827f00000000000000000000000000000000000000000000000000000000000000003060405162000ad09062000dff565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000b0d573d6000803e3d6000fd5b5060408051630e9c90af60e11b815260005461ffff8082166004840152601082901c8116602484015263ffffffff602083901c811660448501529382901c9093166064830152606081901c83166084830152607081901c831660a483015260801c90911660c48201529091506001600160a01b03821690631d39215e9060e401600060405180830381600087803b15801562000ba857600080fd5b505af115801562000bbd573d6000803e3d6000fd5b505060015460405163107efa5d60e11b815260ff909116151560048201526001600160a01b03841692506320fdf4ba9150602401600060405180830381600087803b15801562000c0c57600080fd5b505af115801562000c21573d6000803e3d6000fd5b50506001546040516364fae8a960e01b8152620100009091046001600160a01b039081166004830152841692506364fae8a99150602401600060405180830381600087803b15801562000c7357600080fd5b505af115801562000c88573d6000803e3d6000fd5b505060015460405163f860df9d60e01b815261010090910460ff16151560048201526001600160a01b038416925063f860df9d9150602401600060405180830381600087803b15801562000cdb57600080fd5b505af115801562000cf0573d6000803e3d6000fd5b505050506001600160a01b03928316600090815260026020526040902080546001600160a01b031916938216939093179092555090565b60c08101516020820151825161ffff9283169162000d4b91908416908416620013c2565b62000d579190620013c2565b111562000d9a5760405162461bcd60e51b815260206004820152601060248201526f13585e0819995948195e18d95959195960821b6044820152606401620003e8565b608081015161ffff161580159062000db9575060a081015161ffff1615155b62000dfc5760405162461bcd60e51b8152602060048201526012602482015271047616d6d6173206d757374206265203e20360741b6044820152606401620003e8565b50565b61446a80620013e583390190565b801515811462000dfc57600080fd5b60006020828403121562000e2f57600080fd5b813562000e3c8162000e0d565b9392505050565b6001600160a01b038116811462000dfc57600080fd5b600080600080600080600060c0888a03121562000e7557600080fd5b873562000e828162000e43565b9650602088013562000e948162000e43565b9550604088013562000ea68162000e43565b9450606088013562000eb88162000e43565b9350608088013562000eca8162000e43565b925060a088013567ffffffffffffffff8082111562000ee857600080fd5b818a0191508a601f83011262000efd57600080fd5b81358181111562000f0d57600080fd5b8b602082850101111562000f2057600080fd5b60208301945080935050505092959891949750929550565b6000806040838503121562000f4c57600080fd5b823562000f598162000e43565b9150602083013562000f6b8162000e43565b809150509250929050565b60006020828403121562000f8957600080fd5b813562000e3c8162000e43565b60008060006060848603121562000fac57600080fd5b833562000fb98162000e43565b9250602084013562000fcb8162000e43565b9150604084013562000fdd8162000e43565b809150509250925092565b600060e0828403121562000ffb57600080fd5b50919050565b6000602082840312156200101457600080fd5b815162000e3c8162000e0d565b60208082526012908201527127b7363c9030b236b4b734b9ba3930ba37b960711b604082015260600190565b6000602082840312156200106057600080fd5b5051919050565b6000602082840312156200107a57600080fd5b815162000e3c8162000e43565b61ffff8116811462000dfc57600080fd5b8035620010a58162001087565b919050565b63ffffffff8116811462000dfc57600080fd5b8035620010a581620010aa565b600060e08284031215620010dd57600080fd5b60405160e0810181811067ffffffffffffffff821117156200110f57634e487b7160e01b600052604160045260246000fd5b6040526200111d8362001098565b81526200112d6020840162001098565b60208201526200114060408401620010bd565b60408201526200115360608401620010bd565b6060820152620011666080840162001098565b60808201526200117960a0840162001098565b60a08201526200118c60c0840162001098565b60c08201529392505050565b60008135620007a88162001087565b60008135620007a881620010aa565b8135620011c38162001087565b61ffff8116905081548161ffff1982161783556020840135620011e68162001087565b63ffff00008160101b169050808363ffffffff1984161717845560408501356200121081620010aa565b67ffffffff000000008160201b168467ffffffffffffffff19851617831717855550505050620012716200124760608401620011a7565b82546bffffffff0000000000000000191660409190911b6bffffffff000000000000000016178255565b620012a3620012836080840162001198565b82805461ffff60601b191660609290921b61ffff60601b16919091179055565b620012d5620012b560a0840162001198565b82805461ffff60701b191660709290921b61ffff60701b16919091179055565b62001307620012e760c0840162001198565b82805461ffff60801b191660809290921b61ffff60801b16919091179055565b5050565b60e0810182356200131c8162001087565b61ffff9081168352602084013590620013358262001087565b90811660208401526040840135906200134e82620010aa565b63ffffffff91821660408501526060850135916200136c83620010aa565b919091166060840152608084013590620013868262001087565b1660808301526200139a60a0840162001098565b61ffff1660a0830152620013b160c0840162001098565b61ffff811660c08401525092915050565b80820180821115620007a857634e487b7160e01b600052601160045260246000fdfe60e060405262010003805463ffffffff1916630bb803e81790553480156200002657600080fd5b506040516200446a3803806200446a8339810160408190526200004991620000c9565b6001600160a01b0390811660c0529182166080521660a052604080518082019091526c01000000000000000000000000808252602091909101527c0100000000000000000000000000000001000000000000000000000000620100025562000113565b80516001600160a01b0381168114620000c457600080fd5b919050565b600080600060608486031215620000df57600080fd5b620000ea84620000ac565b9250620000fa60208501620000ac565b91506200010a60408501620000ac565b90509250925092565b60805160a05160c0516142a9620001c160003960008181610808015281816109dd01528181610b2a01528181610ce2015281816112f301526113f101526000818161085801528181610a2d01528181610b7a01528181610d33015281816111320152818161134301526114410152600081816102980152818161077701528181610f8b015281816115190152818161168b01528181611b3d01528181611c5501526128fe01526142a96000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063689ea37011610125578063a37a8456116100ad578063e72c652d1161007c578063e72c652d14610654578063ebda0c0514610667578063f5985d351461067b578063f70d9362146106a8578063f860df9d146106b057600080fd5b8063a37a845614610608578063aa6b14bb1461061b578063d68520101461062e578063da7052351461064157600080fd5b806382dd6522116100f457806382dd65221461057957806388f2e8621461058c5780638de0a8ee146105c15780639cb5a963146105d45780639d3a5241146105e757600080fd5b8063689ea370146104dd57806374eceae6146104f75780637b3de5c6146105615780638129fc1c1461057157600080fd5b80632ae2a086116101a85780633b586c7f116101775780633b586c7f1461042d57806358e31bfd146104405780635e2411b214610480578063636fd804146104b757806364fae8a9146104ca57600080fd5b80632ae2a086146103a157806331b25d1a146103c8578063343d37ff146103eb578063392e53cd1461041757600080fd5b80631d39215e116101e45780631d39215e146102d25780631e5eb1d0146102e757806320501a911461037457806320fdf4ba1461038e57600080fd5b8063029c1cb7146102165780630786feb61461025a57806308cd19751461027d57806316f0115b14610293575b600080fd5b6102296102243660046137cf565b6106c3565b604080516001600160e01b0319909416845262ffffff92831660208501529116908201526060015b60405180910390f35b620100015461026a9061ffff1681565b60405161ffff9091168152602001610251565b620100035461026a9062010000900461ffff1681565b6102ba7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610251565b6102e56102e0366004613879565b6107fd565b005b61032c60005461ffff80821692601083901c82169263ffffffff602082901c811693604083901c90911692606083901c821692607081901c83169260809190911c1690565b6040805161ffff9889168152968816602088015263ffffffff9586169087015293909216606085015284166080840152831660a08301529190911660c082015260e001610251565b6201000354600160281b90046001600160a01b03166102ba565b6102e561039c366004613891565b6109d2565b62010003546103b890640100000000900460ff1681565b6040519015158152602001610251565b6103dd60008051602061427d83398151915281565b604051908152602001610251565b6103fe6103f93660046138ae565b610af6565b6040516001600160e01b03199091168152602001610251565b62010001546103b890600160301b900460ff1681565b6102e561043b36600461393d565b610b1f565b6201000254610460906001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610251565b61049361048e36600461397b565b610c46565b604080516001600160e01b0319909316835262ffffff909116602083015201610251565b6103fe6104c5366004613a1a565b610c8c565b6102e56104d8366004613a53565b610cb0565b6104e560d781565b60405160ff9091168152602001610251565b61050a610505366004613a70565b610de8565b60408051971515885263ffffffff909616602088015260069490940b948601949094526001600160581b039091166060850152600290810b60808501529190910b60a083015261ffff1660c082015260e001610251565b620100035461026a9061ffff1681565b6102e5610e50565b6103fe610587366004613a89565b610f73565b61059f61059a366004613ae8565b611027565b6040805160069390930b83526001600160581b03909116602083015201610251565b6103fe6105cf366004613b03565b61107d565b6103fe6105e2366004613b7f565b6110a3565b6105fa6105f5366004613c74565b6110cd565b604051610251929190613d21565b6102e561061636600461393d565b611109565b6103fe610629366004613da8565b6111f4565b6103fe61063c366004613dca565b61120d565b6102e561064f366004613e32565b611237565b6102e5610662366004613e60565b6112e8565b6000546103b890600160901b900460ff1681565b62010001546106939062010000900463ffffffff1681565b60405163ffffffff9091168152602001610251565b61026a6113ca565b6102e56106be366004613891565b6113e6565b60008060006106d061150e565b60008054600160901b900460ff166106e6611588565b6000806106f1611683565b509250925050600061070161171b565b905061070b6117c5565b831561072a57600061071b611895565b9050610726816118d7565b9550505b6201000354640100000000900460ff161561074f5761074c8e84838789611916565b94505b8161ffff168561ffff16146107dc57604051638e00555360e01b815261ffff861660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638e00555390602401600060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b505050505b5063029c1cb760e01b9f60009f508f9e509c50505050505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108cb575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156108a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cb9190613e97565b6108d457600080fd5b6108eb6108e636839003830183613eb4565b611a3d565b61096c6108fd36839003830183613eb4565b600080826000015161ffff166010846020015161ffff16901b6020856040015163ffffffff16901b6040866060015163ffffffff16901b6060876080015161ffff16901b60708860a0015161ffff16901b60808960c0015161ffff16901b171717171717905080915050919050565b6000805471ffffffffffffffffffffffffffffffffffff19166001600160901b03929092169190911790556040517f348d1d6a31fa4a2a3ef887c493549a9500fbb77b5218be0c81a71c553364305a906109c7908390613f6c565b60405180910390a150565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610aa0575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190613e97565b610aa957600080fd5b60008054821515600160901b0260ff60901b199091161790556040517f58f9428857bb2169a30823bdc57081bfb2f6b106893f90bb9317d878967490bb906109c790831515815260200190565b6000610b0061150e565b610b0a60d7611b09565b5063343d37ff60e01b98975050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610bed575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190613e97565b610bf657600080fd5b62010003805463ffff000019166201000061ffff8416908102919091179091556040519081527fc91eb493942701aff5078930c9629ab20229818e33e54743671490dcf57a7b10906020016109c7565b600080610c5161150e565b600085600f0b1215610c6a57610c65611ba5565b610c72565b610c72611588565b50632f1208d960e11b905060005b97509795505050505050565b6000610c9661150e565b610ca060d7611b09565b506318dbf60160e21b5b92915050565b62010003805465010000000000600160c81b031916600160281b6001600160a01b0384811691909102919091179091557f000000000000000000000000000000000000000000000000000000000000000016331480610da6575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da69190613e97565b610daf57600080fd5b6040516001600160a01b03821681527f9c2a61186234594f572ba9fd3d6137c9e751c20d5cad21e5c4bf008a768b3657906020016109c7565b600181620100008110610dfa57600080fd5b015460ff81169150610100810463ffffffff1690600160281b810460060b90600160601b81046001600160581b031690600160b81b8104600290810b91600160d01b810490910b90600160e81b900461ffff1687565b6201000154600160301b900460ff1615610ea75760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b30610eb0611c51565b6001600160a01b031614610efc5760405162461bcd60e51b8152602060048201526013602482015272141b1d59da5b881b9bdd08185d1d1858da1959606a1b6044820152606401610e9e565b600080610f07611683565b505091509150816001600160a01b0316600003610f665760405162461bcd60e51b815260206004820152601760248201527f506f6f6c206973206e6f7420696e697469616c697a65640000000000000000006044820152606401610e9e565b610f6f81611cda565b5050565b6000610f7d61150e565b610f8682611cda565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638e0055539060801c61ffff166040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b158015610ffd57600080fd5b505af1158015611011573d6000803e3d6000fd5b5063416eb29160e11b93505050505b9392505050565b6000806000611034611683565b5050620100015490925061ffff1690506000611051600183611d22565b9050600061106460014289878787611d55565b6040810151606090910151909890975095505050505050565b600061108761150e565b61108f611588565b506346f0547760e11b5b9695505050505050565b60006110ad61150e565b6110b760d7611b09565b50639cb5a96360e01b9998505050505050505050565b60608060006110da611683565b50509150506110ff6110e94290565b6201000154600191908790859061ffff16611f9f565b9250925050915091565b60405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015611181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a59190613e97565b6111ae57600080fd5b62010003805461ffff191661ffff83169081179091556040519081527f1011f83fc34609d67eda9d83258819bf0713ae683f06389bbd69417645eed046906020016109c7565b60006111fe61150e565b5063aa6b14bb60e01b92915050565b600061121761150e565b61122160d7611b09565b50630d68520160e41b9998505050505050505050565b60018261ffff1662010000811061125057611250614011565b015460ff161561125f57600080fd5b60008161ffff1611801561128857508061ffff168261ffff611281919061403d565b61ffff1610155b61129157600080fd5b61ffff82165b81830161ffff168110156112e357600180826201000081106112bb576112bb614011565b01805463ffffffff929092166101000264ffffffff0019909216919091179055600101611297565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113b6575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190613e97565b6113bf57600080fd5b6112e38382846120f1565b6000806113d5611895565b90506113e0816118d7565b91505090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114b4575060405163e8ae2b6960e01b815260008051602061427d83398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190613e97565b6114bd57600080fd5b6201000380548215156401000000000264ff00000000199091161790556040517fed914f77b4ee9da92dc44eca05265d7b168564af723f7315a29219a7c4ec0806906109c790831515815260200190565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115865760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920706f6f6c2063616e2063616c6c20746869730000000000000000006044820152606401610e9e565b565b6201000354600160281b90046001600160a01b0316156115865762010003546040516315d9d2f960e01b8152336004820152600091600160281b90046001600160a01b0316906315d9d2f9906024016020604051808303816000875af11580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190614058565b9050600081600281111561163057611630614079565b1461168057600281600281111561164957611649614079565b03611667576040516306756ca560e21b815260040160405180910390fd5b604051632930fa1560e11b815260040160405180910390fd5b50565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b919061408f565b5093989297509095509350915050565b6201000154600090819060019061ffff1662010000811061173e5761173e614011565b6040805160e081018252919092015460ff811615158252610100810463ffffffff166020830152600160281b810460060b92820192909252600160601b82046001600160581b03166060820152600160b81b8204600290810b60808301819052600160d01b840490910b60a0830152600160e81b90920461ffff1660c09091015292915050565b620100015461ffff81169062010000810463ffffffff1690600160301b900460ff16806118265760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610e9e565b4263ffffffff8082169084160361183d5750505050565b6000611847611683565b509092506000915061185e9050600187858561215b565b5062010001805463ffffffff909516620100000265ffffffffffff1990951661ffff90921691909117939093179092555050505050565b600042816118a1611683565b5050620100015490925061ffff16905060006118be600183611d22565b90506118ce6001858585856123a4565b94505050505090565b600080546001600160901b0381169060101c61ffff1661ffff82161761ffff1660000361190c57608081901c61ffff16611020565b6110208382612605565b6040805180820190915260008082526020820181905290620100035461ffff1660008561195157620100035462010000900461ffff16611953565b845b90508660020b8860020b146119945761196d8888846126a0565b805160208201516001600160801b03908116600160801b02911617620100025592506119c1565b6040805180820190915262010002546001600160801b038082168352600160801b90910416602082015292505b6000896119ee5760208401516060906119e7906001600160801b031661ffff851661411c565b901c611a0d565b8351606090611a0a906001600160801b031661ffff851661411c565b901c5b905061ffff811115611a22575061ffff611a2e565b80600003611a2e575060015b93505050505b95945050505050565b60c08101516020820151825161ffff92831691611a5f91908416908416614133565b611a699190614133565b1115611aaa5760405162461bcd60e51b815260206004820152601060248201526f13585e0819995948195e18d95959195960821b6044820152606401610e9e565b608081015161ffff1615801590611ac8575060a081015161ffff1615155b6116805760405162461bcd60e51b8152602060048201526012602482015271047616d6d6173206d757374206265203e20360741b6044820152606401610e9e565b6000611b13611683565b93505050508160ff168160ff1614610f6f5760405163bca57f8160e01b815260ff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bca57f8190602401600060405180830381600087803b158015611b8957600080fd5b505af1158015611b9d573d6000803e3d6000fd5b505050505050565b62010003546040516315d9d2f960e01b8152336004820152600091600160281b90046001600160a01b0316906315d9d2f9906024016020604051808303816000875af1158015611bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1d9190614058565b90506002816002811115611c3357611c33614079565b03611680576040516306756ca560e21b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef01df4f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd59190614146565b905090565b42611ce760018284612842565b62010001805466ff0000000000001963ffffffff841662010000021666ffffffffff00001990911617600160301b179055610f6f60416128c6565b6000600182018361ffff8216620100008110611d4057611d40614011565b015460ff1615611d4e578091505b5092915050565b611d5d613727565b84860360008080611d718b8b868a8a612967565b506040805160e081018252845460ff811615158252610100810463ffffffff90811660208401819052600160281b830460060b94840194909452600160601b82046001600160581b03166060840152600160b81b8204600290810b6080850152600160d01b8304900b60a0840152600160e81b90910461ffff1660c0830152909950939650919450925090851603611e0c5750505050611099565b8015611e4a57600080611e2c8d878c8c8c8c602001518d60400151612b29565b91509150611e3d87878c8585612b50565b9650505050505050611099565b815463ffffffff6101008204811691600160281b900460060b908616829003611ef35750506040805160e081018252925460ff811615158452610100810463ffffffff166020850152600160281b810460060b91840191909152600160601b81046001600160581b03166060840152600160b81b8104600290810b6080850152600160d01b8204900b60a0840152600160e81b900461ffff1660c0830152509250611099915050565b602087015160408801518184039188039063ffffffff80831691908416600690810b918603900b81611f2757611f27614163565b60408c01805192909105929092020160060b90526060890151865463ffffffff80841692908516916001600160581b03600160601b9091048116919091031681611f7357611f73614163565b60608c0180516001600160581b0393909204939093020116905250505050505050509695505050505050565b825160609081908067ffffffffffffffff811115611fbf57611fbf613c2d565b604051908082528060200260200182016040528015611fe8578160200160208202803683370190505b5092508067ffffffffffffffff81111561200457612004613c2d565b60405190808252806020026020018201604052801561202d578160200160208202803683370190505b509150600061203c8986611d22565b9050612046613727565b60005b838110156120e3576120788b8b8b848151811061206857612068614011565b60200260200101518b8b88611d55565b91508160400151826060015187838151811061209657612096614011565b602002602001018784815181106120af576120af614011565b60200260200101826001600160581b03166001600160581b03168152508260060b60060b8152505050806001019050612049565b505050509550959350505050565b600060405163a9059cbb60e01b6000526001600160a01b03841660045282602452602060006044600080895af19150813d1560203d14600160005114161716915080604052508061215557604051637232c81f60e11b815260040160405180910390fd5b50505050565b6000806000868661ffff1662010000811061217857612178614011565b6040805160e081018252919092015460ff811615158252610100810463ffffffff90811660208401819052600160281b830460060b94840194909452600160601b82046001600160581b03166060840152600160b81b8204600290810b6080850152600160d01b8304900b60a0840152600160e81b90910461ffff1660c08301529092508616900361221157856000925092505061239b565b856001019250868361ffff1662010000811061222f5761222f614011565b015460ff161561223d578291505b6000806122578988888b8888602001518960400151612b29565b915091508461ffff168161ffff160361226e576001015b61227b8388888585612b50565b898661ffff1662010000811061229357612293614011565b825191018054602084015160408501516060860151608087015160a088015160c09098015164ffffffffff1990951696151564ffffffff0019169690961761010063ffffffff909416939093029290921776ffffffffffffffffffffffffffffffffffff00000000001916600160281b66ffffffffffffff909216919091026affffffffffffffffffffff60601b191617600160601b6001600160581b03909216919091021765ffffffffffff60b81b1916600160b81b62ffffff9485160262ffffff60d01b191617600160d01b93909416929092029290921761ffff60e81b1916600160e81b61ffff928316021790915585811690851603612397576001909301925b5050505b94509492505050565b600080868461ffff166201000081106123bf576123bf614011565b018054909150610100810463ffffffff90811690881614906001600160581b03600160601b8204169061ffff600160e81b909104168261240b576124088a8a60008b8b8b612bd7565b91505b60008a8761ffff1662010000811061242557612425614011565b0154610100900463ffffffff169050612445816201517f198c018c612d10565b15612570576000841561253e578b8361ffff1662010000811061246a5761246a614011565b0154610100900463ffffffff168c61ffff851662010000811061248f5761248f614011565b0154909250600160601b90046001600160581b031690506000828d6001860161ffff166201000081106124c4576124c4614011565b015463ffffffff610100909104811691909103915081811690848e036201517f190116838f61ffff600189011662010000811061250357612503614011565b01600001600c9054906101000a90046001600160581b031603026001600160581b03168161253357612533614163565b048201915050612552565b61254f8c8c620151808d8d8d612bd7565b90505b620151806001600160581b0382860316049650505050505050611a34565b8063ffffffff168a63ffffffff16146125f75760008b8861ffff1662010000811061259d5761259d614011565b0154600160601b90046001600160581b03169050818b03600163ffffffff821611156125c857600019015b8063ffffffff168286036001600160581b0316816125e8576125e8614163565b04975050505050505050611a34565b505050505095945050505050565b6000600f6001600160581b038416049250600061264e6001600160581b038516607085901c61ffff16601086901c61ffff16604087901c63ffffffff165b63ffffffff16612d38565b6126796001600160581b038616606086901c61ffff1661ffff8716602088901c63ffffffff16612643565b01905061ffff608084901c811682019081111561269857612698614179565b949350505050565b604080518082019091526000808252602082015260008360020b8560020b6126c8919061418f565b90506126d7620d89e7196141af565b60020b8113156126f8576126ee620d89e7196141af565b60020b905061270b565b620d89e71981121561270b5750620d89e7195b600061271682612dec565b6001600160a01b031690506000600160601b6127338380836130c7565b61273d919061418f565b905060006103e861275261ffff8816846141d1565b61275c9190614201565b6040805180820190915262010002546001600160801b03808216808452600160801b90920416602083015290965090915060009061279e908390600f0b61418f565b90508060001280156127b35750600160611b81125b156127f4576040518060400160405280826001600160801b031681526020018388602001516127e2919061423d565b6001600160801b031690529550612836565b6000811361281b576040805180820190915260008152600160611b60208201529550612836565b60408051808201909152600160611b81526000602082015295505b50505050509392505050565b8254839060ff1615612867576040516308ab11a360e11b815260040160405180910390fd5b8054600165ffffffffffff60b81b19909116600160d01b62ffffff9490941693840262ffffff60b81b191617600160b81b939093029290921764ffffffffff191661010063ffffffff949094169390930260ff19169290921717905550565b60006128d0611683565b93505050828217905060ff808316908216146112e35760405163bca57f8160e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bca57f8190602401600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b50505050505050565b6000806000806000898761ffff1662010000811061298757612987614011565b01805490915063ffffffff610100820481169161ffff600160e81b90910416908a8116908c1614806129bf57506129bf828b8d612d10565b156129db575090945084935060019250505061ffff8516612b1d565b6000620151808b840363ffffffff1611612a0957819850620151808c0363ffffffff168b63ffffffff161490505b60008d8a61ffff16620100008110612a2357612a23614011565b0154610100900463ffffffff169050612a3d818d8f612d10565b612a595760405162bc60f160e41b815260040160405180910390fd5b8b63ffffffff168163ffffffff1603612ab9578d8a61ffff16620100008110612a8457612a84614011565b018e8b61ffff16620100008110612a9d57612a9d614011565b919a50019750600196505061ffff89169450612b1d9350505050565b8960010161ffff168b61ffff1603612afe578d8a61ffff16620100008110612ae357612ae3614011565b019850939650600095505061ffff88169350612b1d92505050565b50612b0d8d8d8d8d8d86613160565b9199509750600096509450505050505b95509550955095915050565b600080600080612b3e8b8b8b8b8b8b8b6131ae565b909c909b509950505050505050505050565b612b58613727565b6020860180516001885263ffffffff878116909252604088018051918803928316600288810b82810290940160060b90925260a08a0151612ba29391928291810b9089900b6132e6565b606088018051919091016001600160581b031690525050600292830b6080860152910b60a084015261ffff1660c08301525090565b6000848603818080612bec8b8b868a8a612967565b508254929550909350915063ffffffff61010082048116916001600160581b03600160601b90910416908616829003612c2c579550611099945050505050565b8215612c93576000612c548e888d8d8d888c60000160059054906101000a900460060b612b29565b508654909150612c839063ffffffff858a03169060028e810b918291600160d01b909104810b9086900b6132e6565b8201975050505050505050611099565b835463ffffffff61010082048116916001600160581b03600160601b90910416908816829003612ccc5797506110999650505050505050565b83820384890363ffffffff8082169083166001600160581b038786031681612cf657612cf6614163565b040285019a50505050505050505050509695505050505050565b63ffffffff808216848216811091841611810361102057505063ffffffff9081169116111590565b600081851115612d985781850394508361ffff166006028510612d60575061ffff8216612698565b600461ffff85160a6000612d75878784613341565b9050808201818661ffff160281612d8e57612d8e614163565b0492505050612698565b93810393600661ffff8516028510612db257506000612698565b600461ffff85160a6000612dc7878784613341565b8201905080828661ffff160281612de057612de0614163565b04979650505050505050565b6000600282900b60171d62ffffff818401821816620d89e8811115612e2457604051633c10250f60e01b815260040160405180910390fd5b600160801b6001821615612e4557506ffffcb933bd6fad37aa2d162d1a5940015b6002821615612e64576ffff97272373d413259a46990580e213a0260801c5b6004821615612e83576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612ea2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612ec1576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ee0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612eff576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612f1e576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612f3e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f5e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f7e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f9e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612fbe576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612fde576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612ffe576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561301e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561303f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561305f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082106130a55762040000821615613088576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156130a5576b048a170391f7dc42444e8fa20260801c5b60008560020b13156130b657600019045b63ffffffff0160201c949350505050565b600083830281600019858709828110838203039150508084116130e957600080fd5b806000036130fc57508290049050611020565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000808061ffff8086169082908816821161317f578761ffff1661318a565b620100008861ffff16015b905061319a8b8b8b85858b6134b7565b919d909c50909a5098505050505050505050565b6000806000808a8761ffff166201000081106131cc576131cc614011565b0154610100900463ffffffff168b61ffff89166201000081106131f1576131f1614011565b0154909250600160281b900460060b9050600289900b63ffffffff878c0316028501613224836201517f198d018d612d10565b613285578263ffffffff168b63ffffffff160361325057505050600287900b91505061ffff8416610c80565b828b0363ffffffff1660060b82820360060b8161326f5761326f614163565b0560060b94505061ffff87169250610c80915050565b61329587620151808d038d612d10565b156132af57505050600287900b91505061ffff8516610c80565b60006132c28d8d620151808e8e8e613628565b955090506201518081830360060b0560060b95505050505097509795505050505050565b600082820385850303838603870260018089018902906002808b029091018202906006818c0a81029180870a8402868802860283020190860a8d02909102018161333257613332614163565b059a9950505050505050505050565b600080838504808015613380576001811461339157600281146133a257600381146133b357600481146133c4576903248ca20bb7b5032f5f92506133d2565b68056bc75e2d6310000092506133d2565b680ebc5fb4174612111092506133d2565b68280e60114edb805d0392506133d2565b686ce2482d63ef54b74c92506133d2565b690127fa27722cc06cc5e392505b50509383900693600261ffff85160461ffff16851061342257600261ffff85160461ffff168503945068056bc75e2d63100000816808f00f760a4b2db55c028161341e5761341e614163565b0490505b8291508461ffff8516838161343957613439614163565b049350838102830192508461ffff16848161345657613456614163565b0493508502600281850204830192508461ffff16848161347857613478614163565b04935085026018600461ffff871683020282880201048301925068056bc75e2d63100000828402816134ac576134ac614163565b049695505050505050565b60008060008380156134cb57506002868603115b156134da5750600185016134e2565b5084840160011c5b888161ffff166201000081106134fa576134fa614011565b01925082915060015b835460ff811690610100900463ffffffff1681156135a757613526818b8d612d10565b1561359c578b8460010161ffff1662010000811061354657613546614011565b01805490955060ff811690610100900463ffffffff1681156135875761356d8c828f612d10565b1561357c57505050505061361c565b856001019a50613595565b5086955061361c9350505050565b50506135ae565b6001840397506135ae565b8360010198505b60008380156135ba5750875b80156135c85750846001018a145b90508080156135d9575060108a8a03115b156135e9578960080194506135f2565b89890160011c94505b8c8561ffff1662010000811061360a5761360a614011565b01965060009350505050600161350357505b96509650969350505050565b6000808587038180808061363f8d8d878c8c612967565b83549397509195509350915063ffffffff6101008204811691600160281b900460060b90871682900361367c57975090955061371c945050505050565b83156136a35781870363ffffffff168c60020b02810183985098505050505050505061371c565b845463ffffffff6101008204811691600160281b900460060b9089168290036136de57995050505060010161ffff16945061371c9350505050565b838203848a0363ffffffff808216908316600690810b90878603900b8161370757613707614163565b05028501879c509c5050505050505050505050505b965096945050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6001600160a01b038116811461168057600080fd5b801515811461168057600080fd5b60008083601f84011261379857600080fd5b50813567ffffffffffffffff8111156137b057600080fd5b6020830191508360208285010111156137c857600080fd5b9250929050565b60008060008060008060008060e0898b0312156137eb57600080fd5b88356137f681613763565b9750602089013561380681613763565b9650604089013561381681613778565b955060608901359450608089013561382d81613763565b935060a089013561383d81613778565b925060c089013567ffffffffffffffff81111561385957600080fd5b6138658b828c01613786565b999c989b5096995094979396929594505050565b600060e0828403121561388b57600080fd5b50919050565b6000602082840312156138a357600080fd5b813561102081613778565b60008060008060008060008060e0898b0312156138ca57600080fd5b88356138d581613763565b975060208901356138e581613763565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561385957600080fd5b61ffff8116811461168057600080fd5b80356139388161391d565b919050565b60006020828403121561394f57600080fd5b81356110208161391d565b8060020b811461168057600080fd5b8035600f81900b811461393857600080fd5b600080600080600080600060c0888a03121561399657600080fd5b87356139a181613763565b965060208801356139b181613763565b955060408801356139c18161395a565b945060608801356139d18161395a565b93506139df60808901613969565b925060a088013567ffffffffffffffff8111156139fb57600080fd5b613a078a828b01613786565b989b979a50959850939692959293505050565b60008060408385031215613a2d57600080fd5b8235613a3881613763565b91506020830135613a4881613763565b809150509250929050565b600060208284031215613a6557600080fd5b813561102081613763565b600060208284031215613a8257600080fd5b5035919050565b600080600060608486031215613a9e57600080fd5b8335613aa981613763565b92506020840135613ab981613763565b91506040840135613ac98161395a565b809150509250925092565b803563ffffffff8116811461393857600080fd5b600060208284031215613afa57600080fd5b61102082613ad4565b60008060008060008060a08789031215613b1c57600080fd5b8635613b2781613763565b95506020870135613b3781613763565b94506040870135935060608701359250608087013567ffffffffffffffff811115613b6157600080fd5b613b6d89828a01613786565b979a9699509497509295939492505050565b60008060008060008060008060006101008a8c031215613b9e57600080fd5b8935613ba981613763565b985060208a0135613bb981613763565b975060408a0135613bc981613778565b965060608a0135955060808a0135613be081613763565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff811115613c0a57600080fd5b613c168c828d01613786565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c6c57613c6c613c2d565b604052919050565b60006020808385031215613c8757600080fd5b823567ffffffffffffffff80821115613c9f57600080fd5b818501915085601f830112613cb357600080fd5b813581811115613cc557613cc5613c2d565b8060051b9150613cd6848301613c43565b8181529183018401918481019088841115613cf057600080fd5b938501935b83851015613d1557613d0685613ad4565b82529385019390850190613cf5565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b82811015613d5d57815160060b84529284019290840190600101613d3e565b5050508381038285015284518082528583019183019060005b81811015613d9b5783516001600160581b031683529284019291840191600101613d76565b5090979650505050505050565b60008060408385031215613dbb57600080fd5b50508035926020909101359150565b60008060008060008060008060006101008a8c031215613de957600080fd5b8935613df481613763565b985060208a0135613e0481613763565b975060408a0135613e148161395a565b965060608a0135613e248161395a565b9550613be060808b01613969565b60008060408385031215613e4557600080fd5b8235613e508161391d565b91506020830135613a488161391d565b600080600060608486031215613e7557600080fd5b8335613e8081613763565b9250602084013591506040840135613ac981613763565b600060208284031215613ea957600080fd5b815161102081613778565b600060e08284031215613ec657600080fd5b60405160e0810181811067ffffffffffffffff82111715613ee957613ee9613c2d565b6040528235613ef78161391d565b81526020830135613f078161391d565b6020820152613f1860408401613ad4565b6040820152613f2960608401613ad4565b60608201526080830135613f3c8161391d565b608082015260a0830135613f4f8161391d565b60a0820152613f6060c0840161392d565b60c08201529392505050565b60e081018235613f7b8161391d565b61ffff9081168352602084013590613f928261391d565b8082166020850152613fa660408601613ad4565b915063ffffffff808316604086015280613fc260608801613ad4565b1660608601525060808501359150613fd98261391d565b908116608084015260a084013590613ff08261391d565b1660a083015261400260c0840161392d565b61ffff811660c0840152611d4e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b61ffff828116828216039080821115611d4e57611d4e614027565b60006020828403121561406a57600080fd5b81516003811061102057600080fd5b634e487b7160e01b600052602160045260246000fd5b60008060008060008060c087890312156140a857600080fd5b86516140b381613763565b60208801519096506140c48161395a565b60408801519095506140d58161391d565b606088015190945060ff811681146140ec57600080fd5b60808801519093506140fd8161391d565b60a088015190925061410e81613778565b809150509295509295509295565b8082028115828204841417610caa57610caa614027565b80820180821115610caa57610caa614027565b60006020828403121561415857600080fd5b815161102081613763565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b8181036000831280158383131683831282161715611d4e57611d4e614027565b60008160020b627fffff1981036141c8576141c8614027565b60000392915050565b80820260008212600160ff1b841416156141ed576141ed614027565b8181058314821517610caa57610caa614027565b60008261421e57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561423857614238614027565b500590565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610caa57610caa61402756fe8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f5a164736f6c6343000814000a267da724c255813ae00f4522fe843cb70148a4b8099cbc5af64f9a4151e55ed6a164736f6c6343000814000a0000000000000000000000006b692b588def775a92a6d0f3b6cccc8a4a4e5bb8