0 txs
51 calls
constructor
constructor(address registry, address oracle, address aggregatorAccessController, address registryAccessController)
functions
AGG_ACCESS_CONTROLLER
viewfunction AGG_ACCESS_CONTROLLER() view returns (address)
ORACLE
viewfunction ORACLE() view returns (address)
owner
viewfunction owner() view returns (address)
REGISTRY_ACCESS_CONTROLLER
viewfunction REGISTRY_ACCESS_CONTROLLER() view returns (address)
REGISTRY
viewfunction REGISTRY() view returns (address)
acceptAllOwnerships
nonpayablefunction acceptAllOwnerships()
acceptOwnership
nonpayablefunction acceptOwnership()
addGlobalReadAccessToRegistry
nonpayablefunction addGlobalReadAccessToRegistry(address user)
addNewTradingPair
nonpayablefunction addNewTradingPair(string pair_, string baseAsString_, string quoteAsString_, address base_, address quote_, uint8 decimals_, string description_, bool storeHistoricalData_)
addPairOpenAccessToRegistry
nonpayablefunction addPairOpenAccessToRegistry(address base, address quote)
addPairReadAccessToRegistry
nonpayablefunction addPairReadAccessToRegistry(address user, address base, address quote)
addReadAccessToAggregator
nonpayablefunction addReadAccessToAggregator(address user)
addWriteAccessToAggregator
nonpayablefunction addWriteAccessToAggregator(address user)
giveSignatureAccessToOracle
nonpayablefunction giveSignatureAccessToOracle(address user)
giveWriteAccessToOracle
nonpayablefunction giveWriteAccessToOracle(address user)
removeGlobalReadAccessToRegistry
nonpayablefunction removeGlobalReadAccessToRegistry(address user)
removePairOpenAccessToRegistry
nonpayablefunction removePairOpenAccessToRegistry(address base, address quote)
removePairReadAccessToRegistry
nonpayablefunction removePairReadAccessToRegistry(address user, address base, address quote)
removeReadAccessToAggregator
nonpayablefunction removeReadAccessToAggregator(address user)
removeSignatureAccessToOracle
nonpayablefunction removeSignatureAccessToOracle(address user)
removeWriteAccessToAggregator
nonpayablefunction removeWriteAccessToAggregator(address user)
removeWriteAccessToOracle
nonpayablefunction removeWriteAccessToOracle(address user)
setUpBasicAccessControl
nonpayablefunction setUpBasicAccessControl()
transferOwnership
nonpayablefunction transferOwnership(address to)
transferOwnershipToNewOracleFactory
nonpayablefunction transferOwnershipToNewOracleFactory(address newOracleFactoryAddress)
events
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
errors
No errors.
creation bytecode
0x6101006040523480156200001257600080fd5b50604051620063733803806200637383398101604081905262000035916200025d565b33806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620001b1565b5050506001600160a01b03841615801590620000e357506001600160a01b03831615155b8015620000f857506001600160a01b03821615155b80156200010d57506001600160a01b03811615155b620001815760405162461bcd60e51b815260206004820152603360248201527f4d7573742070726f766964652070726f70657220616464726573736573206f6660448201527f206465706c6f79656420636f6e74726163747300000000000000000000000000606482015260840162000083565b6001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e052620002dd565b6001600160a01b0381163314156200020c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000806000806080858703121562000273578384fd5b84516200028081620002c4565b60208601519094506200029381620002c4565b6040860151909350620002a681620002c4565b6060860151909250620002b981620002c4565b939692955090935050565b6001600160a01b0381168114620002da57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c615f1c6200045760003960008181610307015281816107af01528181610a5901528181610b9801528181610c0501528181610da701528181610fc10152818161117c015281816113d70152818161160e015281816117e401528181611d450152611dca0152600081816103c801528181610554015281816106fd01528181610912015281816109ad01528181610b1201528181611036015281816113250152818161168b015281816116fa01528181611cc80152611e730152600081816102830152818161049c0152818161059a015281816108ea01528181610c8b01528181610d1101528181610f4c015281816110e6015281816111c20152818161159101526118920152600081816101d70152818161064b0152818161098501528181610ed7015281816112730152818161151601528181611945015281816119eb01528181611a4f01528181611adf01528181611ba20152611c400152615f1c6000f3fe60806040523480156200001157600080fd5b5060043610620001cc5760003560e01c80637000cd211162000105578063c063691511620000a5578063f2fde38b116200007b578063f2fde38b14620003ea578063f49195861462000401578063f4c47eac1462000418578063fe6e0577146200042f57620001cc565b8063c06369151462000394578063ca55642714620003ab578063cbc6011814620003c257620001cc565b80638da5cb5b11620000db5780638da5cb5b14620003545780639a7bdfbd1462000366578063a5f80998146200037d57620001cc565b80637000cd21146200032957806379ba50971462000340578063882ff194146200034a57620001cc565b806338013f0211620001715780636901e9ad11620001475780636901e9ad14620002d35780636b92be6b14620002ea5780636d0fcd56146200030157620001cc565b806338013f02146200027d57806343a8ff6214620002a55780636220bdaf14620002bc57620001cc565b80631d1d1ffc11620001a75780631d1d1ffc146200024557806325c11740146200024f5780632e01d2f9146200026657620001cc565b806306433b1b14620001d157806309a1f479146200021557806314c58ade146200022e575b600080fd5b620001f97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6200022c6200022636600462002096565b62000446565b005b6200022c6200023f36600462002096565b620004fe565b6200022c62000584565b6200022c62000260366004620020db565b62000a0f565b6200022c6200027736600462002096565b62000abc565b620001f97f000000000000000000000000000000000000000000000000000000000000000081565b6200022c620002b636600462002096565b62000b42565b6200022c620002cd36600462002096565b62000bc8565b6200022c620002e436600462002096565b62000c35565b6200022c620002fb36600462002096565b62000cbb565b620001f97f000000000000000000000000000000000000000000000000000000000000000081565b6200022c6200033a36600462002118565b62000d41565b6200022c62000e0b565b6200022c62000ecb565b6000546001600160a01b0316620001f9565b6200022c6200037736600462002096565b62001090565b6200022c6200038e36600462002118565b62001116565b6200022c620003a536600462002096565b620011ac565b6200022c620003bc36600462002096565b620016bd565b620001f97f000000000000000000000000000000000000000000000000000000000000000081565b6200022c620003fb36600462002096565b6200172a565b6200022c62000412366004620020db565b6200179a565b6200022c6200042936600462002188565b62001814565b6200022c6200044036600462002096565b62001e36565b6200045062001ea3565b6001600160a01b0381166200046457600080fd5b6040517f8823da6c0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638823da6c906024015b600060405180830381600087803b158015620004e257600080fd5b505af1158015620004f7573d6000803e3d6000fd5b5050505050565b6200050862001ea3565b6001600160a01b0381166200051c57600080fd5b6040517f7aa807400000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690637aa8074090602401620004c7565b6200058e62001ea3565b306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620005f257600080fd5b505afa15801562000607573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062d9190620020bc565b6001600160a01b0316148015620006e95750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620006a357600080fd5b505afa158015620006b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006de9190620020bc565b6001600160a01b0316145b80156200079b5750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200075557600080fd5b505afa1580156200076a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007909190620020bc565b6001600160a01b0316145b80156200084d5750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200080757600080fd5b505afa1580156200081c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008429190620020bc565b6001600160a01b0316145b620008d35760405162461bcd60e51b815260206004820152604560248201527f4f7261636c6520666163746f7279206973206e6f74207468652063757272656e60448201527f74206f776e6572206f6620616c6c20746865206465706c6f79656420636f6e74606482015264726163747360d81b608482015260a4015b60405180910390fd5b604051630f8a748b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633e29d22c90602401600060405180830381600087803b1580156200095757600080fd5b505af11580156200096c573d6000803e3d6000fd5b5050604051630f3689af60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001692506379b44d789150602401600060405180830381600087803b158015620009f457600080fd5b505af115801562000a09573d6000803e3d6000fd5b50505050565b62000a1962001ea3565b6040517fff5167150000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063ff516715906044015b600060405180830381600087803b15801562000a9f57600080fd5b505af115801562000ab4573d6000803e3d6000fd5b505050505050565b62000ac662001ea3565b6001600160a01b03811662000ada57600080fd5b6040517f666ac06d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063666ac06d90602401620004c7565b62000b4c62001ea3565b6001600160a01b03811662000b6057600080fd5b6040517f87874e310000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000016906387874e3190602401620004c7565b62000bd262001ea3565b6001600160a01b03811662000be657600080fd5b6040516305ef99e960e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630bdf33d290602401620004c7565b62000c3f62001ea3565b6001600160a01b03811662000c5357600080fd5b6040517f0e316ab70000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630e316ab790602401620004c7565b62000cc562001ea3565b6001600160a01b03811662000cd957600080fd5b6040517feb12d61e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063eb12d61e90602401620004c7565b62000d4b62001ea3565b6001600160a01b03831662000d5f57600080fd5b6040517f43929dd50000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152838116602483015282811660448301527f000000000000000000000000000000000000000000000000000000000000000016906343929dd5906064015b600060405180830381600087803b15801562000ded57600080fd5b505af115801562000e02573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b0316331462000e675760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401620008ca565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b62000ed562001ea3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000f3157600080fd5b505af115801562000f46573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fa657600080fd5b505af115801562000fbb573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200101b57600080fd5b505af115801562001030573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620009f457600080fd5b6200109a62001ea3565b6001600160a01b038116620010ae57600080fd5b6040517fa118f2490000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a118f24990602401620004c7565b6200112062001ea3565b6001600160a01b0383166200113457600080fd5b6040517f754e645b0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152838116602483015282811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063754e645b9060640162000dd2565b620011b662001ea3565b306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200121a57600080fd5b505afa1580156200122f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012559190620020bc565b6001600160a01b0316148015620013115750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620012cb57600080fd5b505afa158015620012e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013069190620020bc565b6001600160a01b0316145b8015620013c35750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200137d57600080fd5b505afa15801562001392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b89190620020bc565b6001600160a01b0316145b8015620014755750306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200142f57600080fd5b505afa15801562001444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146a9190620020bc565b6001600160a01b0316145b620014f75760405162461bcd60e51b815260206004820152604560248201527f4f7261636c6520666163746f7279206973206e6f74207468652063757272656e60448201527f74206f776e6572206f6620616c6c20746865206465706c6f79656420636f6e74606482015264726163747360d81b608482015260a401620008ca565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b90602401600060405180830381600087803b1580156200155b57600080fd5b505af115801562001570573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150602401600060405180830381600087803b158015620015d857600080fd5b505af1158015620015ed573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150602401600060405180830381600087803b1580156200165557600080fd5b505af11580156200166a573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150602401620004c7565b620016c762001ea3565b6001600160a01b038116620016db57600080fd5b604051630f8a748b60e21b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633e29d22c90602401620004c7565b6200173462001ea3565b6001600160a01b0381166200178c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401620008ca565b620017978162001f01565b50565b620017a462001ea3565b6040517f7655e1250000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282811660248301527f00000000000000000000000000000000000000000000000000000000000000001690637655e1259060440162000a84565b6200181e62001ea3565b600088848484604051620018329062001fba565b620018419493929190620023c9565b604051809103906000f0801580156200185e573d6000803e3d6000fd5b506040517f7ff45e6f0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637ff45e6f90620018cb908c90859060040162002316565b600060405180830381600087803b158015620018e657600080fd5b505af1158015620018fb573d6000803e3d6000fd5b50506040517f9eed82b00000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015284811660448301527f0000000000000000000000000000000000000000000000000000000000000000169250639eed82b09150606401600060405180830381600087803b1580156200198c57600080fd5b505af1158015620019a1573d6000803e3d6000fd5b50506040517f045abf4b0000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015284811660448301527f000000000000000000000000000000000000000000000000000000000000000016925063045abf4b9150606401600060405180830381600087803b15801562001a3257600080fd5b505af115801562001a47573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000087878c60405162001a7f9062001fc8565b62001a8e9493929190620022d6565b604051809103906000f08015801562001aab573d6000803e3d6000fd5b506040517f2656554c0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632656554c9062001b18908c908c9060040162002343565b60206040518083038186803b15801562001b3157600080fd5b505afa15801562001b46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b6c919062002169565b1562001c10576040517fff2ed6e00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff2ed6e09062001bdb908c908c9060040162002343565b600060405180830381600087803b15801562001bf657600080fd5b505af115801562001c0b573d6000803e3d6000fd5b505050505b6040517f573a23af0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573a23af9062001c7f908c908c908c908c90889060040162002375565b600060405180830381600087803b15801562001c9a57600080fd5b505af115801562001caf573d6000803e3d6000fd5b5050604051631e10723b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528516925063f08391d89150602401600060405180830381600087803b15801562001d1757600080fd5b505af115801562001d2c573d6000803e3d6000fd5b5050604051631e10723b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528416925063f08391d89150602401600060405180830381600087803b15801562001d9457600080fd5b505af115801562001da9573d6000803e3d6000fd5b50506040516305ef99e960e11b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169250630bdf33d29150602401600060405180830381600087803b15801562001e1157600080fd5b505af115801562001e26573d6000803e3d6000fd5b5050505050505050505050505050565b62001e4062001ea3565b6001600160a01b03811662001e5457600080fd5b604051630f3689af60e31b81526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000016906379b44d7890602401620004c7565b6000546001600160a01b0316331462001eff5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401620008ca565b565b6001600160a01b03811633141562001f5c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620008ca565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b611a56806200246483390190565b61202d8062003eba83390190565b803562001fe3816200243e565b919050565b803562001fe38162002454565b600082601f83011262002006578081fd5b813567ffffffffffffffff808211156200202457620020246200240f565b604051601f8301601f19908116603f011681019082821181831017156200204f576200204f6200240f565b8160405283815286602085880101111562002068578485fd5b8360208701602083013792830160200193909352509392505050565b803560ff8116811462001fe357600080fd5b600060208284031215620020a8578081fd5b8135620020b5816200243e565b9392505050565b600060208284031215620020ce578081fd5b8151620020b5816200243e565b60008060408385031215620020ee578081fd5b8235620020fb816200243e565b915060208301356200210d816200243e565b809150509250929050565b6000806000606084860312156200212d578081fd5b83356200213a816200243e565b925060208401356200214c816200243e565b915060408401356200215e816200243e565b809150509250925092565b6000602082840312156200217b578081fd5b8151620020b58162002454565b600080600080600080600080610100898b031215620021a5578384fd5b883567ffffffffffffffff80821115620021bd578586fd5b620021cb8c838d0162001ff5565b995060208b0135915080821115620021e1578586fd5b620021ef8c838d0162001ff5565b985060408b013591508082111562002205578586fd5b620022138c838d0162001ff5565b97506200222360608c0162001fd6565b96506200223360808c0162001fd6565b95506200224360a08c0162002084565b945060c08b013591508082111562002259578384fd5b50620022688b828c0162001ff5565b9250506200227960e08a0162001fe8565b90509295985092959890939650565b60008151808452815b81811015620022af5760208185018101518683018201520162002291565b81811115620022c15782602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b0380871683528086166020840152808516604084015250608060608301526200230c608083018462002288565b9695505050505050565b6000604082526200232b604083018562002288565b90506001600160a01b03831660208301529392505050565b60006040825262002358604083018562002288565b82810360208401526200236c818562002288565b95945050505050565b600060a082526200238a60a083018862002288565b82810360208401526200239e818862002288565b6001600160a01b03968716604085015294861660608401525050921660809092019190915292915050565b600060808252620023de608083018762002288565b60ff861660208401528281036040840152620023fb818662002288565b915050821515606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146200179757600080fd5b80151581146200179757600080fdfe60c06040523480156200001157600080fd5b5060405162001a5638038062001a5683398101604081905262000034916200032e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be8162000129565b50508451620000d691506003906020870190620001d5565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b16608052815162000116906004906020850190620001d5565b50151560f81b60a0525062000419915050565b6001600160a01b038116331415620001845760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b828054620001e390620003c6565b90600052602060002090601f01602090048101928262000207576000855562000252565b82601f106200022257805160ff191683800117855562000252565b8280016001018555821562000252579182015b828111156200025257825182559160200191906001019062000235565b506200026092915062000264565b5090565b5b8082111562000260576000815560010162000265565b600082601f8301126200028c578081fd5b81516001600160401b0380821115620002a957620002a962000403565b604051601f8301601f19908116603f01168101908282118183101715620002d457620002d462000403565b81604052838152602092508683858801011115620002f0578485fd5b8491505b83821015620003135785820183015181830184015290820190620002f4565b838211156200032457848385830101525b9695505050505050565b6000806000806080858703121562000344578384fd5b84516001600160401b03808211156200035b578586fd5b62000369888389016200027b565b95506020870151915060ff8216821462000381578485fd5b60408701519194508082111562000396578384fd5b50620003a5878288016200027b565b92505060608501518015158114620003bb578182fd5b939692955090935050565b600281046001821680620003db57607f821691505b60208210811415620003fd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160f81c6115f5620004616000396000818161014001528181610a6201528181610b9901528181610d810152610f07015260006101a101526115f56000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638d1efdad116100b2578063b633620c11610081578063f08391d811610066578063f08391d8146102be578063f2fde38b146102d1578063feaf968c146102e457610136565b8063b633620c146102a3578063c1f1b1b5146102b657610136565b80638d1efdad146102225780638da5cb5b146102355780639a6fc8f514610246578063b5ab58dc1461029057610136565b806354fd4d50116101095780637284e416116100ee5780637284e416146101fb57806379ba5097146102105780638205bf6a1461021a57610136565b806354fd4d50146101eb578063668a0f02146101f357610136565b8063076bb94a1461013b57806316d6b5f614610177578063313ce5671461019c57806350d25bcd146101d5575b600080fd5b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020015b60405180910390f35b6002546001600160a01b03165b6040516001600160a01b03909116815260200161016e565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016e565b6101dd6102ec565b60405190815260200161016e565b6101dd600681565b6101dd6103ee565b6102036104cf565b60405161016e9190611491565b610218610561565b005b6101dd61061f565b61021861023036600461141d565b610722565b6000546001600160a01b0316610184565b610259610254366004611467565b610ac1565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a00161016e565b6101dd61029e366004611405565b610cb1565b6101dd6102b1366004611405565b610e37565b610203610fbf565b6102186102cc3660046113c2565b610fce565b6102186102df3660046113c2565b61108e565b6102596110f8565b6002546000906001600160a01b0316158061037d5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561034557600080fd5b505afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d91906113e5565b6103bf5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064015b60405180910390fd5b600560006103cb61127c565b63ffffffff168152602081019190915260400160002054601790810b900b905090565b6002546000906001600160a01b0316158061047f5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f91906113e5565b6104bc5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b6104c461127c565b63ffffffff16905090565b6060600480546104de90611535565b80601f016020809104026020016040519081016040528092919081815260200182805461050a90611535565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b5050505050905090565b6001546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016103b6565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6002546000906001600160a01b031615806106b05750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561067857600080fd5b505afa15801561068c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b091906113e5565b6106ed5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b600560006106f961127c565b63ffffffff16815260208101919091526040016000206001015467ffffffffffffffff16905090565b6002546001600160a01b031615806107c957506002546040517ff7c1ec9f0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063f7c1ec9f9060240160206040518083038186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c991906113e5565b6108155760405162461bcd60e51b815260206004820152600f60248201527f4e6f20777269746520616363657373000000000000000000000000000000000060448201526064016103b6565b60006005600061082361127c565b63ffffffff168152602080820192909252604090810160002081516060810183528154601781810b810b900b825267ffffffffffffffff600160c01b90910481169482018590526001909201548216928101929092529092508416116109175760405162461bcd60e51b815260206004820152604160248201527f41676772656761746f723a2052656365697665642074696d65207374616d702060448201527f6c657373207468616e2070726576696f7573207265636f726465642076616c7560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016103b6565b61092383610e106114e4565b67ffffffffffffffff1642106109a15760405162461bcd60e51b815260206004820152603a60248201527f41676772656761746f723a2055706461746520746f6f6b206c6f6e676572207460448201527f68616e20616e20686f75722c2068656e6365206578706972656400000000000060648201526084016103b6565b60408051606081018252601784810b825267ffffffffffffffff808716602080850191825263ffffffff428116868801908152600654909116600090815260059092529590209351845491518316600160c01b02930b77ffffffffffffffffffffffffffffffffffffffffffffffff9081167fffffffffffffffff0000000000000000000000000000000000000000000000009092169190911716919091178255915160019190910180549190921667ffffffffffffffff199091161790557f000000000000000000000000000000000000000000000000000000000000000015610abc576006805463ffffffff16906000610a9c83611570565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b505050565b60025460009081908190819081906001600160a01b03161580610b5a5750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610b2257600080fd5b505afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a91906113e5565b610b975760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610c175760405162461bcd60e51b815260206004820152602a60248201527f41676772656761746f7220646f6573206e6f74207265636f726420686973746f604482015269726963616c206461746160b01b60648201526084016103b6565b63ffffffff69ffffffffffffffffffff87161115610c4357506000935083925082915081905080610ca8565b50505063ffffffff831660009081526005602090815260409182902082516060810184528154601781810b810b810b80845267ffffffffffffffff600160c01b909304831695840186905260019094015490911691909401819052869550920b925090835b91939590929450565b6002546000906001600160a01b03161580610d425750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610d0a57600080fd5b505afa158015610d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4291906113e5565b610d7f5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610dff5760405162461bcd60e51b815260206004820152602a60248201527f41676772656761746f7220646f6573206e6f74207265636f726420686973746f604482015269726963616c206461746160b01b60648201526084016103b6565b63ffffffff821115610e1357506000610e32565b5063ffffffff8116600090815260056020526040902054601790810b900b5b919050565b6002546000906001600160a01b03161580610ec85750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec891906113e5565b610f055760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b7f0000000000000000000000000000000000000000000000000000000000000000610f855760405162461bcd60e51b815260206004820152602a60248201527f41676772656761746f7220646f6573206e6f74207265636f726420686973746f604482015269726963616c206461746160b01b60648201526084016103b6565b63ffffffff821115610f9957506000610e32565b5063ffffffff1660009081526005602052604090206001015467ffffffffffffffff1690565b6060600380546104de90611535565b610fd66112af565b6002546001600160a01b03828116911614156110345760405162461bcd60e51b815260206004820181905260248201527f41636365737320636f6e74726f6c6c657220697320616c72656164792073657460448201526064016103b6565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040513391907f953e92b1a6442e9c3242531154a3f6f6eb00b4e9c719ba8118fa6235e4ce89b690600090a350565b6110966112af565b6001600160a01b0381166110ec5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064016103b6565b6110f58161130b565b50565b60025460009081908190819081906001600160a01b031615806111915750600254604051636756ac1160e01b81523360048201526001600160a01b0390911690636756ac119060240160206040518083038186803b15801561115957600080fd5b505afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119191906113e5565b6111ce5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064016103b6565b6000600560006111dc61127c565b63ffffffff168152602080820192909252604090810160002081516060810183528154601781810b810b900b825267ffffffffffffffff600160c01b90910481169482019490945260019091015490921690820152905061123b61127c565b81516020830151604084015161124f61127c565b63ffffffff9485169b60179490940b9a5067ffffffffffffffff9283169950911696509091169350915050565b60065460009063ffffffff16156112a7576006546112a29060019063ffffffff16611510565b6112aa565b60005b905090565b6000546001600160a01b031633146113095760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016103b6565b565b6001600160a01b0381163314156113645760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016103b6565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156113d3578081fd5b81356113de816115aa565b9392505050565b6000602082840312156113f6578081fd5b815180151581146113de578182fd5b600060208284031215611416578081fd5b5035919050565b6000806040838503121561142f578081fd5b823567ffffffffffffffff81168114611446578182fd5b91506020830135601781900b811461145c578182fd5b809150509250929050565b600060208284031215611478578081fd5b813569ffffffffffffffffffff811681146113de578182fd5b6000602080835283518082850152825b818110156114bd578581018301518582016040015282016114a1565b818111156114ce5783604083870101525b50601f01601f1916929092016040019392505050565b600067ffffffffffffffff80831681851680830382111561150757611507611594565b01949350505050565b600063ffffffff8381169083168181101561152d5761152d611594565b039392505050565b60028104600182168061154957607f821691505b6020821081141561156a57634e487b7160e01b600052602260045260246000fd5b50919050565b600063ffffffff8083168181141561158a5761158a611594565b6001019392505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146110f557600080fdfea264697066735822122062318520e9e12d99c54e54db95ea4fece9ad5296ad0c43c24827a4194b6ceb9764736f6c6343000802003360e06040523480156200001157600080fd5b506040516200202d3803806200202d833981016040819052620000349162000343565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620001f1565b5050506001600160a01b03831615801590620000e257506001600160a01b03821615155b620000ec57600080fd5b600480546001600160a01b0386166001600160a01b03199091161790556001600160601b0319606084811b821660805283901b1660a0528051620001389060039060208401906200029d565b50604051630b1c5a7560e31b81526001600160a01b03848116600483015283811660248301528516906358e2d3a89060440160206040518083038186803b1580156200018357600080fd5b505afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be91906200045b565b60f81b7fff000000000000000000000000000000000000000000000000000000000000001660c05250620004f192505050565b6001600160a01b0381163314156200024c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b828054620002ab9062000485565b90600052602060002090601f016020900481019282620002cf57600085556200031a565b82601f10620002ea57805160ff19168380011785556200031a565b828001600101855582156200031a579182015b828111156200031a578251825591602001919060010190620002fd565b50620003289291506200032c565b5090565b5b808211156200032857600081556001016200032d565b6000806000806080858703121562000359578384fd5b84516200036681620004d8565b809450506020808601516200037b81620004d8565b60408701519094506200038e81620004d8565b60608701519093506001600160401b0380821115620003ab578384fd5b818801915088601f830112620003bf578384fd5b815181811115620003d457620003d4620004c2565b604051601f8201601f19908116603f01168101908382118183101715620003ff57620003ff620004c2565b816040528281528b8684870101111562000417578687fd5b8693505b828410156200043a57848401860151818501870152928501926200041b565b828411156200044b57868684830101525b989b979a50959850505050505050565b6000602082840312156200046d578081fd5b815160ff811681146200047e578182fd5b9392505050565b6002810460018216806200049a57607f821691505b60208210811415620004bc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620004ee57600080fd5b50565b60805160601c60a05160601c60c05160f81c611a31620005fc600039600061014f015260008181610230015281816103ac015281816104cf0152818161063601528181610754015281816107e901528181610a1001528181610b2e01528181610c4c01528181610d6a01528181610eef0152818161100d0152818161117c0152818161129a015281816114e9015261160701526000818161027d01528181610384015281816104a50152818161060e0152818161072a015281816107bf015281816109e801528181610b0401528181610c2401528181610d4001528181610ec701528181610fe30152818161115401528181611270015281816114c101526115dd0152611a316000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063b633620c11610081578063f08391d811610066578063f08391d81461029f578063f2fde38b146102b2578063feaf968c146102c55761011b565b8063b633620c14610265578063ec342ad0146102785761011b565b80638da5cb5b146101d05780639a6fc8f5146101e15780639c5798391461022b578063b5ab58dc146102525761011b565b8063668a0f02116100ee578063668a0f02146101a15780637284e416146101a957806379ba5097146101be5780638205bf6a146101c85761011b565b806316d6b5f614610120578063313ce5671461014a57806350d25bcd1461018357806354fd4d5014610199575b600080fd5b6002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6101717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610141565b61018b6102cd565b604051908152602001610141565b61018b600681565b61018b610557565b6101b161078b565b604051610141919061193c565b6101c6610873565b005b61018b610931565b6000546001600160a01b031661012d565b6101f46101ef3660046118c9565b610b65565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610141565b61012d7f000000000000000000000000000000000000000000000000000000000000000081565b61018b6102603660046118b1565b610e10565b61018b6102733660046118b1565b61109d565b61012d7f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102ad3660046117ad565b6112d8565b6101c66102c03660046117ad565b611398565b6101f4611402565b6002546000906001600160a01b0316158061035e57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561032657600080fd5b505afa15801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e91906117d0565b8061042f5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b1580156103f757600080fd5b505afa15801561040b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042f91906117d0565b6104715760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b60448201526064015b60405180910390fd5b600480546040517fd4c282a30000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f00000000000000000000000000000000000000000000000000000000000000008316602482015291169063d4c282a3906044015b60206040518083038186803b15801561051a57600080fd5b505afa15801561052e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055291906117f0565b905090565b6002546000906001600160a01b031615806105e857506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b1580156105b057600080fd5b505afa1580156105c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e891906117d0565b806106b95750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b991906117d0565b6106f65760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517fec62f44b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f00000000000000000000000000000000000000000000000000000000000000008316602482015291169063ec62f44b90604401610502565b600480546040517ffa820de90000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f0000000000000000000000000000000000000000000000000000000000000000831660248201526060929091169063fa820de99060440160006040518083038186803b15801561083757600080fd5b505afa15801561084b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105529190810190611808565b6001546001600160a01b031633146108cd5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610468565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6002546000906001600160a01b031615806109c257506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561098a57600080fd5b505afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c291906117d0565b80610a935750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610a5b57600080fd5b505afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9391906117d0565b610ad05760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517f672ff44f0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f00000000000000000000000000000000000000000000000000000000000000008316602482015291169063672ff44f90604401610502565b60025460009081908190819081906001600160a01b03161580610bfe57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015610bc657600080fd5b505afa158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe91906117d0565b80610ccf5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610c9757600080fd5b505afa158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf91906117d0565b610d0c5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517ffc58749e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f00000000000000000000000000000000000000000000000000000000000000008316602482015269ffffffffffffffffffff8916604482015291169063fc58749e9060640160a06040518083038186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe91906118e5565b939a9299509097509550909350915050565b6002546000906001600160a01b03161580610ea157506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015610e6957600080fd5b505afa158015610e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea191906117d0565b80610f725750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b158015610f3a57600080fd5b505afa158015610f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7291906117d0565b610faf5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517f15cd4ad20000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f000000000000000000000000000000000000000000000000000000000000000083166024820152604481018590529116906315cd4ad2906064015b60206040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109791906117f0565b92915050565b6002546000906001600160a01b0316158061112e57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906117d0565b806111ff5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b1580156111c757600080fd5b505afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff91906117d0565b61123c5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517f91624c950000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f000000000000000000000000000000000000000000000000000000000000000083166024820152604481018590529116906391624c9590606401611047565b6112e061169a565b6002546001600160a01b038281169116141561133e5760405162461bcd60e51b815260206004820181905260248201527f41636365737320636f6e74726f6c6c657220697320616c7265616479207365746044820152606401610468565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040513391907fcfa989179aa1c36c00d3edadf67bcb4f35d9516f4951d34f527ed93957adfbeb90600090a350565b6113a061169a565b6001600160a01b0381166113f65760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401610468565b6113ff816116f6565b50565b60025460009081908190819081906001600160a01b0316158061149b57506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b15801561146357600080fd5b505afa158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149b91906117d0565b8061156c5750600254604051631f5d2cc160e01b81523360048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690631f5d2cc19060640160206040518083038186803b15801561153457600080fd5b505afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c91906117d0565b6115a95760405162461bcd60e51b815260206004820152600e60248201526d4e6f20726561642061636365737360901b6044820152606401610468565b600480546040517fbcfd032d0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938201939093527f00000000000000000000000000000000000000000000000000000000000000008316602482015291169063bcfd032d9060440160a06040518083038186803b15801561165157600080fd5b505afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168991906118e5565b945094509450945094509091929394565b6000546001600160a01b031633146116f45760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610468565b565b6001600160a01b03811633141561174f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610468565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156117be578081fd5b81356117c9816119ce565b9392505050565b6000602082840312156117e1578081fd5b815180151581146117c9578182fd5b600060208284031215611801578081fd5b5051919050565b600060208284031215611819578081fd5b815167ffffffffffffffff80821115611830578283fd5b818401915084601f830112611843578283fd5b8151818111156118555761185561199f565b604051601f8201601f19908116603f0116810190838211818310171561187d5761187d61199f565b81604052828152876020848701011115611895578586fd5b6118a683602083016020880161196f565b979650505050505050565b6000602082840312156118c2578081fd5b5035919050565b6000602082840312156118da578081fd5b81356117c9816119e3565b600080600080600060a086880312156118fc578081fd5b8551611907816119e3565b80955050602086015193506040860151925060608601519150608086015161192e816119e3565b809150509295509295909350565b600060208252825180602084015261195b81604085016020870161196f565b601f01601f19169190910160400192915050565b60005b8381101561198a578181015183820152602001611972565b83811115611999576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146113ff57600080fd5b69ffffffffffffffffffff811681146113ff57600080fdfea2646970667358221220494a24f3eb551d1f7db82f18be40d51e2317999a19abcea721b3ef0d61aea13764736f6c63430008020033a26469706673582212200478d6d893d627c28fcc43f47ba139f3f36aee6a9d0e878b09d52a2c0120676464736f6c6343000802003300000000000000000000000055328a2df78c5e379a3fee693f47e6d4279c2193000000000000000000000000aa65d7e501357a0387e0cae41dd11a352b8a6756000000000000000000000000f25c370c3955ca6391ac6ceb354601e48536f974000000000000000000000000ca03a93d81e6be1ef1cf0ec42d56d4ef6b5c6df6