0 txs
878 calls
constructor
constructor(address lbFactory2_2, address lbFactory2_1, address lbLegacyFactory, address joeFactory, address wnative)
functions
DATA_FEED_MANAGER_ROLE
viewfunction DATA_FEED_MANAGER_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getDataFeeds
viewfunction getDataFeeds(address token) view returns (tuple[] dataFeeds)
getFactoryV1
viewfunction getFactoryV1() view returns (address factoryV1)
getFactoryV2_1
viewfunction getFactoryV2_1() view returns (address factoryV2)
getFactoryV2_2
viewfunction getFactoryV2_2() view returns (address factoryV2)
getLegacyFactoryV2
viewfunction getLegacyFactoryV2() view returns (address legacyFactoryV2)
getLPPriceUSD
viewfunction getLPPriceUSD(address pool) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMemberAt
viewfunction getRoleMemberAt(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getTokenPriceNative
viewfunction getTokenPriceNative(address token) view returns (uint256 price)
getTokenPriceUSD
viewfunction getTokenPriceUSD(address token) view returns (uint256 price)
getTokensPricesNative
viewfunction getTokensPricesNative(address[] tokens) view returns (uint256[] prices)
getTokensPricesUSD
viewfunction getTokensPricesUSD(address[] tokens) view returns (uint256[] prices)
getWNative
viewfunction getWNative() view returns (address wNative)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
addDataFeed
nonpayablefunction addDataFeed(address token, tuple dataFeed)
addDataFeeds
nonpayablefunction addDataFeeds(address[] tokens, tuple[] dataFeeds)
becomeOwner
nonpayablefunction becomeOwner()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple[] nativeDataFeeds)
removeDataFeed
nonpayablefunction removeDataFeed(address token, address dfAddress)
removeDataFeeds
nonpayablefunction removeDataFeeds(address[] tokens, address[] dfAddresses)
renounceRole
nonpayablefunction renounceRole(bytes32 role)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDataFeedsWeights
nonpayablefunction setDataFeedsWeights(address[] tokens, address[] dfAddresses, uint88[] newWeights)
setDataFeedWeight
nonpayablefunction setDataFeedWeight(address token, address dfAddress, uint88 newWeight)
setPendingOwner
nonpayablefunction setPendingOwner(address newOwner)
setTrustedTokensAt
nonpayablefunction setTrustedTokensAt(uint256 level, address[] tokens)
events
DataFeedAdded
event DataFeedAdded(address token, (address collateralAddress, address dfAddress, uint88 dfWeight, uint8 dfType) dataFeed)
DataFeedRemoved
event DataFeedRemoved(address token, address dfAddress)
DataFeedsWeightSet
event DataFeedsWeightSet(address token, address dfAddress, uint256 weight)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PendingOwnerSet
event PendingOwnerSet(address indexed owner, address indexed pendingOwner)
RoleAdminSet
event RoleAdminSet(address indexed sender, bytes32 indexed role, bytes32 indexed adminRole)
RoleGranted
event RoleGranted(address indexed sender, bytes32 indexed role, address indexed account)
RoleRevoked
event RoleRevoked(address indexed sender, bytes32 indexed role, address indexed account)
TrustedTokensSet
event TrustedTokensSet(uint256 indexed level, address[] tokens)
errors
SafeAccessControlEnumerable__AccountAlreadyHasRole
error SafeAccessControlEnumerable__AccountAlreadyHasRole(address account, bytes32 role)
SafeAccessControlEnumerable__AccountDoesNotHaveRole
error SafeAccessControlEnumerable__AccountDoesNotHaveRole(address account, bytes32 role)
SafeAccessControlEnumerable__OnlyOwnerOrRole
error SafeAccessControlEnumerable__OnlyOwnerOrRole(address account, bytes32 role)
SafeAccessControlEnumerable__OnlyRole
error SafeAccessControlEnumerable__OnlyRole(address account, bytes32 role)
SafeAccessControlEnumerable__RoleAlreadyGranted
error SafeAccessControlEnumerable__RoleAlreadyGranted(address account, bytes32 role)
SafeOwnable__OnlyOwner
error SafeOwnable__OnlyOwner()
SafeOwnable__OnlyPendingOwner
error SafeOwnable__OnlyPendingOwner()
SwaplineDexLens__AlreadyInitialized
error SwaplineDexLens__AlreadyInitialized()
SwaplineDexLens__CollateralNotInPair
error SwaplineDexLens__CollateralNotInPair(address pair, address collateral)
SwaplineDexLens__DataFeedAlreadyAdded
error SwaplineDexLens__DataFeedAlreadyAdded(address token, address dataFeed)
SwaplineDexLens__DataFeedNotInSet
error SwaplineDexLens__DataFeedNotInSet(address token, address dataFeed)
SwaplineDexLens__EmptyDataFeeds
error SwaplineDexLens__EmptyDataFeeds()
SwaplineDexLens__ExceedsMaxLevels
error SwaplineDexLens__ExceedsMaxLevels()
SwaplineDexLens__ExceedsMaxTokensPerLevel
error SwaplineDexLens__ExceedsMaxTokensPerLevel()
SwaplineDexLens__InvalidChainLinkPrice
error SwaplineDexLens__InvalidChainLinkPrice()
SwaplineDexLens__InvalidDataFeed
error SwaplineDexLens__InvalidDataFeed()
SwaplineDexLens__InvalidLevel
error SwaplineDexLens__InvalidLevel()
SwaplineDexLens__LengthsMismatch
error SwaplineDexLens__LengthsMismatch()
SwaplineDexLens__NoDataFeeds
error SwaplineDexLens__NoDataFeeds(address token)
SwaplineDexLens__NullWeight
error SwaplineDexLens__NullWeight()
SwaplineDexLens__SameDataFeed
error SwaplineDexLens__SameDataFeed()
SwaplineDexLens__SameTokens
error SwaplineDexLens__SameTokens()
SwaplineDexLens__TokenNotInPair
error SwaplineDexLens__TokenNotInPair(address pair, address token)
SwaplineDexLens__UnknownDataFeedType
error SwaplineDexLens__UnknownDataFeedType()
SwaplineDexLens__V1ContractNotSet
error SwaplineDexLens__V1ContractNotSet()
SwaplineDexLens__V2_1ContractNotSet
error SwaplineDexLens__V2_1ContractNotSet()
SwaplineDexLens__V2_2ContractNotSet
error SwaplineDexLens__V2_2ContractNotSet()
SwaplineDexLens__V2ContractNotSet
error SwaplineDexLens__V2ContractNotSet()
SwaplineDexLens__ZeroAddress
error SwaplineDexLens__ZeroAddress()
Uint128x128Math__PowUnderflow
error Uint128x128Math__PowUnderflow(uint256 x, int256 y)
Uint256x256Math__MulShiftOverflow
error Uint256x256Math__MulShiftOverflow()
creation bytecode
0x6101606040523480156200001257600080fd5b50604051620059ed380380620059ed83398101604081905262000035916200051c565b620000403362000169565b6001600160a01b0385161580156200005f57506001600160a01b038416155b80156200007357506001600160a01b038316155b80156200008757506001600160a01b038216155b806200009a57506001600160a01b038116155b15620000b957604051637e2cb72560e01b815260040160405180910390fd5b6001600160a01b0380861660805282811660e05283811660c05284811660a05281166101008190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200059c565b60ff166101208190526200015990600a620006d4565b6101405250620007289350505050565b600080546001600160a01b031690506200018e82620001ae60201b620011451760201c565b6200019b600082620001fe565b50620001a9600083620002b4565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000821580156200023357506001600160a01b038216620002276000546001600160a01b031690565b6001600160a01b031614155b806200026357506000838152600260209081526040909120620002619184906200119562000369821b17901c565b155b156200027257506000620002ae565b6040516001600160a01b03831690849033907f8fa769283732af9aa4f65d966aceb1295944e96fcdd7031699b47da23286d28590600090a45060015b92915050565b600082158015620002e957506001600160a01b038216620002dd6000546001600160a01b031690565b6001600160a01b031614155b80620003195750600083815260026020908152604090912062000317918490620011ab62000388821b17901c565b155b156200032857506000620002ae565b6040516001600160a01b03831690849033907f2739f947da5133134a8e9c6a84d5ed6da396844d81b4a760121c8b9c668bdf9c90600090a450600192915050565b60006200038183826001600160a01b038516620003a1565b9392505050565b60006200038183826001600160a01b03851681620004af565b60008181526001840160205260408120548015620004a4576000620003c8600183620006e2565b8654909150600090620003de90600190620006e2565b905081811462000454576000876000018281548110620004025762000402620006fc565b6000918252602082200154915060ff881682901c905081896000018581548110620004315762000431620006fc565b600091825260208083209091019290925591825260018a01905260409020849055505b865487908062000468576200046862000712565b60019003818190600052602060002001600090559055866001016000868152602001908152602001600020600090556001935050505062000381565b506000949350505050565b6000828152600185016020526040812054620004a457508354600180820186556000868152602080822060ff881687901b861794019390935586548582528288019093526040902091909155949350505050565b6001600160a01b03811681146200051957600080fd5b50565b600080600080600060a086880312156200053557600080fd5b8551620005428162000503565b6020870151909550620005558162000503565b6040870151909450620005688162000503565b60608701519093506200057b8162000503565b60808701519092506200058e8162000503565b809150509295509295909350565b600060208284031215620005af57600080fd5b815160ff811681146200038157600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000618578160001904821115620005fc57620005fc620005c1565b808516156200060a57918102915b93841c9390800290620005dc565b509250929050565b6000826200063157506001620002ae565b816200064057506000620002ae565b8160018114620006595760028114620006645762000684565b6001915050620002ae565b60ff841115620006785762000678620005c1565b50506001821b620002ae565b5060208310610133831016604e8410600b8410161715620006a9575081810a620002ae565b620006b58383620005d7565b8060001904821115620006cc57620006cc620005c1565b029392505050565b600062000381838362000620565b600082821015620006f757620006f7620005c1565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05160e05161010051610120516101405161519f6200084e600039600081816105770152818161062001528181611231015281816121e901526126fd0152600081816133b101528181613424015281816135bd015281816136030152818161375d01528181613789015281816137cb01526137f601526000818161034d015281816108320152818161086e015281816111c9015281816111f6015281816113da01526126af015260008181610220015281816115aa0152818161302d015261308e0152600081816103ca0152818161154401528181612eb80152612f19015260008181610301015281816114de01528181612d430152612da40152600081816104260152818161147801528181612ae00152612b64015261519f6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638fe4b3ad1161010f578063c42069ec116100a2578063e30c397811610071578063e30c3978146104d7578063e786dc99146104e8578063f5514f19146104fb578063f9dca9891461050e57600080fd5b8063c42069ec1461048b578063ca15c8731461049e578063d547741f146104b1578063d9b819ed146104c457600080fd5b8063a217fddf116100de578063a217fddf1461044a578063acc5d5bf14610452578063ad8dc75714610465578063af5e601e1461047857600080fd5b80638fe4b3ad146103c857806391d14854146103ee5780639724458e146104115780639e4d6fda1461042457600080fd5b80635c5035cb1161018757806380676c141161015657806380676c14146103715780638bb9c5bf146103915780638da5cb5b146103a45780638e11de01146103b557600080fd5b80635c5035cb146102ff57806369453414146103255780636ffdd27d14610338578063719a08a31461034b57600080fd5b8063248a9ca3116101c3578063248a9ca3146102a05780632a2cef0a146102c45780632f2ff15d146102d757806342613d0c146102ec57600080fd5b80630280561b146101f557806307da8f571461021e5780631968dc2314610258578063197d74571461028d575b600080fd5b610208610203366004614144565b610516565b6040516102159190614186565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610215565b61027f7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b681565b604051908152602001610215565b61020861029b366004614144565b610607565b61027f6102ae3660046141ca565b6000908152600260208190526040909120015490565b61027f6102d23660046141f8565b61061c565b6102ea6102e5366004614215565b610664565b005b6102ea6102fa366004614245565b610701565b7f0000000000000000000000000000000000000000000000000000000000000000610240565b6102ea6103333660046142cb565b610784565b6102ea61034636600461431a565b6108b2565b7f0000000000000000000000000000000000000000000000000000000000000000610240565b61038461037f3660046141f8565b61093c565b604051610215919061439d565b6102ea61039f3660046141ca565b610a22565b6000546001600160a01b0316610240565b6102ea6103c3366004614426565b610a55565b7f0000000000000000000000000000000000000000000000000000000000000000610240565b6104016103fc366004614215565b610ae1565b6040519015158152602001610215565b61027f61041f3660046141f8565b610af9565b7f0000000000000000000000000000000000000000000000000000000000000000610240565b61027f600081565b610240610460366004614492565b610dc0565b61027f6104733660046141f8565b610dd8565b6102ea6104863660046144b4565b610de3565b6102ea6104993660046141f8565b610e85565b61027f6104ac3660046141ca565b610eb9565b6102ea6104bf366004614215565b610ed0565b6102ea6104d2366004614500565b610f63565b6001546001600160a01b0316610240565b6102ea6104f6366004614560565b610fe8565b6102ea6105093660046145fa565b611078565b6102ea6110fb565b606060006105226111c2565b90508267ffffffffffffffff81111561053d5761053d614628565b604051908082528060200260200182016040528015610566578160200160208202803683370190505b50915060005b82518110156105ff577f0000000000000000000000000000000000000000000000000000000000000000826105c68787858181106105ac576105ac61463e565b90506020020160208101906105c191906141f8565b6111f2565b6105d0919061466a565b6105da9190614689565b8382815181106105ec576105ec61463e565b602090810291909101015260010161056c565b505092915050565b60606106138383611275565b90505b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006106476111c2565b610650846111f2565b61065a919061466a565b6106169190614689565b60008281526002602081905260408220015490546001600160a01b0316331480159061069757506106958133610ae1565b155b156106c35760405163dfc1890f60e01b8152336004820152602481018290526044015b60405180910390fd5b6106cd8383611308565b6106fc5760405163e628d3d760e01b81526001600160a01b0383166004820152602481018490526044016106ba565b505050565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b6336107356000546001600160a01b031690565b6001600160a01b03161415801561075357506107518133610ae1565b155b1561077a5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b6106fc83836113a9565b600554156107a55760405163b4b91d4560e01b815260040160405180910390fd5b806107c357604051633f87d35360e11b815260040160405180910390fd5b6107cc3361181e565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec80546001808201835560009283527f295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f90910180546001600160a01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161790556005555b818110156106fc576108aa7f000000000000000000000000000000000000000000000000000000000000000084848481811061089f5761089f61463e565b9050608002016113a9565b600101610861565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b6336108e66000546001600160a01b031690565b6001600160a01b03161415801561090457506109028133610ae1565b155b1561092b5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b61093684848461184a565b50505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610a17576000848152602090819020604080516080810182526002860290920180546001600160a01b039081168452600182015490811694840194909452600160a01b84046affffffffffffffffffffff169183019190915290916060830190600160f81b900460ff1660048111156109f3576109f3614365565b6004811115610a0457610a04614365565b8152505081526020019060010190610974565b505050509050919050565b610a2c8133611996565b610a525760405163afacc10960e01b8152336004820152602481018290526044016106ba565b50565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b633610a896000546001600160a01b031690565b6001600160a01b031614158015610aa75750610aa58133610ae1565b155b15610ace5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b610ada85858585611a37565b5050505050565b60008281526002602052604081206106139083611aa8565b6000808290506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6391906146ab565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc991906146ab565b9050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906146eb565b50604051631516778560e11b81526001600160a01b03871660048201526dffffffffffffffffffffffffffff9283169450911691506000903090632a2cef0a90602401602060405180830381865afa158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190614730565b604051631516778560e11b81526001600160a01b03861660048201529091506000903090632a2cef0a90602401602060405180830381865afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d229190614730565b90506000610d30828561466a565b610d3a848761466a565b610d449190614749565b9050876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da89190614730565b610db29082614689565b9a9950505050505050505050565b60008281526002602052604081206106139083611aca565b6000610616826111f2565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b633610e176000546001600160a01b031690565b6001600160a01b031614158015610e355750610e338133610ae1565b155b15610e5c5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b83610e7a5760405163c329093760e01b815260040160405180910390fd5b610936848484611add565b6000546001600160a01b03163314610eb057604051631c1d490560e21b815260040160405180910390fd5b610a5281611c3b565b600081815260026020526040812061061690611c87565b60008281526002602081905260408220015490546001600160a01b03163314801590610f035750610f018133610ae1565b155b15610f2a5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b610f348383611996565b6106fc5760405163afacc10960e01b81526001600160a01b0383166004820152602481018490526044016106ba565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b633610f976000546001600160a01b031690565b6001600160a01b031614158015610fb55750610fb38133610ae1565b155b15610fdc5760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b610ada85858585611c91565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b63361101c6000546001600160a01b031690565b6001600160a01b03161415801561103a57506110388133610ae1565b155b156110615760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b61106f878787878787611d1c565b50505050505050565b7fe95bc000e84afdbf5a46b6670e5eae2d6de618593596f0ab3a18a7beaf3548b6336110ac6000546001600160a01b031690565b6001600160a01b0316141580156110ca57506110c88133610ae1565b155b156110f15760405163dfc1890f60e01b8152336004820152602481018290526044016106ba565b6106fc8383611dfd565b6001546001600160a01b03163314611126576040516301bd182d60e41b815260040160405180910390fd5b6001546001600160a01b031661113c6000611c3b565b610a528161181e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061061383826001600160a01b038516611ea4565b600061061383826001600160a01b03851681611fa2565b60006111ed7f0000000000000000000000000000000000000000000000000000000000000000611ff6565b905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561125557507f0000000000000000000000000000000000000000000000000000000000000000919050565b61125e82611ff6565b9050801561126c5780610616565b6106168261208b565b60608167ffffffffffffffff81111561129057611290614628565b6040519080825280602002602001820160405280156112b9578160200160208202803683370190505b50905060005b82811015611301576112dc8484838181106105ac576105ac61463e565b8282815181106112ee576112ee61463e565b60209081029190910101526001016112bf565b5092915050565b60008215801561133b5750816001600160a01b031661132f6000546001600160a01b031690565b6001600160a01b031614155b8061135b5750600083815260026020526040902061135990836111ab565b155b1561136857506000610616565b6040516001600160a01b03831690849033907f2739f947da5133134a8e9c6a84d5ed6da396844d81b4a760121c8b9c668bdf9c90600090a450600192915050565b818160006113ba60208301836141f8565b9050826001600160a01b0316816001600160a01b031614801561140f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561142d5760405163e11728b960e01b815260040160405180910390fd5b600061143f608084016060850161476e565b9050600481600481111561145557611455614365565b1461171a57600381600481111561146e5761146e614365565b1480156114a257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b156114c0576040516312500d7560e11b815260040160405180910390fd5b60028160048111156114d4576114d4614365565b14801561150857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611526576040516313ebd92360e01b815260040160405180910390fd5b600181600481111561153a5761153a614365565b14801561156e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b1561158c57604051634310a41b60e01b815260040160405180910390fd5b60008160048111156115a0576115a0614365565b1480156115d457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b156115f257604051632798a18160e11b815260040160405180910390fd5b60008061160e61160860408701602088016141f8565b84612278565b91509150836001600160a01b0316826001600160a01b0316141580156116465750836001600160a01b0316816001600160a01b031614155b156116a15761165b60408601602087016141f8565b6040517fffb5c8a90000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015290851660248201526044016106ba565b856001600160a01b0316826001600160a01b0316141580156116d55750856001600160a01b0316816001600160a01b031614155b15611717576116ea60408601602087016141f8565b604051637cfd801560e01b81526001600160a01b03918216600482015290871660248201526044016106ba565b50505b61172a606086016040870161478b565b6affffffffffffffffffffff811661175557604051636556e10560e01b815260040160405180910390fd5b61175f8787612516565b6117a0578661177460408801602089016141f8565b60405163195ce48d60e11b81526001600160a01b039283166004820152911660248201526044016106ba565b60006117ba6117b436899003890189614826565b896125e0565b509050806117db57604051631639b62f60e01b815260040160405180910390fd5b7f407d7b2ebb6f7c49a80ec9153307af1e82ae2093388b0a1bbc2a916b1df2a9bd888860405161180c9291906148ab565b60405180910390a15050505050505050565b6000546001600160a01b031661183382611145565b61183e600082611996565b506106fc600083611308565b806affffffffffffffffffffff811661187657604051636556e10560e01b815260040160405180910390fd5b6001600160a01b038085166000908152600360209081526040808320938716835260018401909152902054806118d2576040516311f1870d60e31b81526001600160a01b038088166004830152861660248201526044016106ba565b83826118df60018461492c565b815481106118ef576118ef61463e565b60009182526020918290206002919091020160010180547fff0000000000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6affffffffffffffffffffff94851602179055604080516001600160a01b038a811682528916928101929092529186168183015290517f3eb44490058832617a9bce11b8ac1ad0438666c511d9e3ec892d25bbd548d580916060908290030190a1505050505050565b6000821580156119c95750816001600160a01b03166119bd6000546001600160a01b031690565b6001600160a01b031614155b806119e9575060008381526002602052604090206119e79083611195565b155b156119f657506000610616565b6040516001600160a01b03831690849033907f8fa769283732af9aa4f65d966aceb1295944e96fcdd7031699b47da23286d28590600090a450600192915050565b8281808214611a595760405163b8ebdb7b60e01b815260040160405180910390fd5b60005b8581101561106f57611aa0878783818110611a7957611a7961463e565b9050602002016020810190611a8e91906141f8565b86868481811061089f5761089f61463e565b600101611a5c565b6001600160a01b03811660009081526001830160205260408120541515610613565b6000611ad68383612751565b9392505050565b6005548310611b17576005831115611b0857604051638f66060b60e01b815260040160405180910390fd5b611b13836001614749565b6005555b6008811115611b3957604051637444555960e11b815260040160405180910390fd5b60005b81811015611be157611b89838383818110611b5957611b5961463e565b9050602002016020810190611b6e91906141f8565b6001600160a01b031660009081526003602052604090205490565b611bd957828282818110611b9f57611b9f61463e565b9050602002016020810190611bb491906141f8565b604051633a60b7eb60e11b81526001600160a01b0390911660048201526024016106ba565b600101611b3c565b506000838152600460205260409020611bfb908383614087565b50827f5ef0c18fed9788de32e614df766540460748bf003c572ca2fdb33b5ebc9102d38383604051611c2e929190614943565b60405180910390a2505050565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa86864fa6b65f969d5ac8391ddaac6a0eba3f41386cbf6e78c3e4d6c59eb115f90600090a350565b6000610616825490565b8281808214611cb35760405163b8ebdb7b60e01b815260040160405180910390fd5b60005b8581101561106f57611d14878783818110611cd357611cd361463e565b9050602002016020810190611ce891906141f8565b868684818110611cfa57611cfa61463e565b9050602002016020810190611d0f91906141f8565b611dfd565b600101611cb6565b8483808214611d3e5760405163b8ebdb7b60e01b815260040160405180910390fd5b8683808214611d605760405163b8ebdb7b60e01b815260040160405180910390fd5b60005b89811015611df057611de88b8b83818110611d8057611d8061463e565b9050602002016020810190611d9591906141f8565b8a8a84818110611da757611da761463e565b9050602002016020810190611dbc91906141f8565b898985818110611dce57611dce61463e565b9050602002016020810190611de3919061478b565b61184a565b600101611d63565b5050505050505050505050565b611e07828261277b565b611e37576040516311f1870d60e31b81526001600160a01b038084166004830152821660248201526044016106ba565b611e40826111f2565b611e5d57604051631639b62f60e01b815260040160405180910390fd5b604080516001600160a01b038085168252831660208201527f30c6934445801cd0bfee6f71ee2dbdec6127d5bfa81f0c0a56783a4aaaae798c910160405180910390a15050565b60008181526001840160205260408120548015611f97576000611ec860018361492c565b8654909150600090611edc9060019061492c565b9050818114611f4b576000876000018281548110611efc57611efc61463e565b6000918252602082200154915060ff881682901c905081896000018581548110611f2857611f2861463e565b600091825260208083209091019290925591825260018a01905260409020849055505b8654879080611f5c57611f5c614991565b600190038181906000526020600020016000905590558660010160008681526020019081526020016000206000905560019350505050611ad6565b506000949350505050565b6000828152600185016020526040812054611f9757508354600180820186556000868152602080822060ff881687901b8617940193909355865485825282880190935260409020919091555b949350505050565b6001600160a01b0381166000908152600360205260408120546000805b8281101561206b57600061202786836129f5565b905060008061203683896125e0565b915091508160001461205d5761204c818361466a565b6120569088614749565b9650938401935b836001019350505050612013565b5080156120815761207c8184614689565b611fee565b6000949350505050565b600554600090815b8181101561226e576000818152600460209081526040808320805482518185028101850190935280835291929091908301828280156120fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116120dd575b5050505050905060008060005b83518110156122445760008482815181106121255761212561463e565b60200260200101519050886001600160a01b0316816001600160a01b03161461223b576000806121558b84612adb565b915091506000806121668d86612d3e565b90925090506121758285614749565b61217f8285614749565b909450925061218e8d86612eb3565b909250905061219d8285614749565b6121a78285614749565b90945092506121b68d86613028565b90925090506121c58285614749565b6121cf8285614749565b909450925082156122365760006121e5866111f2565b90507f0000000000000000000000000000000000000000000000000000000000000000612212828761466a565b61221c9190614689565b612226908a614749565b98506122328489614749565b9750505b505050505b50600101612108565b508015612260576122558183614689565b979650505050505050565b836001019350505050612093565b5060009392505050565b600080600283600481111561228f5761228f614365565b14806122ac575060038360048111156122aa576122aa614365565b145b1561237e57836001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231391906146ab565b9150836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612353573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237791906146ab565b905061250f565b600183600481111561239257612392614365565b141561243a57836001600160a01b03166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fa91906146ab565b9150836001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612353573d6000803e3d6000fd5b600083600481111561244e5761244e614365565b14156124f657836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b691906146ab565b9150836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612353573d6000803e3d6000fd5b604051631d20c17360e11b815260040160405180910390fd5b9250929050565b600061255d8361252c60408501602086016141f8565b6001600160a01b03918216600090815260036020908152604080832093909416825260019092019091522054151590565b6125d8576001600160a01b0383166000908152600360209081526040822080546001810182558184529190922084916002020161259a82826149a7565b505080546001820160006125b460408701602088016141f8565b6001600160a01b031681526020810191909152604001600020555060019050610616565b506000610616565b60608201516000908190818160048111156125fd576125fd614365565b141561261c57612611856020015185613157565b5094506126a7915050565b600181600481111561263057612630614365565b148061264d5750600281600481111561264b5761264b614365565b145b806126695750600381600481111561266757612667614365565b145b1561267d5761261185602001518286613481565b600481600481111561269157612691614365565b14156124f6576126a4856020015161365e565b92505b8215612749577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685600001516001600160a01b0316146127345760006126f986600001516111f2565b90507f0000000000000000000000000000000000000000000000000000000000000000612726828661466a565b6127309190614689565b9350505b84604001516affffffffffffffffffffff1691505b509250929050565b60008260000182815481106127685761276861463e565b9060005260206000200154905092915050565b6001600160a01b03808316600090815260036020908152604080832093851683526001840190915281205490919080156129ea5760006127bc60018361492c565b83549091506000906127d09060019061492c565b90508082146129835760008460000182815481106127f0576127f061463e565b600091825260209182902060408051608081018252600290930290910180546001600160a01b0390811684526001820154908116948401949094526affffffffffffffffffffff600160a01b850416918301919091529091606083019060ff600160f81b90910416600481111561286957612869614365565b600481111561287a5761287a614365565b815250509050808560000184815481106128965761289661463e565b6000918252602091829020835160029092020180546001600160a01b039283166001600160a01b03199091161781559183015160018301805460408601516affffffffffffffffffffff16600160a01b027fff00000000000000000000000000000000000000000000000000000000000000909116929093169190911791909117808255606084015191907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b83600481111561295957612959614365565b021790555050506020908101516001600160a01b0316600090815260018601909152604090208390555b835484908061299457612994614991565b6000828152602080822060026000199094019384020180546001600160a01b03191681556001908101839055929093556001600160a01b0389168152958101909152604085209490945550919250610616915050565b600092505050610616565b612a1d6040805160808101825260008082526020820181905291810182905290606082015290565b6001600160a01b0383166000908152600360205260409020805483908110612a4757612a4761463e565b600091825260209182902060408051608081018252600290930290910180546001600160a01b0390811684526001820154908116948401949094526affffffffffffffffffffff600160a01b850416918301919091529091606083019060ff600160f81b909104166004811115612ac057612ac0614365565b6004811115612ad157612ad1614365565b9052509392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612b175750600090508061250f565b612b3a6040518060600160405280602c815260200161513e602c9139858561383b565b604051636622e0d760e01b81526001600160a01b03848116600483015285811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636622e0d790604401600060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bd59190810190614b06565b905080516000146127495760005b8151811015612d35576000828281518110612c0057612c0061463e565b6020026020010151602001519050600080600080612c208560038d613481565b93509350935093506000612c3686868685613882565b9050612c7c6040518060400160405280600d81526020017f6c62506169723a20257320257300000000000000000000000000000000000000815250878661ffff16613a6d565b612cbb6040518060400160405280601281526020017f7363616c656452657365727665733a202573000000000000000000000000000081525082613ab4565b612cfa6040518060400160405280600c81526020017f6973546f6b656e583a202573000000000000000000000000000000000000000081525083613afd565b612d04818461466a565b612d0e908b614749565b9950612d1a818a614749565b98505050505050508080612d2d90614be9565b915050612be3565b50509250929050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612d7a5750600090508061250f565b604051636622e0d760e01b81526001600160a01b03848116600483015285811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636622e0d790604401600060405180830381865afa158015612ded573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e159190810190614b06565b905080516000146127495760005b8151811015612d35576000828281518110612e4057612e4061463e565b6020026020010151602001519050600080600080612e608560028d613481565b93509350935093506000612e7686868685613882565b9050612e82818461466a565b612e8c908b614749565b9950612e98818a614749565b98505050505050508080612eab90614be9565b915050612e23565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612eef5750600090508061250f565b604051636622e0d760e01b81526001600160a01b03848116600483015285811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636622e0d790604401600060405180830381865afa158015612f62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f8a9190810190614c04565b905080516000146127495760005b8151811015612d35576000828281518110612fb557612fb561463e565b6020026020010151602001519050600080600080612fd58560018d613481565b93509350935093506000612feb86868685613882565b9050612ff7818461466a565b613001908b614749565b995061300d818a614749565b9850505050505050808061302090614be9565b915050612f98565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166130645750600090508061250f565b60405163e6a4390560e01b81526001600160a01b03858116600483015284811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a4390590604401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb91906146ab565b90506001600160a01b038116156127495760008060008061311c858a613157565b93509350935093506005816131315784613133565b835b61313d919061466a565b9550613149868361466a565b965050505050509250929050565b60008060008060008690506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c691906146ab565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c91906146ab565b90506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561326e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132929190614ce2565b60ff1690506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fb9190614ce2565b60ff169050846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561333e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336291906146eb565b506dffffffffffffffffffffffffffff9182169a501697506001600160a01b038a811690851614955085156134045788156133fa576133a281600a614de1565b6133ac908a61466a565b6133d67f000000000000000000000000000000000000000000000000000000000000000084614749565b6133e190600a614de1565b6133eb908a61466a565b6133f59190614689565b6133fd565b60005b9650613473565b871561346d5761341582600a614de1565b61341f908961466a565b6134497f000000000000000000000000000000000000000000000000000000000000000083614749565b61345490600a614de1565b61345e908b61466a565b6134689190614689565b613470565b60005b96505b505050505092959194509250565b6000806000806000806134948989612278565b915091506134a28989613b42565b909650945060006134b862ffffff881687613d33565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351e9190614ce2565b60ff1690506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135879190614ce2565b60ff1690506000856001600160a01b03168b6001600160a01b0316149650866135fb576135b684600019614689565b836135e1847f0000000000000000000000000000000000000000000000000000000000000000614749565b6135eb919061492c565b6135f690600a614de1565b61363c565b8382613627857f0000000000000000000000000000000000000000000000000000000000000000614749565b613631919061492c565b61363c90600a614de1565b909450905061364d84826080613d77565b975050505050505093509350935093565b6000808290506000816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156136a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c89190614e07565b505050915050600081136136ef57604051630a075e9360e31b815260040160405180910390fd5b8092506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137569190614ce2565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000008110156137c9576137ad817f000000000000000000000000000000000000000000000000000000000000000061492c565b6137b890600a614de1565b6137c2908561466a565b9350613833565b7f00000000000000000000000000000000000000000000000000000000000000008111156138335761381b7f00000000000000000000000000000000000000000000000000000000000000008261492c565b61382690600a614de1565b6138309085614689565b93505b505050919050565b6106fc83838360405160240161385393929190614ea4565b60408051601f198184030181529190526020810180516001600160e01b03166307e763af60e51b179052613de5565b600081156139835760008061389d600562ffffff881661492c565b6138a8906001614749565b6138b3876001614ed7565b90925062ffffff169050815b8181101561397b57604051630157d2d160e31b815262ffffff821660048201526000906001600160a01b038a1690630abe9688906024016040805180830381865afa158015613912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139369190614f1e565b6fffffffffffffffffffffffffffffffff1691505061ffff871661395c614e208361466a565b6139669190614689565b6139709086614749565b9450506001016138bf565b505050611fee565b60008085613997600562ffffff8316614749565b915062ffffff16915060008290505b81811015613a6257604051630157d2d160e31b815262ffffff821660048201526000906001600160a01b038a1690630abe9688906024016040805180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d9190614f1e565b506fffffffffffffffffffffffffffffffff16905061ffff8716613a43614e208361466a565b613a4d9190614689565b613a579086614749565b9450506001016139a6565b505050949350505050565b6106fc838383604051602401613a8593929190614f51565b60408051601f198184030181529190526020810180516001600160e01b03166307c8121760e01b179052613de5565b613af98282604051602401613aca929190614f7f565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b179052613de5565b5050565b613af98282604051602401613b13929190614fa1565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b179052613de5565b6000806001836004811115613b5957613b59614365565b1415613c37576000846001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc39190614fc5565b92505050809250846001600160a01b03166398c7adf36040518163ffffffff1660e01b815260040161018060405180830381865afa158015613c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2d919061501b565b51915061250f9050565b6002836004811115613c4b57613c4b614365565b1480613c6857506003836004811115613c6657613c66614365565b145b156124f657836001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccf9190615107565b9150836001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123779190615122565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901613d6e8282613e06565b95945050505050565b6000806000613d868686614068565b9150915081600014613d9c578360ff1682901c92505b8015613ddc57600160ff85161b8110613dc857604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808083613e1e5750600160801b91506106169050565b50826000811215613e30579015906000035b6210000081101561402957600160801b9250846fffffffffffffffffffffffffffffffff811115613e6357911591600019045b6001821615613e745792830260801c925b800260801c6002821615613e8a5792830260801c925b800260801c6004821615613ea05792830260801c925b800260801c6008821615613eb65792830260801c925b800260801c6010821615613ecc5792830260801c925b800260801c6020821615613ee25792830260801c925b800260801c6040821615613ef85792830260801c925b8002608090811c90821615613f0f5792830260801c925b800260801c610100821615613f265792830260801c925b800260801c610200821615613f3d5792830260801c925b800260801c610400821615613f545792830260801c925b800260801c610800821615613f6b5792830260801c925b800260801c611000821615613f825792830260801c925b800260801c612000821615613f995792830260801c925b800260801c614000821615613fb05792830260801c925b800260801c618000821615613fc75792830260801c925b800260801c62010000821615613fdf5792830260801c925b800260801c62020000821615613ff75792830260801c925b800260801c6204000082161561400f5792830260801c925b800260801c620800008216156140275792830260801c925b505b8261405157604051631dba598d60e11b815260048101869052602481018590526044016106ba565b8161405c5782613d6e565b613d6e83600019614689565b6000806000198385098385029250828110838203039150509250929050565b8280548282559060005260206000209081019282156140da579160200282015b828111156140da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906140a7565b506140e69291506140ea565b5090565b5b808211156140e657600081556001016140eb565b60008083601f84011261411157600080fd5b50813567ffffffffffffffff81111561412957600080fd5b6020830191508360208260051b850101111561250f57600080fd5b6000806020838503121561415757600080fd5b823567ffffffffffffffff81111561416e57600080fd5b61417a858286016140ff565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351835292840192918401916001016141a2565b50909695505050505050565b6000602082840312156141dc57600080fd5b5035919050565b6001600160a01b0381168114610a5257600080fd5b60006020828403121561420a57600080fd5b8135611ad6816141e3565b6000806040838503121561422857600080fd5b82359150602083013561423a816141e3565b809150509250929050565b60008082840360a081121561425957600080fd5b8335614264816141e3565b92506080601f198201121561427857600080fd5b506020830190509250929050565b60008083601f84011261429857600080fd5b50813567ffffffffffffffff8111156142b057600080fd5b6020830191508360208260071b850101111561250f57600080fd5b600080602083850312156142de57600080fd5b823567ffffffffffffffff8111156142f557600080fd5b61417a85828601614286565b6affffffffffffffffffffff81168114610a5257600080fd5b60008060006060848603121561432f57600080fd5b833561433a816141e3565b9250602084013561434a816141e3565b9150604084013561435a81614301565b809150509250925092565b634e487b7160e01b600052602160045260246000fd5b6005811061439957634e487b7160e01b600052602160045260246000fd5b9052565b602080825282518282018190526000919060409081850190868401855b8281101561441957815180516001600160a01b039081168652878201511687860152858101516affffffffffffffffffffff1686860152606090810151906144048187018361437b565b505060809390930192908501906001016143ba565b5091979650505050505050565b6000806000806040858703121561443c57600080fd5b843567ffffffffffffffff8082111561445457600080fd5b614460888389016140ff565b9096509450602087013591508082111561447957600080fd5b5061448687828801614286565b95989497509550505050565b600080604083850312156144a557600080fd5b50508035926020909101359150565b6000806000604084860312156144c957600080fd5b83359250602084013567ffffffffffffffff8111156144e757600080fd5b6144f3868287016140ff565b9497909650939450505050565b6000806000806040858703121561451657600080fd5b843567ffffffffffffffff8082111561452e57600080fd5b61453a888389016140ff565b9096509450602087013591508082111561455357600080fd5b50614486878288016140ff565b6000806000806000806060878903121561457957600080fd5b863567ffffffffffffffff8082111561459157600080fd5b61459d8a838b016140ff565b909850965060208901359150808211156145b657600080fd5b6145c28a838b016140ff565b909650945060408901359150808211156145db57600080fd5b506145e889828a016140ff565b979a9699509497509295939492505050565b6000806040838503121561460d57600080fd5b8235614618816141e3565b9150602083013561423a816141e3565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561468457614684614654565b500290565b6000826146a657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156146bd57600080fd5b8151611ad6816141e3565b80516dffffffffffffffffffffffffffff811681146146e657600080fd5b919050565b60008060006060848603121561470057600080fd5b614709846146c8565b9250614717602085016146c8565b9150604084015163ffffffff8116811461435a57600080fd5b60006020828403121561474257600080fd5b5051919050565b6000821982111561475c5761475c614654565b500190565b60058110610a5257600080fd5b60006020828403121561478057600080fd5b8135611ad681614761565b60006020828403121561479d57600080fd5b8135611ad681614301565b6040516080810167ffffffffffffffff811182821017156147cb576147cb614628565b60405290565b604051610180810167ffffffffffffffff811182821017156147cb576147cb614628565b604051601f8201601f1916810167ffffffffffffffff8111828210171561481e5761481e614628565b604052919050565b60006080828403121561483857600080fd5b6040516080810181811067ffffffffffffffff8211171561485b5761485b614628565b6040528235614869816141e3565b81526020830135614879816141e3565b6020820152604083013561488c81614301565b6040820152606083013561489f81614761565b60608201529392505050565b6001600160a01b03838116825260a082019083356148c8816141e3565b81811660208501525060208401356148df816141e3565b166040838101919091528301356148f581614301565b6affffffffffffffffffffff8116606084015250606083013561491781614761565b614924608084018261437b565b509392505050565b60008282101561493e5761493e614654565b500390565b60208082528181018390526000908460408401835b8681101561498657823561496b816141e3565b6001600160a01b031682529183019190830190600101614958565b509695505050505050565b634e487b7160e01b600052603160045260246000fd5b81356149b2816141e3565b81546001600160a01b0319166001600160a01b038216178255506001810160208301356149de816141e3565b81546001600160a01b0319166001600160a01b038216178255506040830135614a0681614301565b81547effffffffffffffffffffff00000000000000000000000000000000000000008260a01b169150817fff0000000000000000000000ffffffffffffffffffffffffffffffffffffffff82161783556060850135614a6481614761565b60058110614a8257634e487b7160e01b600052602160045260246000fd5b6001600160a01b039190911690911760f89190911b7fff00000000000000000000000000000000000000000000000000000000000000161790555050565b600067ffffffffffffffff821115614ada57614ada614628565b5060051b60200190565b805161ffff811681146146e657600080fd5b805180151581146146e657600080fd5b60006020808385031215614b1957600080fd5b825167ffffffffffffffff811115614b3057600080fd5b8301601f81018513614b4157600080fd5b8051614b54614b4f82614ac0565b6147f5565b81815260079190911b82018301908381019087831115614b7357600080fd5b928401925b828410156122555760808489031215614b915760008081fd5b614b996147a8565b614ba285614ae4565b815285850151614bb1816141e3565b818701526040614bc2868201614af6565b908201526060614bd3868201614af6565b9082015282526080939093019290840190614b78565b6000600019821415614bfd57614bfd614654565b5060010190565b60006020808385031215614c1757600080fd5b825167ffffffffffffffff811115614c2e57600080fd5b8301601f81018513614c3f57600080fd5b8051614c4d614b4f82614ac0565b81815260079190911b82018301908381019087831115614c6c57600080fd5b928401925b828410156122555760808489031215614c8a5760008081fd5b614c926147a8565b614c9b85614ae4565b815285850151614caa816141e3565b818701526040614cbb868201614af6565b908201526060614ccc868201614af6565b9082015282526080939093019290840190614c71565b600060208284031215614cf457600080fd5b815160ff81168114611ad657600080fd5b600181815b80851115612749578160001904821115614d2657614d26614654565b80851615614d3357918102915b93841c9390800290614d0a565b600082614d4f57506001610616565b81614d5c57506000610616565b8160018114614d725760028114614d7c57614d98565b6001915050610616565b60ff841115614d8d57614d8d614654565b50506001821b610616565b5060208310610133831016604e8410600b8410161715614dbb575081810a610616565b614dc58383614d05565b8060001904821115614dd957614dd9614654565b029392505050565b60006106138383614d40565b805169ffffffffffffffffffff811681146146e657600080fd5b600080600080600060a08688031215614e1f57600080fd5b614e2886614ded565b9450602086015193506040860151925060608601519150614e4b60808701614ded565b90509295509295909350565b6000815180845260005b81811015614e7d57602081850181015186830182015201614e61565b81811115614e8f576000602083870101525b50601f01601f19169290920160200192915050565b606081526000614eb76060830186614e57565b6001600160a01b0394851660208401529290931660409091015292915050565b600062ffffff808316818516808303821115614ef557614ef5614654565b01949350505050565b80516fffffffffffffffffffffffffffffffff811681146146e657600080fd5b60008060408385031215614f3157600080fd5b614f3a83614efe565b9150614f4860208401614efe565b90509250929050565b606081526000614f646060830186614e57565b6001600160a01b039490941660208301525060400152919050565b604081526000614f926040830185614e57565b90508260208301529392505050565b604081526000614fb46040830185614e57565b905082151560208301529392505050565b600080600060608486031215614fda57600080fd5b8351925060208401519150604084015190509250925092565b805162ffffff811681146146e657600080fd5b805164ffffffffff811681146146e657600080fd5b6000610180828403121561502e57600080fd5b6150366147d1565b61503f83614ae4565b815261504d60208401614ae4565b602082015261505e60408401614ae4565b604082015261506f60608401614ae4565b606082015261508060808401614ae4565b608082015261509160a08401614ff3565b60a08201526150a260c08401614ae4565b60c08201526150b360e08401614ff3565b60e08201526101006150c6818501614ff3565b908201526101206150d8848201614ff3565b908201526101406150ea848201614ff3565b908201526101606150fc848201615006565b908201529392505050565b60006020828403121561511957600080fd5b61061382614ff3565b60006020828403121561513457600080fd5b61061382614ae456fe5f76325f3246616c6c6261636b50726963653a20746f6b656e3a20257320636f6c6c61746572616c3a202573a2646970667358221220d0b98f68d2bb2065191294e88267ed7b3d18b839665c0ad06d101abf6861d79264736f6c634300080a003300000000000000000000000020918f4ba70439c58d070d4746f3aa303a7595d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d04e699c312bdca99d4b79b0983193a7b0023ad40000000000000000000000004200000000000000000000000000000000000006