0 txs
0 calls
constructor
constructor()
functions
DAO_FEE_MANAGER_ROLE
viewfunction DAO_FEE_MANAGER_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBurnRequestFeeBalanceFuseAddress
viewfunction getBurnRequestFeeBalanceFuseAddress() view returns (address)
getBurnRequestFeeFuseAddress
viewfunction getBurnRequestFeeFuseAddress() view returns (address)
getDaoFeeRecipientAddress
viewfunction getDaoFeeRecipientAddress() view returns (address)
getDaoManagementFee
viewfunction getDaoManagementFee() view returns (uint256)
getDaoPerformanceFee
viewfunction getDaoPerformanceFee() view returns (uint256)
getFactoryAddresses
viewfunction getFactoryAddresses() view returns (tuple)
getFusionFactoryIndex
viewfunction getFusionFactoryIndex() view returns (uint256)
getPlasmaVaultAdminArray
viewfunction getPlasmaVaultAdminArray() view returns (address[])
getPlasmaVaultBaseAddress
viewfunction getPlasmaVaultBaseAddress() view returns (address)
getPriceOracleMiddleware
viewfunction getPriceOracleMiddleware() view returns (address)
getRedemptionDelayInSeconds
viewfunction getRedemptionDelayInSeconds() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getVestingPeriodInSeconds
viewfunction getVestingPeriodInSeconds() view returns (uint256)
getWithdrawWindowInSeconds
viewfunction getWithdrawWindowInSeconds() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MAINTENANCE_MANAGER_ROLE
viewfunction MAINTENANCE_MANAGER_ROLE() view returns (bytes32)
PAUSE_MANAGER_ROLE
viewfunction PAUSE_MANAGER_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
create
nonpayablefunction create(string assetName_, string assetSymbol_, address underlyingToken_, address owner_) returns (tuple)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address initialFactoryAdmin_, address[] initialPlasmaVaultAdminArray_, tuple factoryAddresses_, address plasmaVaultBase_, address priceOracleMiddleware_, address burnRequestFeeFuse_, address burnRequestFeeBalanceFuse_)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
unpause
nonpayablefunction unpause()
updateBurnRequestFeeBalanceFuse
nonpayablefunction updateBurnRequestFeeBalanceFuse(address newBurnRequestFeeBalanceFuse_)
updateBurnRequestFeeFuse
nonpayablefunction updateBurnRequestFeeFuse(address newBurnRequestFeeFuse_)
updateDaoFee
nonpayablefunction updateDaoFee(address newDaoFeeRecipient_, uint256 newDaoManagementFee_, uint256 newDaoPerformanceFee_)
updateFactoryAddresses
nonpayablefunction updateFactoryAddresses(tuple newFactoryAddresses_)
updatePlasmaVaultAdminArray
nonpayablefunction updatePlasmaVaultAdminArray(address[] newPlasmaVaultAdminArray_)
updatePlasmaVaultBase
nonpayablefunction updatePlasmaVaultBase(address newPlasmaVaultBase_)
updatePriceOracleMiddleware
nonpayablefunction updatePriceOracleMiddleware(address newPriceOracleMiddleware_)
updateRedemptionDelayInSeconds
nonpayablefunction updateRedemptionDelayInSeconds(uint256 newRedemptionDelayInSeconds_)
updateVestingPeriodInSeconds
nonpayablefunction updateVestingPeriodInSeconds(uint256 newVestingPeriodInSeconds_)
updateWithdrawWindowInSeconds
nonpayablefunction updateWithdrawWindowInSeconds(uint256 newWithdrawWindowInSeconds_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
BurnRequestFeeBalanceFuseUpdated
event BurnRequestFeeBalanceFuseUpdated(address newBurnRequestFeeBalanceFuse)
BurnRequestFeeFuseUpdated
event BurnRequestFeeFuseUpdated(address newBurnRequestFeeFuse)
DaoFeeUpdated
event DaoFeeUpdated(address newDaoFeeRecipient, uint256 newDaoManagementFee, uint256 newDaoPerformanceFee)
FactoryAddressesUpdated
event FactoryAddressesUpdated((address accessManagerFactory, address plasmaVaultFactory, address feeManagerFactory, address withdrawManagerFactory, address rewardsManagerFactory, address contextManagerFactory, address priceManagerFactory) newFactoryAddresses)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
PlasmaVaultAdminArrayUpdated
event PlasmaVaultAdminArrayUpdated(address[] newPlasmaVaultAdminArray)
PlasmaVaultBaseUpdated
event PlasmaVaultBaseUpdated(address newPlasmaVaultBase)
PriceOracleMiddlewareUpdated
event PriceOracleMiddlewareUpdated(address newPriceOracleMiddleware)
RedemptionDelayInSecondsUpdated
event RedemptionDelayInSecondsUpdated(uint256 newRedemptionDelayInSeconds)
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)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
VestingPeriodInSecondsUpdated
event VestingPeriodInSecondsUpdated(uint256 newVestingPeriodInSeconds)
WithdrawWindowInSecondsUpdated
event WithdrawWindowInSecondsUpdated(uint256 newWithdrawWindowInSeconds)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress()
InvalidFactoryAddress
error InvalidFactoryAddress()
InvalidFeeValue
error InvalidFeeValue()
InvalidInitialization
error InvalidInitialization()
InvalidRedemptionDelay
error InvalidRedemptionDelay()
InvalidWithdrawWindow
error InvalidWithdrawWindow()
NotInitializing
error NotInitializing()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516130056101015f395f81816116d2015281816116fb015261182801526130055ff3fe608060405260043610610253575f3560e01c806378c003a71161013f578063d27ef8de116100b3578063e11220de11610078578063e11220de146106b3578063e2fa01bb146106c7578063e564a274146106f3578063ead17d7b14610712578063f1186aaf14610731578063ff5c9c7714610745575f80fd5b8063d27ef8de146105fb578063d547741f1461060f578063d84f91e81461062e578063dd247e6c14610661578063de3928ca14610680575f80fd5b8063a217fddf11610104578063a217fddf1461053a578063a462da021461054d578063ad3cb1cc14610561578063b430f8eb1461059e578063ca15c873146105bd578063cec1d64e146105dc575f80fd5b806378c003a7146104b55780637adc62dd146104d45780638456cb59146104e85780639010d07c146104fc57806391d148541461051b575f80fd5b80633a355fa4116101d657806352d1902d1161019b57806352d1902d1461040e5780635bd6094f146104225780635c975abb146104415780635f1eb5b5146104555780635f6464851461047457806367ff144a14610494575f80fd5b80633a355fa4146103955780633f4ba83a146103a9578063432b852f146103bd5780634c184c14146103dc5780634f1ef286146103fb575f80fd5b80631ed713131161021c5780631ed7131314610303578063248a9ca3146103245780632626a45b146103435780632f2ff15d1461035757806336568abe14610376575f80fd5b8062328bae146102575780630136c9c61461027e57806301ffc9a71461029f5780631249a1e8146102ce57806312f7d07d146102ef575b5f80fd5b348015610262575f80fd5b5061026b610759565b6040519081526020015b60405180910390f35b348015610289575f80fd5b50610292610767565b6040516102759190612506565b3480156102aa575f80fd5b506102be6102b936600461251a565b610770565b6040519015158152602001610275565b3480156102d9575f80fd5b506102ed6102e8366004612565565b61079a565b005b3480156102fa575f80fd5b5061029261081c565b34801561030e575f80fd5b50610317610825565b6040516102759190612580565b34801561032f575f80fd5b5061026b61033e3660046125ea565b610835565b34801561034e575f80fd5b5061026b610853565b348015610362575f80fd5b506102ed610371366004612601565b61085c565b348015610381575f80fd5b506102ed610390366004612601565b61087e565b3480156103a0575f80fd5b5061026b6108b6565b3480156103b4575f80fd5b506102ed6108bf565b3480156103c8575f80fd5b506102ed6103d7366004612565565b6108d4565b3480156103e7575f80fd5b506102ed6103f63660046125ea565b61094a565b6102ed61040936600461271f565b6109c6565b348015610419575f80fd5b5061026b6109e5565b34801561042d575f80fd5b506102ed61043c36600461277e565b610a00565b34801561044c575f80fd5b506102be610b40565b348015610460575f80fd5b506102ed61046f3660046128d1565b610b54565b34801561047f575f80fd5b5061026b5f80516020612f3083398151915281565b34801561049f575f80fd5b506104a8610cad565b604051610275919061297d565b3480156104c0575f80fd5b506102ed6104cf3660046125ea565b610cb7565b3480156104df575f80fd5b5061026b610d13565b3480156104f3575f80fd5b506102ed610d1c565b348015610507575f80fd5b506102926105163660046129c8565b610d4e565b348015610526575f80fd5b506102be610535366004612601565b610d7a565b348015610545575f80fd5b5061026b5f81565b348015610558575f80fd5b50610292610dae565b34801561056c575f80fd5b50610591604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102759190612a16565b3480156105a9575f80fd5b506102ed6105b8366004612565565b610db7565b3480156105c8575f80fd5b5061026b6105d73660046125ea565b610e2d565b3480156105e7575f80fd5b506102ed6105f6366004612a28565b610e57565b348015610606575f80fd5b50610292610f19565b34801561061a575f80fd5b506102ed610629366004612601565b610f22565b348015610639575f80fd5b5061026b7f356a809dfdea9198dd76fb76bf6d403ecf13ea675eb89e1eda2db2c4a4676a2681565b34801561066c575f80fd5b506102ed61067b3660046125ea565b610f3e565b34801561068b575f80fd5b5061026b7f12ca4a5ac2cad705272a39c92e45caa2d9c303ba57e709eab1ff20b24512e26681565b3480156106be575f80fd5b50610292610fba565b3480156106d2575f80fd5b506106e66106e1366004612a77565b610fc3565b6040516102759190612afe565b3480156106fe575f80fd5b506102ed61070d366004612565565b6110c9565b34801561071d575f80fd5b506102ed61072c366004612c57565b61113f565b34801561073c575f80fd5b5061026b611308565b348015610750575f80fd5b5061026b611311565b5f61076261131a565b905090565b5f610762611330565b5f6001600160e01b03198216635a05180f60e01b1480610794575061079482611362565b92915050565b5f80516020612f308339815191526107b181611396565b6001600160a01b0382166107d85760405163e6c4247b60e01b815260040160405180910390fd5b6107e1826113a0565b7f0d67edfc274bacb3334945a6ae4416fa07e96bd699c5a2ac2ea0eab3419b1ab8826040516108109190612506565b60405180910390a15050565b5f6107626113e4565b61082d61242c565b61076261140b565b5f8061083f611576565b5f9384526020525050604090206001015490565b5f61076261159a565b61086582610835565b61086e81611396565b61087883836115c1565b50505050565b6001600160a01b03811633146108a75760405163334bd91960e11b815260040160405180910390fd5b6108b18282611600565b505050565b5f610762611636565b5f6108c981611396565b6108d161164a565b50565b5f80516020612f308339815191526108eb81611396565b6001600160a01b0382166109125760405163e6c4247b60e01b815260040160405180910390fd5b61091b826116a0565b7fb62a8210454375285619f27f531ee699a4e56a14a7937fcf64863ad891d29fd9826040516108109190612506565b5f80516020612f3083398151915261096181611396565b815f03610981576040516318d299b160e11b815260040160405180910390fd5b610996825f80516020612f9083398151915255565b6040518281527f253342e03a8d95d72bcc49098b6b4f75a08570e2413585ad39c9a17e3d19476a90602001610810565b6109ce6116c7565b6109d782611757565b6109e18282611761565b5050565b5f6109ee61181d565b505f80516020612f7083398151915290565b7f12ca4a5ac2cad705272a39c92e45caa2d9c303ba57e709eab1ff20b24512e266610a2a81611396565b6001600160a01b038416610a515760405163e6c4247b60e01b815260040160405180910390fd5b612710831115610a745760405163ac98d7e160e01b815260040160405180910390fd5b612710821115610a975760405163ac98d7e160e01b815260040160405180910390fd5b610aa084611866565b610ac8837f8fc808da4bdddf1c57ae4d57b8d77cb4183e940f6bb88a2aecb349605eb5180055565b610af0827f3d6b96d1c7d5b94a3af077c0baedb5f7745382ef440582d67ffa3542d73b9f0055565b604080516001600160a01b0386168152602081018590529081018390527f19860e06d33c97f7b92d0ca90b3f7c6c6b3eb1df1b5d43608ff4cad4decdfbdb9060600160405180910390a150505050565b5f80610b4a61188d565b5460ff1692915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b985750825b90505f826001600160401b03166001148015610bb35750303b155b905081158015610bc1575080155b15610bdf5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c0957845460ff60401b1916600160401b1785555b610c116118b1565b610c196118bd565b6001600160a01b038c16610c405760405163e6c4247b60e01b815260040160405180910390fd5b610c4a5f8d6115c1565b50610c598b8b8b8b8b8b6118c5565b8315610c9f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6060610762611bc5565b5f80516020612f30833981519152610cce81611396565b610ce3825f80516020612fb083398151915255565b6040518281527fc19208c7b372a1a149d13f98147779f9d299dc72a01c084f1d9e710fa1dd4b9890602001610810565b5f610762611c28565b7f356a809dfdea9198dd76fb76bf6d403ecf13ea675eb89e1eda2db2c4a4676a26610d4681611396565b6108d1611c4f565b5f80610d58611c95565b5f858152602082905260409020909150610d729084611cb9565b949350505050565b5f80610d84611576565b5f948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b5f610762611cc4565b5f80516020612f30833981519152610dce81611396565b6001600160a01b038216610df55760405163e6c4247b60e01b815260040160405180910390fd5b610dfe82611ceb565b7fd18ee8ea96015fad2ccf66538ae29cdefac46d706a08d42d049ed92f6985c706826040516108109190612506565b5f80610e37611c95565b5f848152602082905260409020909150610e5090611d12565b9392505050565b5f610e6181611396565b81515f03610e825760405163e6c4247b60e01b815260040160405180910390fd5b5f5b8251811015610ee0575f6001600160a01b0316838281518110610ea957610ea9612c71565b60200260200101516001600160a01b031603610ed85760405163e6c4247b60e01b815260040160405180910390fd5b600101610e84565b50610eea82611d1b565b7f59eee320eee4303341a63a831435961080edc1cd3c4e1767cb8999de4d3d5c6582604051610810919061297d565b5f610762611d45565b610f2b82610835565b610f3481611396565b6108788383611600565b5f80516020612f30833981519152610f5581611396565b815f03610f75576040516347e94c9b60e11b815260040160405180910390fd5b610f8a825f80516020612f5083398151915255565b6040518281527fa471beb63181ea5719aa1c0286853838ba7289453b6cca7ac76a269c2afab04790602001610810565b5f610762611d6c565b604080516101e0810182526060808252602082018190525f928201839052808201839052608082015260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c0810191909152611042611d93565b60405163e2fa01bb60e01b815273af445ff0cc4a3d2cbcb11ac3e5e04f6d143f8edd9063e2fa01bb9061107f908890889088908890600401612c85565b5f60405180830381865af4158015611099573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110c09190810190612d36565b95945050505050565b5f80516020612f308339815191526110e081611396565b6001600160a01b0382166111075760405163e6c4247b60e01b815260040160405180910390fd5b61111082611db9565b7f160c48b2c97e924e25ac6a1029ecc65ab46c5b8680adeb9b4bc972869e034e60826040516108109190612506565b5f80516020612f3083398151915261115681611396565b81516001600160a01b031661117e5760405163e6c4247b60e01b815260040160405180910390fd5b60208201516001600160a01b03166111a95760405163e6c4247b60e01b815260040160405180910390fd5b60408201516001600160a01b03166111d45760405163e6c4247b60e01b815260040160405180910390fd5b60608201516001600160a01b03166111ff5760405163e6c4247b60e01b815260040160405180910390fd5b60808201516001600160a01b031661122a5760405163e6c4247b60e01b815260040160405180910390fd5b60a08201516001600160a01b03166112555760405163e6c4247b60e01b815260040160405180910390fd5b60c08201516001600160a01b03166112805760405163e6c4247b60e01b815260040160405180910390fd5b61128d8260200151611de0565b815161129890611e07565b6112a58260400151611e2e565b6112b28260600151611e55565b6112bf8260800151611e7c565b6112cc8260a00151611ea3565b6112d98260c00151611eca565b7f72b8732f543e34dac99960d9d29f7227e5b8ee25c58f3babc2293921d2af0a92826040516108109190612580565b5f610762611ef1565b5f610762611f05565b5f5f80516020612fb08339815191525b54919050565b5f7fa0dc2f24541d4bbdc49c383a8746cd6256371b67d8afc882e3ce7e04f721df005b546001600160a01b0316919050565b5f6001600160e01b03198216637965db0b60e01b148061079457506301ffc9a760e01b6001600160e01b0319831614610794565b6108d18133611f2c565b807ff011e505a711b4f906e6e0cfcd988c477cb335d6eb81d8284628276cae32ab005b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7ff011e505a711b4f906e6e0cfcd988c477cb335d6eb81d8284628276cae32ab00611353565b61141361242c565b6040518060e001604052806114457fc4010ca65378f19e44b7504e0cbdfa0cf4c6c98dc078f9636d3e6f447548f80090565b546001600160a01b031681526020017fe03d6bb506e833b55bb7e35e66d871fd1486b3efc6bb02b49fae15b9d0247c00546001600160a01b031681526020017f721d35383ddb7c0788c39a71ec2b671094a2dff039cf875075cb2cc19150ee00546001600160a01b031681526020017fedd99766ca1e8c3d62993721acdaaf42a25e38027fea50866095b850992fdc00546001600160a01b031681526020017f876e1f4e6bf0084ef05fd36552de50d6a3381705e29281ddedec7e73a391a100546001600160a01b031681526020017f33ff6c98f150f6340aa139cf0a40783e1ff0404e5958622d928ebe5534456a00546001600160a01b031681526020017fd7a02eb1d0bb68108f76123da75aaeb1a46f41df9f533c7662e3a619ec932800546001600160a01b03169052919050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b5f7f8fc808da4bdddf1c57ae4d57b8d77cb4183e940f6bb88a2aecb349605eb5180061132a565b5f806115cb611c95565b90505f6115d88585611f65565b90508015610d72575f8581526020839052604090206115f7908561200a565b50949350505050565b5f8061160a611c95565b90505f611617858561201e565b90508015610d72575f8581526020839052604090206115f79085612094565b5f5f80516020612f5083398151915261132a565b6116526120a8565b5f61165b61188d565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516116959190612506565b60405180910390a150565b807fa0dc2f24541d4bbdc49c383a8746cd6256371b67d8afc882e3ce7e04f721df006113c3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172b6120cd565b6001600160a01b031614155b156117555760405163703e46dd60e11b815260040160405180910390fd5b565b5f6109e181611396565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117bb575060408051601f3d908101601f191682019092526117b891810190612ecf565b60015b6117e35781604051634c9c8ce360e01b81526004016117da9190612506565b60405180910390fd5b5f80516020612f70833981519152811461181357604051632a87526960e21b8152600481018290526024016117da565b6108b183836120e1565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117555760405163703e46dd60e11b815260040160405180910390fd5b807fe26401adf3cefb9a94bf1fba47a8129fd18fd2e2e83de494ce289a832073a5006113c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b6118b9612136565b6117555b611755612136565b855115611934575f5b865181101561192a575f6001600160a01b03168782815181106118f3576118f3612c71565b60200260200101516001600160a01b0316036119225760405163e6c4247b60e01b815260040160405180910390fd5b6001016118ce565b5061193486611d1b565b84516001600160a01b031661195c57604051635c7bfbe960e01b815260040160405180910390fd5b60208501516001600160a01b031661198757604051635c7bfbe960e01b815260040160405180910390fd5b60408501516001600160a01b03166119b257604051635c7bfbe960e01b815260040160405180910390fd5b60608501516001600160a01b03166119dd57604051635c7bfbe960e01b815260040160405180910390fd5b60808501516001600160a01b0316611a0857604051635c7bfbe960e01b815260040160405180910390fd5b60a08501516001600160a01b0316611a3357604051635c7bfbe960e01b815260040160405180910390fd5b60c08501516001600160a01b0316611a5e57604051635c7bfbe960e01b815260040160405180910390fd5b6001600160a01b038416611a855760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038316611aac5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216611ad35760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116611afa5760405163e6c4247b60e01b815260040160405180910390fd5b611b1060015f80516020612f5083398151915255565b611b2862093a805f80516020612fb083398151915255565b611b40620151805f80516020612f9083398151915255565b611b4d8560200151611de0565b8451611b5890611e07565b611b658560400151611e2e565b611b728560600151611e55565b611b7f8560800151611e7c565b611b8c8560a00151611ea3565b611b998560c00151611eca565b611ba284611db9565b611bab83611ceb565b611bb4826113a0565b611bbd816116a0565b505050505050565b6060611bcf61217f565b805460408051602080840282018101909252828152929190830182828015611c1e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611c00575b5050505050905090565b5f7f3d6b96d1c7d5b94a3af077c0baedb5f7745382ef440582d67ffa3542d73b9f0061132a565b611c57611d93565b5f611c6061188d565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116883390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b5f610e5083836121a3565b5f7f6fbe74bad032cccb3ef5e7d7be660790fda329f96cf9462b85accc6e1d7d4100611353565b807f6fbe74bad032cccb3ef5e7d7be660790fda329f96cf9462b85accc6e1d7d41006113c3565b5f610794825490565b611d2361217f565b611d2d905f612467565b80611d3661217f565b81516109e19260200190612482565b5f7fe26401adf3cefb9a94bf1fba47a8129fd18fd2e2e83de494ce289a832073a500611353565b5f7f184318af1b1e15812549d3991019d6e84064e321b012fca8ea3de5c3da16db00611353565b611d9b610b40565b156117555760405163d93c066560e01b815260040160405180910390fd5b807f184318af1b1e15812549d3991019d6e84064e321b012fca8ea3de5c3da16db006113c3565b807fe03d6bb506e833b55bb7e35e66d871fd1486b3efc6bb02b49fae15b9d0247c006113c3565b807fc4010ca65378f19e44b7504e0cbdfa0cf4c6c98dc078f9636d3e6f447548f8006113c3565b807f721d35383ddb7c0788c39a71ec2b671094a2dff039cf875075cb2cc19150ee006113c3565b807fedd99766ca1e8c3d62993721acdaaf42a25e38027fea50866095b850992fdc006113c3565b807f876e1f4e6bf0084ef05fd36552de50d6a3381705e29281ddedec7e73a391a1006113c3565b807f33ff6c98f150f6340aa139cf0a40783e1ff0404e5958622d928ebe5534456a006113c3565b807fd7a02eb1d0bb68108f76123da75aaeb1a46f41df9f533c7662e3a619ec9328006113c3565b5f5f80516020612f9083398151915261132a565b5f7f7c54bb33443ce94044aec2970018125c202903e78abecda9a8871f0a2e08540061132a565b611f368282610d7a565b6109e15760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016117da565b5f80611f6f611576565b9050611f7b8484610d7a565b611ffa575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611fb03390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610794565b5f915050610794565b5092915050565b5f610e50836001600160a01b0384166121c9565b5f80612028611576565b90506120348484610d7a565b15611ffa575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610794565b5f610e50836001600160a01b038416612215565b6120b0610b40565b61175557604051638dfc202b60e01b815260040160405180910390fd5b5f5f80516020612f70833981519152611353565b6120ea826122ef565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561212e576108b1828261232f565b6109e1612398565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661175557604051631afcd79f60e31b815260040160405180910390fd5b7f09e657bd0ea9e1ace5b99e5e8bb556174727dbd9076ea35b667e7736f158400090565b5f825f0182815481106121b8576121b8612c71565b905f5260205f200154905092915050565b5f81815260018301602052604081205461220e57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610794565b505f610794565b5f8181526001830160205260408120548015611ffa575f612237600183612ee6565b85549091505f9061224a90600190612ee6565b90508082146122a9575f865f01828154811061226857612268612c71565b905f5260205f200154905080875f01848154811061228857612288612c71565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806122ba576122ba612f05565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610794565b806001600160a01b03163b5f0361231b5780604051634c9c8ce360e01b81526004016117da9190612506565b805f80516020612f708339815191526113c3565b60605f80846001600160a01b03168460405161234b9190612f19565b5f60405180830381855af49150503d805f8114612383576040519150601f19603f3d011682016040523d82523d5f602084013e612388565b606091505b50915091506110c08583836123b7565b34156117555760405163b398979f60e01b815260040160405180910390fd5b6060826123cc576123c782612403565b610e50565b81511580156123e357506001600160a01b0384163b155b156120035783604051639996b31560e01b81526004016117da9190612506565b8051156124135780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b5080545f8255905f5260205f20908101906108d191906124e5565b828054828255905f5260205f209081019282156124d5579160200282015b828111156124d557825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906124a0565b506124e19291506124e5565b5090565b5b808211156124e1575f81556001016124e6565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b5f6020828403121561252a575f80fd5b81356001600160e01b031981168114610e50575f80fd5b6001600160a01b03811681146108d1575f80fd5b803561256081612541565b919050565b5f60208284031215612575575f80fd5b8135610e5081612541565b81516001600160a01b0390811682526020808401518216908301526040808401518216908301526060808401518216908301526080808401519091169082015260a08281015160e08301916125d7908401826124f9565b5060c083015161200360c08401826124f9565b5f602082840312156125fa575f80fd5b5035919050565b5f8060408385031215612612575f80fd5b82359150602083013561262481612541565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156126655761266561262f565b60405290565b6040516101e081016001600160401b03811182821017156126655761266561262f565b604051601f8201601f191681016001600160401b03811182821017156126b6576126b661262f565b604052919050565b5f6001600160401b038211156126d6576126d661262f565b50601f01601f191660200190565b5f6126f66126f1846126be565b61268e565b9050828152838383011115612709575f80fd5b828260208301375f602084830101529392505050565b5f8060408385031215612730575f80fd5b823561273b81612541565b915060208301356001600160401b03811115612755575f80fd5b8301601f81018513612765575f80fd5b612774858235602084016126e4565b9150509250929050565b5f805f60608486031215612790575f80fd5b833561279b81612541565b95602085013595506040909401359392505050565b5f82601f8301126127bf575f80fd5b81356001600160401b038111156127d8576127d861262f565b8060051b6127e86020820161268e565b91825260208185018101929081019086841115612803575f80fd5b6020860192505b8383101561282e57823561281d81612541565b82526020928301929091019061280a565b9695505050505050565b5f60e08284031215612848575f80fd5b612850612643565b9050813561285d81612541565b8152602082013561286d81612541565b6020820152604082013561288081612541565b6040820152606082013561289381612541565b60608201526128a460808301612555565b60808201526128b560a08301612555565b60a08201526128c660c08301612555565b60c082015292915050565b5f805f805f805f6101a0888a0312156128e8575f80fd5b87356128f381612541565b965060208801356001600160401b0381111561290d575f80fd5b6129198a828b016127b0565b9650506129298960408a01612838565b945061012088013561293a81612541565b935061014088013561294b81612541565b925061016088013561295c81612541565b915061018088013561296d81612541565b8091505092959891949750929550565b602080825282518282018190525f918401906040840190835b818110156129bd5783516001600160a01b0316835260209384019390920191600101612996565b509095945050505050565b5f80604083850312156129d9575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e5060208301846129e8565b5f60208284031215612a38575f80fd5b81356001600160401b03811115612a4d575f80fd5b610d72848285016127b0565b5f82601f830112612a68575f80fd5b610e50838335602085016126e4565b5f805f8060808587031215612a8a575f80fd5b84356001600160401b03811115612a9f575f80fd5b612aab87828801612a59565b94505060208501356001600160401b03811115612ac6575f80fd5b612ad287828801612a59565b9350506040850135612ae381612541565b91506060850135612af381612541565b939692955090935050565b602081525f82516101e06020840152612b1b6102008401826129e8565b90506020840151601f19848303016040850152612b3882826129e8565b9150506040840151612b4f606085018260ff169052565b506060840151612b6260808501826124f9565b506080840151838203601f190160a0850152612b7e82826129e8565b91505060a0840151612b9560c085018260ff169052565b5060c0840151612ba860e08501826124f9565b5060e0840151612bbc6101008501826124f9565b50610100840151612bd16101208501826124f9565b50610120840151612be66101408501826124f9565b50610140840151612bfb6101608501826124f9565b50610160840151612c106101808501826124f9565b50610180840151612c256101a08501826124f9565b506101a0840151612c3a6101c08501826124f9565b506101c0840151612c4f6101e08501826124f9565b509392505050565b5f60e08284031215612c67575f80fd5b610e508383612838565b634e487b7160e01b5f52603260045260245ffd5b608081525f612c9760808301876129e8565b8281036020840152612ca981876129e8565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b5f82601f830112612cdd575f80fd5b8151612ceb6126f1826126be565b818152846020838601011115612cff575f80fd5b8160208501602083015e5f918101602001919091529392505050565b805160ff81168114612560575f80fd5b805161256081612541565b5f60208284031215612d46575f80fd5b81516001600160401b03811115612d5b575f80fd5b82016101e08185031215612d6d575f80fd5b612d7561266b565b81516001600160401b03811115612d8a575f80fd5b612d9686828501612cce565b82525060208201516001600160401b03811115612db1575f80fd5b612dbd86828501612cce565b602083015250612dcf60408301612d1b565b6040820152612de060608301612d2b565b606082015260808201516001600160401b03811115612dfd575f80fd5b612e0986828501612cce565b608083015250612e1b60a08301612d1b565b60a0820152612e2c60c08301612d2b565b60c0820152612e3d60e08301612d2b565b60e0820152612e4f6101008301612d2b565b610100820152612e626101208301612d2b565b610120820152612e756101408301612d2b565b610140820152612e886101608301612d2b565b610160820152612e9b6101808301612d2b565b610180820152612eae6101a08301612d2b565b6101a0820152612ec16101c08301612d2b565b6101c0820152949350505050565b5f60208284031215612edf575f80fd5b5051919050565b8181038181111561079457634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f82518060208501845e5f92019182525091905056fec92702f3c63b30841ab26169cbd31cea991bdf14238d5ef7a0d75d105d494d30f5f7bf2a3be534f496ee2079085992e191fe987b91953e0e010e320f6bf8e100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc95f9ecba121b4f2a2786b729864c46a5066694903a7462f772cd92093beb0500e7de166eee522f429c14923fb385ff49d6c65d576ad910fc76c16800f269be00a26469706673582212206dd6d35967690e592f8e083964110907c42e4a3b6d1398e47281b379f2b18b0964736f6c634300081a0033