0 txs
62 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
diamondV1
viewfunction diamondV1() view returns (address)
fundManagerLenderId
viewfunction fundManagerLenderId() view returns (string)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isWhitelistedToken
viewfunction isWhitelistedToken(address) view returns (bool)
offChainBalance
viewfunction offChainBalance(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
permit2
viewfunction permit2() view returns (address)
pool
viewfunction pool(address) view returns (address)
poolManager
viewfunction poolManager() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
ROLE_MANAGER
viewfunction ROLE_MANAGER() view returns (bytes32)
router
viewfunction router() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalAllocation
viewfunction totalAllocation(address) view returns (uint16)
totalAssets
viewfunction totalAssets(address _token) view returns (uint256)
totalV1Pools
viewfunction totalV1Pools(address _token) view returns (uint256)
v1Pools
viewfunction v1Pools(address, uint256) view returns (string v1PoolId, uint16 allocation)
addPool
nonpayablefunction addPool(address _token, string _v1PoolId, uint16 _allocation)
addTokenToWhitelist
nonpayablefunction addTokenToWhitelist(address _pool)
claimFunds
nonpayablefunction claimFunds(address _token, tuple[] _claim)
deployFunds
nonpayablefunction deployFunds(address _token)
deployFundsPartially
nonpayablefunction deployFundsPartially(address _token, uint256 _bal)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address _token, address _to, uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address _account)
initialize
nonpayablefunction initialize(address _diamondV1, string _lenderId, address _manager, address _router, address _poolManager, address _permit2)
manualSwapIn
nonpayablefunction manualSwapIn(address _tokenIn, uint256 _amountIn, address _tokenOut, uint256 _amountOut)
manualSwapOut
nonpayablefunction manualSwapOut(address _tokenOut, address _to, uint256 _amountOut)
pause
nonpayablefunction pause()
removePool
nonpayablefunction removePool(address _token, uint256 _index)
removeTokenFromWhitelist
nonpayablefunction removeTokenFromWhitelist(address _pool)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address _account)
sendToV2Reserve
nonpayablefunction sendToV2Reserve(address _token, uint256 _v2Amount, uint256 uptoQueuePosition)
swapExactInputSingle
nonpayablefunction swapExactInputSingle(tuple key, bool zeroForOne, uint128 amountIn, uint128 minAmountOut, address inputToken, address outputToken) returns (uint256 amountOut)
transferAdmin
nonpayablefunction transferAdmin(address _newOwner)
unpause
nonpayablefunction unpause()
updatePoolAllocation
nonpayablefunction updatePoolAllocation(address _token, uint256 _index, uint16 _allocation)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
AdminTransferred
event AdminTransferred(address _oldOwner, address _newOwner)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
EmergencyWithdraw
event EmergencyWithdraw(address _token, address _to, uint256 _amount)
FundClaimed
event FundClaimed(address indexed _executor, address _token, uint256 _amount)
FundDeployed
event FundDeployed(address indexed _executor, address _token, uint256 _amount)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
PoolTokenAdded
event PoolTokenAdded(address _poolToken)
PoolTokenRemoved
event PoolTokenRemoved(address _poolToken)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Swap
event Swap(address indexed _executor, (address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) key, bool zeroForOne, uint128 amountIn, uint256 amountOut)
SwapIn
event SwapIn(address indexed _executor, address indexed _tokenIn, uint256 _amountIn, address indexed _tokenOut, uint256 _amountOut)
SwapOut
event SwapOut(address indexed _executor, address indexed _to, address indexed _tokenOut, uint256 _amountOut)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
V1PoolAdded
event V1PoolAdded(address indexed _executor, address _token, uint16 _allocation, string _v1PoolId)
V1PoolAllocationUpdated
event V1PoolAllocationUpdated(address indexed _executor, address _token, uint16 _prevAllocation, uint16 _newAllocation, string _v1PoolId)
V1PoolRemoved
event V1PoolRemoved(address indexed _executor, address _token, uint16 _allocation, string _v1PoolId)
errors
AccessDenied
error AccessDenied(address _executor)
DuplicatePool
error DuplicatePool(string _poolId)
InvalidAddress
error InvalidAddress(address _newImpl)
InvalidAllocation
error InvalidAllocation(uint256 _allocation, address _token)
InvalidV1Pool
error InvalidV1Pool(string _poolId)
V1PoolIsNotActive
error V1PoolIsNotActive(string _poolId)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516156f5610118600039600081816116b9015281816116f901528181611a5301528181611a930152611b2201526156f56000f3fe6080604052600436106102465760003560e01c8063638dc5e511610139578063d547741f116100b6578063df8b817c1161007a578063df8b817c1461072e578063e63ea4081461075c578063e832daed1461077c578063f3e0ffbf1461079c578063f5b944eb146107bc578063f887ea40146107de57600080fd5b8063d547741f1461067f578063d68a26031461069f578063d84c1b38146106bf578063d959b0cb146106df578063dc4c90d31461070d57600080fd5b80638456cb59116100fd5780638456cb59146105e457806391d14854146105f9578063a217fddf14610619578063ab37f4861461062e578063bca839cf1461065f57600080fd5b8063638dc5e51461050857806365ccbb5c1461053f5780636af3606b1461058457806375829def146105a45780637d1f3226146105c457600080fd5b8063306275be116101c757806349b8ca3c1161018b57806349b8ca3c146104885780634f1ef286146104a857806352d1902d146104bb57806356af043e146104d05780635c975abb146104f057600080fd5b8063306275be146103f157806336568abe146104115780633659cfe6146104315780633f4ba83a1461045157806348e2477a1461046657600080fd5b8063156522a81161020e578063156522a81461031b57806320db00b014610352578063248a9ca31461037257806326c2a8ac146103b05780632f2ff15d146103d157600080fd5b80630173c6af1461024b57806301ffc9a71461026d57806306562734146102a257806307648e50146102c257806312261ee7146102e2575b600080fd5b34801561025757600080fd5b5061026b6102663660046143f1565b6107ff565b005b34801561027957600080fd5b5061028d61028836600461440e565b610cd7565b60405190151581526020015b60405180910390f35b3480156102ae57600080fd5b5061026b6102bd366004614438565b610d0e565b3480156102ce57600080fd5b5061026b6102dd366004614464565b611149565b3480156102ee57600080fd5b5061012f54610303906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561032757600080fd5b506103036103363660046143f1565b610132602052600090815260409020546001600160a01b031681565b34801561035e57600080fd5b5061026b61036d3660046144ed565b6112c3565b34801561037e57600080fd5b506103a261038d36600461458e565b60009081526065602052604090206001015490565b604051908152602001610299565b3480156103bc57600080fd5b5061013054610303906001600160a01b031681565b3480156103dd57600080fd5b5061026b6103ec3660046145a7565b611479565b3480156103fd57600080fd5b5061026b61040c3660046143f1565b6114fc565b34801561041d57600080fd5b5061026b61042c3660046145a7565b611631565b34801561043d57600080fd5b5061026b61044c3660046143f1565b6116af565b34801561045d57600080fd5b5061026b61178e565b34801561047257600080fd5b5061047b6117ae565b6040516102999190614627565b34801561049457600080fd5b5061026b6104a336600461463a565b61183d565b61026b6104b63660046146dc565b611a49565b3480156104c757600080fd5b506103a2611b15565b3480156104dc57600080fd5b5061026b6104eb36600461476e565b611bc8565b3480156104fc57600080fd5b5060fb5460ff1661028d565b34801561051457600080fd5b506103a26105233660046143f1565b6001600160a01b03166000908152610135602052604090205490565b34801561054b57600080fd5b5061057161055a3660046143f1565b6101336020526000908152604090205461ffff1681565b60405161ffff9091168152602001610299565b34801561059057600080fd5b506103a261059f3660046147e0565b611d3e565b3480156105b057600080fd5b5061026b6105bf3660046143f1565b6122ae565b3480156105d057600080fd5b5061026b6105df366004614438565b61230b565b3480156105f057600080fd5b5061026b6126da565b34801561060557600080fd5b5061028d6106143660046145a7565b6126fa565b34801561062557600080fd5b506103a2600081565b34801561063a57600080fd5b5061028d6106493660046143f1565b6101346020526000908152604090205460ff1681565b34801561066b57600080fd5b5061026b61067a366004614879565b612725565b34801561068b57600080fd5b5061026b61069a3660046145a7565b612a65565b3480156106ab57600080fd5b5061026b6106ba3660046148b7565b612ae2565b3480156106cb57600080fd5b5061026b6106da3660046143f1565b612fb3565b3480156106eb57600080fd5b506106ff6106fa366004614438565b613119565b60405161029992919061493f565b34801561071957600080fd5b5061012e54610303906001600160a01b031681565b34801561073a57600080fd5b506103a26107493660046143f1565b6101366020526000908152604090205481565b34801561076857600080fd5b5061026b610777366004614464565b6131e7565b34801561078857600080fd5b5061026b610797366004614965565b61324e565b3480156107a857600080fd5b506103a26107b73660046143f1565b61368e565b3480156107c857600080fd5b506103a260008051602061567983398151915281565b3480156107ea57600080fd5b5061012d54610303906001600160a01b031681565b6001600160a01b038082166000908152610132602090815260409182902054825163dc4c90d360e01b815292518594919091169263dc4c90d39260048083019391928290030181865afa15801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906149cb565b6001600160a01b0316336001600160a01b0316146108c257335b604051630504a20d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6108ca613796565b6001600160a01b0382166000908152610134602052604090205460ff1661090f57604051634726455360e11b81526001600160a01b03831660048201526024016108b9565b6001600160a01b0382166000908152610133602052604090205461ffff1661271014610978576001600160a01b038216600081815261013360205260409081902054905163404b03c160e01b815261ffff909116600482015260248101919091526044016108b9565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906149e8565b61013054604051631524564d60e11b81529192506001600160a01b031690632a48ac9a90610a1b906101319087908690600401614abe565b6000604051808303816000875af1158015610a3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a629190810190614aec565b5060008060005b6001600160a01b03861660009081526101356020526040902054811015610ba0576001600160a01b0386166000908152610135602052604090208054612710919083908110610aba57610aba614b59565b6000918252602090912060016002909202010154610adc9061ffff1686614b85565b610ae69190614b9c565b9250610af28383614bbe565b610130546001600160a01b038881166000908152610135602052604090208054939550911691631319dada916101319185908110610b3257610b32614b59565b9060005260206000209060020201600001866040518463ffffffff1660e01b8152600401610b6293929190614bd1565b600060405180830381600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b505060019092019150610a699050565b506001600160a01b0380861660009081526101326020908152604091829020548251637119778560e11b8152925193169263f7f79b96928592859263e232ef0a9260048082019392918290030181865afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2691906149e8565b610c309190614bbe565b6040518263ffffffff1660e01b8152600401610c4e91815260200190565b600060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b50505050610c873390565b604080516001600160a01b0388811682526020820187905292909216917f76ddc6db56d22b98346d09d942fedf4fc9132b3aa5926933a1b802e9a000c93291015b60405180910390a25050505050565b60006001600160e01b03198216637965db0b60e01b1480610d0857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038083166000908152610132602090815260409182902054825163dc4c90d360e01b815292518694919091169263dc4c90d39260048083019391928290030181865afa158015610d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8d91906149cb565b6001600160a01b0316336001600160a01b031614610dab5733610898565b610db3613796565b6001600160a01b0383166000908152610134602052604090205460ff16610df857604051634726455360e11b81526001600160a01b03841660048201526024016108b9565b6001600160a01b0383166000908152610133602052604090205461ffff1661271014610e61576001600160a01b038316600081815261013360205260409081902054905163404b03c160e01b815261ffff909116600482015260248101919091526044016108b9565b61013054604051631524564d60e11b81526001600160a01b0390911690632a48ac9a90610e98906101319087908790600401614abe565b6000604051808303816000875af1158015610eb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610edf9190810190614aec565b5060008060005b6001600160a01b0386166000908152610135602052604090205481101561101d576001600160a01b0386166000908152610135602052604090208054612710919083908110610f3757610f37614b59565b6000918252602090912060016002909202010154610f599061ffff1687614b85565b610f639190614b9c565b9250610f6f8383614bbe565b610130546001600160a01b038881166000908152610135602052604090208054939550911691631319dada916101319185908110610faf57610faf614b59565b9060005260206000209060020201600001866040518463ffffffff1660e01b8152600401610fdf93929190614bd1565b600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b505060019092019150610ee69050565b506001600160a01b0380861660009081526101326020908152604091829020548251637119778560e11b8152925193169263f7f79b96928592859263e232ef0a9260048082019392918290030181865afa15801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a391906149e8565b6110ad9190614bbe565b6040518263ffffffff1660e01b81526004016110cb91815260200190565b600060405180830381600087803b1580156110e557600080fd5b505af11580156110f9573d6000803e3d6000fd5b505050506111043390565b604080516001600160a01b0388811682526020820188905292909216917f76ddc6db56d22b98346d09d942fedf4fc9132b3aa5926933a1b802e9a000c9329101610cc8565b6001600160a01b038084166000908152610132602090815260409182902054825163dc4c90d360e01b815292518794919091169263dc4c90d39260048083019391928290030181865afa1580156111a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c891906149cb565b6001600160a01b0316336001600160a01b0316146111e65733610898565b6111ee613796565b6001600160a01b0384166000908152610134602052604090205460ff1661123357604051634726455360e11b81526001600160a01b03851660048201526024016108b9565b61123e8484846137de565b6001600160a01b0384166000908152610136602052604081208054849290611267908490614bbe565b90915550506001600160a01b03848116908416336001600160a01b03167f82f3dfffd7e25c41ae9ddfd9ae4862835de3465e062b5c070ae3b4fe2c962be9856040516112b591815260200190565b60405180910390a450505050565b600054610100900460ff16158080156112e35750600054600160ff909116105b806112fd5750303b1580156112fd575060005460ff166001145b6113605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b9565b6000805460ff191660011790558015611383576000805461ff0019166101001790555b61138b613846565b611393613846565b61139b61386d565b6113a660003361389c565b6113be6000805160206156798339815191528661389c565b61013080546001600160a01b0319166001600160a01b038a161790556101316113e8878983614c6a565b5061012d80546001600160a01b038087166001600160a01b03199283161790925561012e805486841690831617905561012f805492851692909116919091179055801561146f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60008281526065602052604090206001015461149481613922565b816001600160a01b0381166114e45760405162461bcd60e51b8152602060048201526016602482015275616464726573732063616e6e6f74206265207a65726f60501b60448201526064016108b9565b6114ec613796565b6114f6848461389c565b50505050565b60008051602061567983398151915261151481613922565b6000826001600160a01b031663cbdf382c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157891906149cb565b6001600160a01b0381166000908152610134602052604090205490915060ff166115c057604051634726455360e11b81526001600160a01b03821660048201526024016108b9565b6001600160a01b038116600081815261013460209081526040808320805460ff1916905561013282529182902080546001600160a01b031916905590519182527f6f5720f1797e65971522f72f783ff0ffb1f8743da622487296126ddd57b4aab691015b60405180910390a1505050565b6001600160a01b03811633146116a15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108b9565b6116ab828261392c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116f75760405162461bcd60e51b81526004016108b990614d23565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611740600080516020615659833981519152546001600160a01b031690565b6001600160a01b0316146117665760405162461bcd60e51b81526004016108b990614d6f565b61176f81613993565b6040805160008082526020820190925261178b9183919061399e565b50565b6000805160206156798339815191526117a681613922565b61178b613b09565b61013180546117bc90614a01565b80601f01602080910402602001604051908101604052809291908181526020018280546117e890614a01565b80156118355780601f1061180a57610100808354040283529160200191611835565b820191906000526020600020905b81548152906001019060200180831161181857829003601f168201915b505050505081565b6001600160a01b038084166000908152610132602090815260409182902054825163dc4c90d360e01b815292518794919091169263dc4c90d39260048083019391928290030181865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc91906149cb565b6001600160a01b0316336001600160a01b0316146118da5733610898565b6118e2613796565b6001600160a01b0384166000908152610134602052604090205460ff1661192757604051634726455360e11b81526001600160a01b03851660048201526024016108b9565b6001600160a01b038085166000908152610132602052604090205461194f91869116856137de565b6001600160a01b0380851660009081526101326020908152604080832054815163417f29ad60e11b81529151939416926382fe535a926004808401939192918290030181865afa1580156119a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cb91906149cb565b90506001600160a01b0381166119e157506114f6565b60405163d8aed14560e01b815260048101849052602481018590526001600160a01b0382169063d8aed14590604401600060405180830381600087803b158015611a2a57600080fd5b505af1158015611a3e573d6000803e3d6000fd5b505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611a915760405162461bcd60e51b81526004016108b990614d23565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ada600080516020615659833981519152546001600160a01b031690565b6001600160a01b031614611b005760405162461bcd60e51b81526004016108b990614d6f565b611b0982613993565b6116ab8282600161399e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bb55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108b9565b5060008051602061565983398151915290565b6001600160a01b038083166000908152610132602090815260409182902054825163dc4c90d360e01b815292518694919091169263dc4c90d39260048083019391928290030181865afa158015611c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4791906149cb565b6001600160a01b0316336001600160a01b031614611c655733610898565b611c6d613796565b6001600160a01b0385166000908152610134602052604090205460ff16611cb257604051634726455360e11b81526001600160a01b03861660048201526024016108b9565b611cbe85333087613b5b565b6001600160a01b0383166000908152610136602052604081208054849290611ce7908490614dbb565b909155505060408051858152602081018490526001600160a01b03858116929088169133917f8e00bd1fdf153b3bf1f631f69d3517d3afe2e0b7111cd25a545d1f74856ca94a910160405180910390a45050505050565b6001600160a01b0380831660009081526101326020908152604080832054815163dc4c90d360e01b815291519394879491169263dc4c90d392600480820193918290030181865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb91906149cb565b6001600160a01b0316336001600160a01b031614611dd95733610898565b611de1613796565b6001600160a01b0384166000908152610134602052604090205460ff16611e2657604051634726455360e11b81526001600160a01b03851660048201526024016108b9565b61012f5460405163095ea7b360e01b81526001600160a01b038681169263095ea7b392611e5b92909116908a90600401614dce565b6020604051808303816000875af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e9190614df0565b5061012f5461012d546040516387517c4560e01b81526001600160a01b03878116600483015291821660248201526001600160801b038916604482015265ffffffffffff60648201529116906387517c4590608401600060405180830381600087803b158015611f0d57600080fd5b505af1158015611f21573d6000803e3d6000fd5b505060408051600160fc1b60208201528151600181830381018252602183018181526061840190945290945060009350906041015b6060815260200190600190039081611f5657505060408051600360f91b6020820152600360fa1b6021820152600f60f81b602282015281516003818303810182526023830181815260a3840190945293945092600092916043015b6060815260200190600190039081611fb15790505090506040518060a001604052808d803603810190611fe49190614e32565b81526020018c151581526020018b6001600160801b031681526020018a6001600160801b03168152602001604051806020016040528060008152508152506040516020016120329190614ec7565b6040516020818303038152906040528160008151811061205457612054614b59565b6020026020010181905250878a604051602001612072929190614dce565b6040516020818303038152906040528160018151811061209457612094614b59565b602002602001018190525086896040516020016120b2929190614dce565b604051602081830303815290604052816002815181106120d4576120d4614b59565b602002602001018190525081816040516020016120f2929190614fc8565b6040516020818303038152906040528360008151811061211457612114614b59565b6020908102919091010152600061212c426014614bbe565b61012d54604051630d64d59360e21b81529192506001600160a01b031690633593564c9061216290889088908690600401614fed565b600060405180830381600087803b15801561217c57600080fd5b505af1158015612190573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038b1692506370a082319150602401602060405180830381865afa1580156121d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fc91906149e8565b9650896001600160801b03168710156122575760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74206f757470757420616d6f756e7400000000000060448201526064016108b9565b336001600160a01b03167f69f7259c9287af812741899f429135a718aadee44d38c4d4d80dafb38f7955558e8e8e8b6040516122969493929190615012565b60405180910390a25050505050509695505050505050565b6122b9600082611479565b6122c4600033612a65565b7ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec633604080516001600160a01b03928316815291841660208301520160405180910390a150565b6001600160a01b038083166000908152610132602090815260409182902054825163dc4c90d360e01b815292518694919091169263dc4c90d39260048083019391928290030181865afa158015612366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238a91906149cb565b6001600160a01b0316336001600160a01b0316146123a85733610898565b6123b0613796565b6001600160a01b0383166000908152610134602052604090205460ff166123f557604051634726455360e11b81526001600160a01b03841660048201526024016108b9565b6001600160a01b0383166000908152610135602052604081205461241b90600190614dbb565b6001600160a01b038516600090815261013560205260408120805492935090918590811061244b5761244b614b59565b906000526020600020906002020160405180604001604052908160008201805461247490614a01565b80601f01602080910402602001604051908101604052809291908181526020018280546124a090614a01565b80156124ed5780601f106124c2576101008083540402835291602001916124ed565b820191906000526020600020905b8154815290600101906020018083116124d057829003601f168201915b50505091835250506001919091015461ffff1660209091015290508382146125b7576001600160a01b03851660009081526101356020526040902080548390811061253a5761253a614b59565b90600052602060002090600202016101356000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061257f5761257f614b59565b600091825260209091206002909102018061259a83826150b3565b506001918201549101805461ffff191661ffff9092169190911790555b6001600160a01b0385166000908152610135602052604090208054806125df576125df615189565b600082815260208120600019909201916002830201906125ff828261438e565b50600101805461ffff191690559055805160405160009161013791612624919061519f565b9081526040805160209281900383019020805460ff191693151593909317909255828101516001600160a01b0388166000908152610133909252918120805490919061267590849061ffff166151bb565b92506101000a81548161ffff021916908361ffff1602179055506126963390565b6001600160a01b03167ffacebc324a9981b71c47fef8419a7247a5fd325892321a3919dbca10c3feb4088683602001518460000151604051610cc8939291906151d5565b6000805160206156798339815191526126f281613922565b61178b613b93565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b038084166000908152610132602090815260409182902054825163dc4c90d360e01b815292518794919091169263dc4c90d39260048083019391928290030181865afa158015612780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a491906149cb565b6001600160a01b0316336001600160a01b0316146127c25733610898565b6127ca613796565b6001600160a01b0384166000908152610134602052604090205460ff1661280f57604051634726455360e11b81526001600160a01b03851660048201526024016108b9565b6001600160a01b03841660009081526101356020526040812080548590811061283a5761283a614b59565b906000526020600020906002020160405180604001604052908160008201805461286390614a01565b80601f016020809104026020016040519081016040528092919081815260200182805461288f90614a01565b80156128dc5780601f106128b1576101008083540402835291602001916128dc565b820191906000526020600020905b8154815290600101906020018083116128bf57829003601f168201915b50505091835250506001919091015461ffff908116602092830152828201516001600160a01b038916600090815261013390935260409092205492935061271092612928911686615203565b61293291906151bb565b61ffff16111561296a5760405163404b03c160e01b815261ffff841660048201526001600160a01b03861660248201526044016108b9565b6001600160a01b03851660009081526101356020526040902080548491908690811061299857612998614b59565b60009182526020808320600292909202909101600101805461ffff191661ffff948516179055838101516001600160a01b038916835261013390915260409091205490916129e7911685615203565b6129f191906151bb565b6001600160a01b038616600090815261013360205260409020805461ffff191661ffff92909216919091179055336001600160a01b03167f96a089f78f04b785c3904630cfb57314e5a81acd2cae7cb2a542ceb85c76006f868360200151868560000151604051610cc8949392919061521d565b600082815260656020526040902060010154612a8081613922565b816001600160a01b038116612ad05760405162461bcd60e51b8152602060048201526016602482015275616464726573732063616e6e6f74206265207a65726f60501b60448201526064016108b9565b612ad8613796565b6114f6848461392c565b6001600160a01b038084166000908152610132602090815260409182902054825163dc4c90d360e01b815292518794919091169263dc4c90d39260048083019391928290030181865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6191906149cb565b6001600160a01b0316336001600160a01b031614612b7f5733610898565b612b87613796565b6001600160a01b0384166000908152610134602052604090205460ff16612bcc57604051634726455360e11b81526001600160a01b03851660048201526024016108b9565b61013054604051631e6dcbb160e11b81526000916001600160a01b031690633cdb976290612c0290610131908990600401615253565b602060405180830381865afa158015612c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4391906149e8565b905060005b83811015612d7257610130546001600160a01b0316636878461b868684818110612c7457612c74614b59565b9050602002810190612c86919061527d565b612c90908061527d565b878785818110612ca257612ca2614b59565b9050602002810190612cb4919061527d565b60200135888886818110612cca57612cca614b59565b9050602002810190612cdc919061527d565b60400135898987818110612cf257612cf2614b59565b9050602002810190612d04919061527d565b612d15906080810190606001615293565b6040518563ffffffff1660e01b8152600401612d34949392919061538d565b600060405180830381600087803b158015612d4e57600080fd5b505af1158015612d62573d6000803e3d6000fd5b505060019092019150612c489050565b5061013054604051631e6dcbb160e11b81526000916001600160a01b031690633cdb976290612da990610131908a90600401615253565b602060405180830381865afa158015612dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dea91906149e8565b6001600160a01b03808816600090815261013260205260409020549192501663f7f79b96612e188484614dbb565b6001600160a01b03808a1660009081526101326020908152604091829020548251637119778560e11b8152925193169263e232ef0a9260048082019392918290030181865afa158015612e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9391906149e8565b612e9d9190614dbb565b6040518263ffffffff1660e01b8152600401612ebb91815260200190565b600060405180830381600087803b158015612ed557600080fd5b505af1158015612ee9573d6000803e3d6000fd5b5050610130546040516302ec122360e21b81526001600160a01b039091169250630bb0488c9150612f2490610131908a908690600401614abe565b6020604051808303816000875af1158015612f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f679190614df0565b50604080516001600160a01b038816815260208101839052815133927f8b5640bc6a70f4cedabaf515fa266b322bf861aa1fda7ac4ae261193eaa6cfa7928290030190a2505050505050565b600080516020615679833981519152612fcb81613922565b6000826001600160a01b031663cbdf382c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302f91906149cb565b90506001600160a01b038116158061306057506001600160a01b0381166000908152610134602052604090205460ff165b1561308957604051634726455360e11b81526001600160a01b03821660048201526024016108b9565b6001600160a01b03808216600090815261013460209081526040808320805460ff19166001179055610132909152902080548583166001600160a01b0319909116179055610130546130e091839116600019613bd0565b6040516001600160a01b03821681527f66317274834fa7f29c61f1282a5750173b389a799032724a3d0fb40879024bad90602001611624565b610135602052816000526040600020818154811061313657600080fd5b90600052602060002090600202016000915091505080600001805461315a90614a01565b80601f016020809104026020016040519081016040528092919081815260200182805461318690614a01565b80156131d35780601f106131a8576101008083540402835291602001916131d3565b820191906000526020600020905b8154815290600101906020018083116131b657829003601f168201915b5050506001909301549192505061ffff1682565b60006131f281613922565b6131fd8484846137de565b604080516001600160a01b038087168252851660208201529081018390527ff24ef89f38eadc1bde50701ad6e4d6d11a2dc24f7cf834a486991f38833285049060600160405180910390a150505050565b6001600160a01b038085166000908152610132602090815260409182902054825163dc4c90d360e01b815292518894919091169263dc4c90d39260048083019391928290030181865afa1580156132a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cd91906149cb565b6001600160a01b0316336001600160a01b0316146132eb5733610898565b6132f3613796565b6001600160a01b0385166000908152610134602052604090205460ff1661333857604051634726455360e11b81526001600160a01b03861660048201526024016108b9565b610137848460405161334b929190615464565b9081526040519081900360200190205460ff16156133805783836040516311781feb60e11b81526004016108b9929190615474565b61013054604051638bc4c13d60e01b81526001916001600160a01b031690638bc4c13d906133b49088908890600401615474565b602060405180830381865afa1580156133d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f59190615488565b600281111561340657613406615324565b1461342857838360405163422a004160e11b81526004016108b9929190615474565b61013054604051633de5cc4b60e11b81526001600160a01b03808816921690637bcb98969061345d9088908890600401615474565b602060405180830381865afa15801561347a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349e91906149cb565b6001600160a01b0316146134c957838360405163edb6de3b60e01b81526004016108b9929190615474565b6001600160a01b03851660009081526101336020526040902054612710906134f59061ffff1684615203565b61ffff16111561352d5760405163404b03c160e01b815261ffff831660048201526001600160a01b03861660248201526044016108b9565b6001600160a01b0385166000908152610135602090815260409182902082516060601f88018490049093028101830184529283018681529092918291908890889081908501838280828437600092018290525093855250505061ffff861660209283015283546001810185559381522081519192600202019081906135b290826154a9565b50602091820151600191909101805461ffff191661ffff9283161790556001600160a01b0387166000908152610133909252604082208054859391926135fa91859116615203565b92506101000a81548161ffff021916908361ffff16021790555060016101378585604051613629929190615464565b908152604051908190036020019020805491151560ff199092169190911790556136503390565b6001600160a01b03167fc98bc74da9c0ea41120b7a99cd60c0c4425f729a8933c9e4361544390dc2df8786848787604051610cc89493929190615552565b6001600160a01b038082166000908152610136602052604080822054610130549151631e6dcbb160e11b815292939092911690633cdb9762906136d990610131908790600401615253565b602060405180830381865afa1580156136f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371a91906149e8565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561375e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378291906149e8565b61378c9190614bbe565b610d089190614bbe565b60fb5460ff16156137dc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108b9565b565b6040516001600160a01b03831660248201526044810182905261384190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c5b565b505050565b600054610100900460ff166137dc5760405162461bcd60e51b81526004016108b990615581565b600054610100900460ff166138945760405162461bcd60e51b81526004016108b990615581565b6137dc613d30565b6138a682826126fa565b6116ab5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556138de3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61178b8133613d63565b61393682826126fa565b156116ab5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006116ab81613922565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156139d15761384183613dbc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613a2b575060408051601f3d908101601f19168201909252613a28918101906149e8565b60015b613a8e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108b9565b6000805160206156598339815191528114613afd5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108b9565b50613841838383613e58565b613b11613e7d565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040516001600160a01b03808516602483015283166044820152606481018290526114f69085906323b872dd60e01b9060840161380a565b613b9b613796565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613b3e3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613c218482613ec6565b6114f6576040516001600160a01b038416602482015260006044820152613c5590859063095ea7b360e01b9060640161380a565b6114f684825b6000613cb0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f6d9092919063ffffffff16565b9050805160001480613cd1575080806020019051810190613cd19190614df0565b6138415760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108b9565b600054610100900460ff16613d575760405162461bcd60e51b81526004016108b990615581565b60fb805460ff19169055565b613d6d82826126fa565b6116ab57613d7a81613f84565b613d85836020613f96565b604051602001613d969291906155cc565b60408051601f198184030181529082905262461bcd60e51b82526108b991600401614627565b6001600160a01b0381163b613e295760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108b9565b60008051602061565983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613e6183614138565b600082511180613e6e5750805b15613841576114f68383614178565b60fb5460ff166137dc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108b9565b6000806000846001600160a01b031684604051613ee3919061519f565b6000604051808303816000865af19150503d8060008114613f20576040519150601f19603f3d011682016040523d82523d6000602084013e613f25565b606091505b5091509150818015613f4f575080511580613f4f575080806020019051810190613f4f9190614df0565b8015613f6457506001600160a01b0385163b15155b95945050505050565b6060613f7c848460008561419d565b949350505050565b6060610d086001600160a01b03831660145b60606000613fa5836002614b85565b613fb0906002614bbe565b6001600160401b03811115613fc757613fc761466f565b6040519080825280601f01601f191660200182016040528015613ff1576020820181803683370190505b509050600360fc1b8160008151811061400c5761400c614b59565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061403b5761403b614b59565b60200101906001600160f81b031916908160001a905350600061405f846002614b85565b61406a906001614bbe565b90505b60018111156140e2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061409e5761409e614b59565b1a60f81b8282815181106140b4576140b4614b59565b60200101906001600160f81b031916908160001a90535060049490941c936140db81615641565b905061406d565b5083156141315760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b9565b9392505050565b61414181613dbc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614131838360405180606001604052806027815260200161569960279139614278565b6060824710156141fe5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108b9565b600080866001600160a01b0316858760405161421a919061519f565b60006040518083038185875af1925050503d8060008114614257576040519150601f19603f3d011682016040523d82523d6000602084013e61425c565b606091505b509150915061426d878383876142f0565b979650505050505050565b6060600080856001600160a01b031685604051614295919061519f565b600060405180830381855af49150503d80600081146142d0576040519150601f19603f3d011682016040523d82523d6000602084013e6142d5565b606091505b50915091506142e6868383876142f0565b9695505050505050565b6060831561435f578251600003614358576001600160a01b0385163b6143585760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b9565b5081613f7c565b613f7c83838151156143745781518083602001fd5b8060405162461bcd60e51b81526004016108b99190614627565b50805461439a90614a01565b6000825580601f106143aa575050565b601f01602090049060005260206000209081019061178b91905b808211156143d857600081556001016143c4565b5090565b6001600160a01b038116811461178b57600080fd5b60006020828403121561440357600080fd5b8135614131816143dc565b60006020828403121561442057600080fd5b81356001600160e01b03198116811461413157600080fd5b6000806040838503121561444b57600080fd5b8235614456816143dc565b946020939093013593505050565b60008060006060848603121561447957600080fd5b8335614484816143dc565b92506020840135614494816143dc565b929592945050506040919091013590565b60008083601f8401126144b757600080fd5b5081356001600160401b038111156144ce57600080fd5b6020830191508360208285010111156144e657600080fd5b9250929050565b600080600080600080600060c0888a03121561450857600080fd5b8735614513816143dc565b965060208801356001600160401b0381111561452e57600080fd5b61453a8a828b016144a5565b909750955050604088013561454e816143dc565b9350606088013561455e816143dc565b9250608088013561456e816143dc565b915060a088013561457e816143dc565b8091505092959891949750929550565b6000602082840312156145a057600080fd5b5035919050565b600080604083850312156145ba57600080fd5b8235915060208301356145cc816143dc565b809150509250929050565b60005b838110156145f25781810151838201526020016145da565b50506000910152565b600081518084526146138160208601602086016145d7565b601f01601f19169290920160200192915050565b60208152600061413160208301846145fb565b60008060006060848603121561464f57600080fd5b833561465a816143dc565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156146ad576146ad61466f565b604052919050565b60006001600160401b038211156146ce576146ce61466f565b50601f01601f191660200190565b600080604083850312156146ef57600080fd5b82356146fa816143dc565b915060208301356001600160401b0381111561471557600080fd5b8301601f8101851361472657600080fd5b8035614739614734826146b5565b614685565b81815286602083850101111561474e57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806080858703121561478457600080fd5b843561478f816143dc565b93506020850135925060408501356147a6816143dc565b9396929550929360600135925050565b801515811461178b57600080fd5b80356001600160801b03811681146147db57600080fd5b919050565b6000806000806000808688036101408112156147fb57600080fd5b60a081121561480957600080fd5b5086955060a087013561481b816147b6565b945061482960c088016147c4565b935061483760e088016147c4565b9250610100870135614848816143dc565b9150610120870135614859816143dc565b809150509295509295509295565b803561ffff811681146147db57600080fd5b60008060006060848603121561488e57600080fd5b8335614899816143dc565b9250602084013591506148ae60408501614867565b90509250925092565b6000806000604084860312156148cc57600080fd5b83356148d7816143dc565b925060208401356001600160401b038111156148f257600080fd5b8401601f8101861361490357600080fd5b80356001600160401b0381111561491957600080fd5b8660208260051b840101111561492e57600080fd5b939660209190910195509293505050565b60408152600061495260408301856145fb565b905061ffff831660208301529392505050565b6000806000806060858703121561497b57600080fd5b8435614986816143dc565b935060208501356001600160401b038111156149a157600080fd5b6149ad878288016144a5565b90945092506149c0905060408601614867565b905092959194509250565b6000602082840312156149dd57600080fd5b8151614131816143dc565b6000602082840312156149fa57600080fd5b5051919050565b600181811c90821680614a1557607f821691505b602082108103614a3557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154614a4881614a01565b808552600182168015614a625760018114614a7e57614ab5565b60ff1983166020870152602082151560051b8701019350614ab5565b84600052602060002060005b83811015614aac5781546020828a010152600182019150602081019050614a8a565b87016020019450505b50505092915050565b606081526000614ad16060830186614a3b565b6001600160a01b039490941660208301525060400152919050565b600060208284031215614afe57600080fd5b81516001600160401b03811115614b1457600080fd5b8201601f81018413614b2557600080fd5b8051614b33614734826146b5565b818152856020838501011115614b4857600080fd5b613f648260208301602086016145d7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d0857610d08614b6f565b600082614bb957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d0857610d08614b6f565b606081526000614be46060830186614a3b565b8281036020840152614bf68186614a3b565b915050826040830152949350505050565b601f82111561384157806000526020600020601f840160051c81016020851015614c2e5750805b601f840160051c820191505b81811015614c4e5760008155600101614c3a565b5050505050565b600019600383901b1c191660019190911b1790565b6001600160401b03831115614c8157614c8161466f565b614c9583614c8f8354614a01565b83614c07565b6000601f841160018114614cc35760008515614cb15750838201355b614cbb8682614c55565b845550614c4e565b600083815260209020601f19861690835b82811015614cf45786850135825560209485019460019092019101614cd4565b5086821015614d115760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b81810381811115610d0857610d08614b6f565b6001600160a01b039290921682526001600160801b0316602082015260400190565b600060208284031215614e0257600080fd5b8151614131816147b6565b803562ffffff811681146147db57600080fd5b8035600281900b81146147db57600080fd5b600060a0828403128015614e4557600080fd5b5060405160a081016001600160401b0381118282101715614e6857614e6861466f565b6040528235614e76816143dc565b81526020830135614e86816143dc565b6020820152614e9760408401614e0d565b6040820152614ea860608401614e20565b60608201526080830135614ebb816143dc565b60808201529392505050565b6020808252825180516001600160a01b039081168484015281830151811660408086019190915282015162ffffff1660608086019190915282015160020b608080860191909152909101511660a083015282015180151560c08301526000905060408301516001600160801b03811660e08401525060608301516001600160801b03811661010084015250608083015161012080840152613f7c6101408401826145fb565b600082825180855260208501945060208160051b8301016020850160005b83811015614fbc57601f19858403018852614fa68383516145fb565b6020988901989093509190910190600101614f8a565b50909695505050505050565b604081526000614fdb60408301856145fb565b8281036020840152613f648185614f6c565b60608152600061500060608301866145fb565b8281036020840152614bf68186614f6c565b61010081018535615022816143dc565b6001600160a01b03168252602086013561503b816143dc565b6001600160a01b0316602083015262ffffff61505960408801614e0d565b16604083015261506b60608701614e20565b60020b60608301526080860135615081816143dc565b6001600160a01b0316608083015293151560a08201526001600160801b039290921660c083015260e090910152919050565b8181036150be575050565b6150c88254614a01565b6001600160401b038111156150df576150df61466f565b6150f3816150ed8454614a01565b84614c07565b6000601f821160018114615121576000831561510f5750848201545b6151198482614c55565b855550614c4e565b600085815260209020601f19841690600086815260209020845b8381101561515b578286015482556001958601959091019060200161513b565b50858310156151795781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b600082516151b18184602087016145d7565b9190910192915050565b61ffff8281168282160390811115610d0857610d08614b6f565b6001600160a01b038416815261ffff83166020820152606060408201819052600090613f64908301846145fb565b61ffff8181168382160190811115610d0857610d08614b6f565b6001600160a01b038516815261ffff8481166020830152831660408201526080606082018190526000906142e6908301846145fb565b6040815260006152666040830185614a3b565b905060018060a01b03831660208301529392505050565b60008235607e198336030181126151b157600080fd5b6000602082840312156152a557600080fd5b813560ff8116811461413157600080fd5b6000808335601e198436030181126152cd57600080fd5b83016020810192503590506001600160401b038111156152ec57600080fd5b8036038213156144e657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b634e487b7160e01b600052602160045260246000fd5b81835260208301925060008160005b84811015615383578135865260208201356009811080159061536a57600080fd5b5060208701526040958601959190910190600101615349565b5093949350505050565b608080825285359082015260006153a760208701876152b6565b608060a08501526153bd610100850182846152fb565b9150506153cd60408801886152b6565b848303607f190160c08601526153e48382846152fb565b925050506060870135601e198836030181126153ff57600080fd5b87016020810190356001600160401b0381111561541b57600080fd5b8060061b360382131561542d57600080fd5b848303607f190160e086015261544483828461533a565b9350505050846020830152836040830152613f64606083018460ff169052565b8183823760009101908152919050565b602081526000613f7c6020830184866152fb565b60006020828403121561549a57600080fd5b81516003811061413157600080fd5b81516001600160401b038111156154c2576154c261466f565b6154d0816150ed8454614a01565b6020601f8211600181146154f5576000831561510f5750848201516151198482614c55565b600084815260208120601f198516915b828110156155255787850151825560209485019460019092019101615505565b50848210156155435786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b038516815261ffff841660208201526060604082018190526000906142e690830184866152fb565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516156048160178501602088016145d7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516156358160288401602088016145d7565b01602801949350505050565b60008161565057615650614b6f565b50600019019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf206625bad3d9112d5609b8d356e6fbd514cd1f69980d4ce2b3e6e68e1789ace416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e365f38c13dfcaf95d49c7b54e6defed10a38ccedafeaaa997614519effc5b9b64736f6c634300081a0033