0x608060405234801561001057600080fd5b506137ca806100206000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80636352211e11610125578063b88d4fde116100ad578063d81d1fde1161007c578063d81d1fde14610575578063e985e9c51461057e578063f2fde38b14610591578063f410f4eb146105a4578063f84ddf0b146105b757600080fd5b8063b88d4fde146104dd578063c45a0155146104f0578063c87b56dd14610503578063cc33c8751461051657600080fd5b80637eabd34a116100f45780637eabd34a1461048b5780638da5cb5b1461049e57806395d89b41146104af578063a22cb465146104b7578063a497e674146104ca57600080fd5b80636352211e1461043857806370a082311461044b578063715018a61461045e578063746231731461046657600080fd5b806323b872dd116101a85780633b7bf931116101775780633b7bf931146103d95780633eb71d37146103ec57806342842e0e146103ff5780634b627eab1461041257806359d667a51461042557600080fd5b806323b872dd146103705780632e68db901461038357806331e658a514610396578063354488a8146103b657600080fd5b8063081812fc116101e4578063081812fc14610308578063095ea7b3146103335780630cbf54c8146103465780631139c55e1461035d57600080fd5b806301ffc9a7146102165780630448e51a1461023e57806306735cb0146102de57806306fdde03146102f3575b600080fd5b610229610224366004612f07565b6105e3565b60405190151581526020015b60405180910390f35b61029761024c366004612f39565b60ff602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160601b03851695600160601b9095046001600160a01b0316949087565b604080516001600160601b0390981688526001600160a01b039096166020880152948601939093526060850191909152608084015260a083015260c082015260e001610235565b6102f16102ec366004612f56565b610635565b005b6102fb610a20565b6040516102359190612fd2565b61031b610316366004612fe5565b610ab2565b6040516001600160a01b039091168152602001610235565b6102f1610341366004612f56565b610ad9565b61034f60fc5481565b604051908152602001610235565b6102f161036b36600461300c565b610bee565b6102f161037e366004613045565b61109c565b6102f1610391366004613086565b6110cd565b6103a96103a4366004612f39565b6112b8565b60405161023591906130ed565b6102296103c4366004612f39565b60fe6020526000908152604090205460ff1681565b61031b6103e7366004612f39565b6113f4565b6102f16103fa366004612fe5565b61146b565b6102f161040d366004613045565b6114eb565b6102f1610420366004612f39565b611506565b6102f1610433366004612f56565b611797565b61031b610446366004612fe5565b611bab565b61034f610459366004612f39565b611c0b565b6102f1611c91565b6101025461010354610476919082565b60408051928352602083019190915201610235565b6102f161049936600461300c565b611ca5565b6097546001600160a01b031661031b565b6102fb611d10565b6102f16104c536600461300c565b611d1f565b6102f16104d8366004612fe5565b611d2a565b6102f16104eb36600461312b565b611d67565b60fb5461031b906001600160a01b031681565b6102fb610511366004612fe5565b611d9f565b610550610524366004612fe5565b610100602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610235565b61034f60fd5481565b61022961058c36600461320b565b611e12565b6102f161059f366004612f39565b611e40565b6102f16105b2366004612fe5565b611eb6565b610101546105cb906001600160601b031681565b6040516001600160601b039091168152602001610235565b60006001600160e01b031982166380ac58cd60e01b148061061457506001600160e01b03198216635b5e139f60e01b145b8061062f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61063d611f14565b6001600160a01b038216600090815260ff6020526040902060040154829042106106935760405162461bcd60e51b815260206004820152600260248201526120a360f11b60448201526064015b60405180910390fd5b82806001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f69190613239565b6001600160a01b031633036107335760405162461bcd60e51b81526020600482015260036024820152624e504d60e81b604482015260640161068a565b33600090815260fe602052604090205460ff166107785760405162461bcd60e51b8152602060048201526003602482015262272ba160e91b604482015260640161068a565b60fb54604051635b16ebb760e01b81526001600160a01b03808716600483015286921690635b16ebb790602401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e69190613256565b6108185760405162461bcd60e51b8152602060048201526003602482015262504e4560e81b604482015260640161068a565b6001600160a01b038516600090815260ff60205260408120908590036108665760405162461bcd60e51b81526020600482015260036024820152625a414d60e81b604482015260640161068a565b6000866001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ca9190613239565b8254909150600160601b90046001600160a01b031633036109df57816005015486101561091f5760405162461bcd60e51b81526020600482015260036024820152624c424160e81b604482015260640161068a565b6109346001600160a01b038216333089611f6d565b858260010160008282546109489190613289565b9091555050436002830155600482015461a8c09061096790429061329c565b1161098957620151808260040160008282546109839190613289565b90915550505b336001600160a01b0316876001600160a01b03167f842e4ae7da4b79045ffc21a8cb68d8abad9705bff11e838c1623bb83f243c62684600101546040516109d291815260200190565b60405180910390a3610a0d565b60405162461bcd60e51b815260206004820152600360248201526213909160ea1b604482015260640161068a565b5050505050610a1c600160c955565b5050565b606060658054610a2f906132af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5b906132af565b8015610aa85780601f10610a7d57610100808354040283529160200191610aa8565b820191906000526020600020905b815481529060010190602001808311610a8b57829003601f168201915b5050505050905090565b6000610abd82611fdf565b506000908152606960205260409020546001600160a01b031690565b6000610ae482611bab565b9050806001600160a01b0316836001600160a01b031603610b515760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161068a565b336001600160a01b0382161480610b6d5750610b6d8133611e12565b610bdf5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161068a565b610be9838361203e565b505050565b610bf6611f14565b610bfe6120ac565b6001600160a01b038216600090815260ff602052604090206004810154421015610c505760405162461bcd60e51b815260206004820152600360248201526220a72360e91b604482015260640161068a565b8054600160601b90046001600160a01b0316610c945760405162461bcd60e51b81526020600482015260036024820152624e414560e81b604482015260640161068a565b80546001600160601b031615610cd15760405162461bcd60e51b8152602060048201526002602482015261414360f01b604482015260640161068a565b6000836001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190613239565b90508215610f8f5761010180546001600160601b0316906000610d57836132e9565b91906101000a8154816001600160601b0302191690836001600160601b03160217905550506040518060600160405280856001600160a01b03168152602001856001600160a01b031663ff3f60e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df8919061330f565b8152602001856001600160a01b031663ba1c5e806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f919061330f565b905261010180546001600160601b0390811660009081526101006020908152604091829020855181546001600160a01b039182166001600160a01b0319909116178255918601516001828101919091559590920151600290920191909155915485546bffffffffffffffffffffffff1916911617845590830154610ee7918316908690612106565b6001600160a01b03808516600090815260ff602052604090205461010154610f2392600160601b909204909116906001600160601b0316612136565b6001600160a01b03848116600081815260ff602090815260409182902054825193845287151591840191909152600160601b90049092168183015290517f0a13dd13a065cb99a7ee085ec07791aef289944140c829b212d5128edff5a0fa9181900360600190a161103d565b81546001830154610fb5916001600160a01b0384811692600160601b9092041690612106565b6001600160a01b038416600081815260ff6020908152604080832060018101849055600281018490556003810184905560048101849055600581018490556001600160601b0390558051938452861515918401919091528201527f0a13dd13a065cb99a7ee085ec07791aef289944140c829b212d5128edff5a0fa9060600160405180910390a15b836001600160a01b031663ffbaefb76040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b505050505050610a1c600160c955565b6110a633826122c1565b6110c25760405162461bcd60e51b815260040161068a90613328565b610be9838383612320565b600054610100900460ff16158080156110ed5750600054600160ff909116105b806111075750303b158015611107575060005460ff166001145b61116a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161068a565b6000805460ff19166001179055801561118d576000805461ff0019166101001790555b662386f26fc100008235108015906111ae5750670de0b6b3a7640000823511155b80156111bd5750602082013515155b6111d95760405162461bcd60e51b815260040161068a90613375565b6111e1612484565b61122f6040518060400160405280600e81526020016d10db19585c9c1bdbdb081119589d60921b8152506040518060400160405280600681526020016510d41111509560d21b8152506124b3565b6112376124e4565b60fb80546001600160a01b0319166001600160a01b03871617905560fc84905560fd83905581356101025560208201356101035580156112b1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006003826001600160a01b031663c19d93fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613392565b600481111561132f5761132f6130d7565b1461133c57506000919050565b6001600160a01b03828116600090815260ff6020526040902054600160601b90041661136a57506001919050565b6001600160a01b038216600090815260ff602052604090206004015442101561139557506002919050565b6001600160a01b038216600090815260ff602052604090206004015442108015906113df57506001600160a01b038216600090815260ff60205260409020546001600160601b0316155b156113ec57506003919050565b506004919050565b6001600160a01b038116600090815260ff60205260408120546001600160601b0316801580159061142e57506001600160601b0381811614155b611439576000611464565b6001600160a01b038316600090815260ff6020526040902054611464906001600160601b0316611bab565b9392505050565b6114736120ac565b662386f26fc1000081101580156114925750670de0b6b3a76400008111155b6114ae5760405162461bcd60e51b815260040161068a90613375565b6101028190556040518181527fcd1d48af3760687c595d2c93c5dbf8a5a1a83f517b37dee0f95d5074ddb5ea60906020015b60405180910390a150565b610be983838360405180602001604052806000815250611d67565b61150e611f14565b6001600160a01b038116600090815260ff6020526040902080546001600160601b0316156115635760405162461bcd60e51b8152602060048201526002602482015261414360f01b604482015260640161068a565b806004015460000361159d5760405162461bcd60e51b81526020600482015260036024820152624e414560e81b604482015260640161068a565b80600401544210156115d75760405162461bcd60e51b815260206004820152600360248201526220a72360e91b604482015260640161068a565b620d2f008160040154426115eb919061329c565b101561161f5760405162461bcd60e51b81526020600482015260036024820152620544e560ec1b604482015260640161068a565b6000826001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116839190613239565b825460018401549192506116ab916001600160a01b0380851692600160601b90041690612106565b6001600160a01b038316600081815260ff60205260408082206001810183905560028101839055600381018390556004808201849055600582018490556001600160601b03909155815160016245104960e01b03198152915163ffbaefb7938383019390929082900301818387803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b5050604080516001600160a01b03871681526000602082018190528183015290517f0a13dd13a065cb99a7ee085ec07791aef289944140c829b212d5128edff5a0fa9350908190036060019150a15050611794600160c955565b50565b61179f611f14565b81806001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118029190613239565b6001600160a01b0316330361183f5760405162461bcd60e51b81526020600482015260036024820152624e504d60e81b604482015260640161068a565b33600090815260fe602052604090205460ff166118845760405162461bcd60e51b8152602060048201526003602482015262272ba160e91b604482015260640161068a565b60fb54604051635b16ebb760e01b81526001600160a01b03808616600483015285921690635b16ebb790602401602060405180830381865afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190613256565b6119245760405162461bcd60e51b8152602060048201526003602482015262504e4560e81b604482015260640161068a565b6001600160a01b038416600090815260ff60205260409020600181015484116119755760405162461bcd60e51b81526020600482015260036024820152624e424760e81b604482015260640161068a565b805433600160601b9091046001600160a01b0316036119bc5760405162461bcd60e51b8152602060048201526003602482015262434f5960e81b604482015260640161068a565b6000856001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190613239565b8254909150600160601b90046001600160a01b0316611a4857611a438686612513565b611aef565b81546001830154611a6e916001600160a01b0384811692600160601b9092041690612106565b81600401544210611aa65760405162461bcd60e51b815260206004820152600260248201526120a360f11b604482015260640161068a565b81600501548260010154611aba9190613289565b851015611aef5760405162461bcd60e51b81526020600482015260036024820152624c424160e81b604482015260640161068a565b611b046001600160a01b038216333088611f6d565b61a8c0428360040154611b17919061329c565b11611b395762015180826004016000828254611b339190613289565b90915550505b81546001600160601b031633600160601b8102919091178355436002840155600183018690556040518681526001600160a01b038816907f842e4ae7da4b79045ffc21a8cb68d8abad9705bff11e838c1623bb83f243c6269060200160405180910390a350505050610a1c600160c955565b6000818152606760205260408120546001600160a01b03168061062f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161068a565b60006001600160a01b038216611c755760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161068a565b506001600160a01b031660009081526068602052604090205490565b611c996120ac565b611ca36000612843565b565b611cad6120ac565b6001600160a01b038216600081815260fe6020908152604091829020805460ff19168515159081179091558251938452908301527fb8aaa2f9cfc5357932d205d53ced4054a5553b96f7579cfacf6c6c8116781186910160405180910390a15050565b606060668054610a2f906132af565b610a1c338383612895565b611d326120ac565b60fc8190556040518181527fcfbeaaafe85252eefcff52729a69be4e0a0fddc09618d6d15865b5c4c01794f9906020016114e0565b611d7133836122c1565b611d8d5760405162461bcd60e51b815260040161068a90613328565b611d9984848484612963565b50505050565b6060611daa82611fdf565b6000611dc160408051602081019091526000815290565b90506000815111611de15760405180602001604052806000815250611464565b80611deb84612996565b604051602001611dfc9291906133b3565b6040516020818303038152906040529392505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b611e486120ac565b6001600160a01b038116611ead5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068a565b61179481612843565b611ebe6120ac565b80600003611ede5760405162461bcd60e51b815260040161068a90613375565b6101038190556040518181527fd67a6de316d5656e8c96bb9d0823803a8a02b441902cbdabf3413efa5d912d42906020016114e0565b600260c95403611f665760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161068a565b600260c955565b6040516001600160a01b0380851660248301528316604482015260648101829052611d999085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a29565b600160c955565b6000818152606760205260409020546001600160a01b03166117945760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161068a565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061207382611bab565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6097546001600160a01b03163314611ca35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068a565b6040516001600160a01b038316602482015260448101829052610be990849063a9059cbb60e01b90606401611fa1565b6001600160a01b03821661218c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161068a565b6000818152606760205260409020546001600160a01b0316156121f15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161068a565b6000818152606760205260409020546001600160a01b0316156122565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161068a565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000806122cd83611bab565b9050806001600160a01b0316846001600160a01b031614806122f457506122f48185611e12565b806123185750836001600160a01b031661230d84610ab2565b6001600160a01b0316145b949350505050565b826001600160a01b031661233382611bab565b6001600160a01b0316146123595760405162461bcd60e51b815260040161068a906133e2565b6001600160a01b0382166123bb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161068a565b826001600160a01b03166123ce82611bab565b6001600160a01b0316146123f45760405162461bcd60e51b815260040161068a906133e2565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff166124ab5760405162461bcd60e51b815260040161068a90613427565b611ca3612afb565b600054610100900460ff166124da5760405162461bcd60e51b815260040161068a90613427565b610a1c8282612b2b565b600054610100900460ff1661250b5760405162461bcd60e51b815260040161068a90613427565b611ca3612b6b565b816003816001600160a01b031663c19d93fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125789190613392565b6004811115612589576125896130d7565b146125bc5760405162461bcd60e51b815260206004820152600360248201526213925160ea1b604482015260640161068a565b61262a60fd54826001600160a01b03166389cf32046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612600573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612624919061330f565b90612b92565b82101561265f5760405162461bcd60e51b81526020600482015260036024820152622626a160e91b604482015260640161068a565b6001600160a01b03808416600090815260ff6020526040808220815163eb81033f60e01b81529151909385169263eb81033f926004808201939182900301818387803b1580156126ae57600080fd5b505af11580156126c2573d6000803e3d6000fd5b505050506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190613472565b60ff169050600061010260010154905060006127a7856001600160a01b0316634ec18db96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a1919061330f565b84612bb1565b610102549091506000906127bc908390612b92565b9050828111156127da576127d08385612bd3565b60058601556127ea565b6127e48185612bd3565b60058601555b426003860181905560fc546127fe91613289565b600486015560405133906001600160a01b038a16907fe585715c3a7b6fc1ecea668cf51b41e37d589870897a63ea373a052dfeb5484a90600090a35050505050505050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036128f65760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161068a565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61296e848484612320565b61297a84848484612bf5565b611d995760405162461bcd60e51b815260040161068a90613495565b606060006129a383612cf6565b600101905060008167ffffffffffffffff8111156129c3576129c3613115565b6040519080825280601f01601f1916602001820160405280156129ed576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846129f757509392505050565b6000612a7e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612dce9092919063ffffffff16565b805190915015610be95780806020019051810190612a9c9190613256565b610be95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161068a565b600054610100900460ff16612b225760405162461bcd60e51b815260040161068a90613427565b611ca333612843565b600054610100900460ff16612b525760405162461bcd60e51b815260040161068a90613427565b6065612b5e8382613535565b506066610be98282613535565b600054610100900460ff16611fd85760405162461bcd60e51b815260040161068a90613427565b6000670de0b6b3a7640000612ba783856135f5565b611464919061360c565b6000612bbe82601261329c565b612bc990600a613712565b61146490846135f5565b6000612be082601261329c565b612beb90600a613712565b611464908461360c565b60006001600160a01b0384163b15612ceb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612c3990339089908890889060040161371e565b6020604051808303816000875af1925050508015612c74575060408051601f3d908101601f19168201909252612c719181019061375b565b60015b612cd1573d808015612ca2576040519150601f19603f3d011682016040523d82523d6000602084013e612ca7565b606091505b508051600003612cc95760405162461bcd60e51b815260040161068a90613495565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612318565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d355772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612d61576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612d7f57662386f26fc10000830492506010015b6305f5e1008310612d97576305f5e100830492506008015b6127108310612dab57612710830492506004015b60648310612dbd576064830492506002015b600a831061062f5760010192915050565b6060612318848460008585600080866001600160a01b03168587604051612df59190613778565b60006040518083038185875af1925050503d8060008114612e32576040519150601f19603f3d011682016040523d82523d6000602084013e612e37565b606091505b5091509150612e4887838387612e53565b979650505050505050565b60608315612ec2578251600003612ebb576001600160a01b0385163b612ebb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161068a565b5081612318565b6123188383815115612ed75781518083602001fd5b8060405162461bcd60e51b815260040161068a9190612fd2565b6001600160e01b03198116811461179457600080fd5b600060208284031215612f1957600080fd5b813561146481612ef1565b6001600160a01b038116811461179457600080fd5b600060208284031215612f4b57600080fd5b813561146481612f24565b60008060408385031215612f6957600080fd5b8235612f7481612f24565b946020939093013593505050565b60005b83811015612f9d578181015183820152602001612f85565b50506000910152565b60008151808452612fbe816020860160208601612f82565b601f01601f19169290920160200192915050565b6020815260006114646020830184612fa6565b600060208284031215612ff757600080fd5b5035919050565b801515811461179457600080fd5b6000806040838503121561301f57600080fd5b823561302a81612f24565b9150602083013561303a81612ffe565b809150509250929050565b60008060006060848603121561305a57600080fd5b833561306581612f24565b9250602084013561307581612f24565b929592945050506040919091013590565b60008060008084860360a081121561309d57600080fd5b85356130a881612f24565b9450602086013593506040808701359350605f19820112156130c957600080fd5b509295919450926060019150565b634e487b7160e01b600052602160045260246000fd5b602081016005831061310f57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561314157600080fd5b843561314c81612f24565b9350602085013561315c81612f24565b925060408501359150606085013567ffffffffffffffff8082111561318057600080fd5b818701915087601f83011261319457600080fd5b8135818111156131a6576131a6613115565b604051601f8201601f19908116603f011681019083821181831017156131ce576131ce613115565b816040528281528a60208487010111156131e757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561321e57600080fd5b823561322981612f24565b9150602083013561303a81612f24565b60006020828403121561324b57600080fd5b815161146481612f24565b60006020828403121561326857600080fd5b815161146481612ffe565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062f5761062f613273565b8181038181111561062f5761062f613273565b600181811c908216806132c357607f821691505b6020821081036132e357634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160601b0380831681810361330557613305613273565b6001019392505050565b60006020828403121561332157600080fd5b5051919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526003908201526212559360ea1b604082015260600190565b6000602082840312156133a457600080fd5b81516005811061146457600080fd5b600083516133c5818460208801612f82565b8351908301906133d9818360208801612f82565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561348457600080fd5b815160ff8116811461146457600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f821115610be957600081815260208120601f850160051c8101602086101561350e5750805b601f850160051c820191505b8181101561352d5782815560010161351a565b505050505050565b815167ffffffffffffffff81111561354f5761354f613115565b6135638161355d84546132af565b846134e7565b602080601f83116001811461359857600084156135805750858301515b600019600386901b1c1916600185901b17855561352d565b600085815260208120601f198616915b828110156135c7578886015182559484019460019091019084016135a8565b50858210156135e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808202811582820484141761062f5761062f613273565b60008261362957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561366957816000190482111561364f5761364f613273565b8085161561365c57918102915b93841c9390800290613633565b509250929050565b6000826136805750600161062f565b8161368d5750600061062f565b81600181146136a357600281146136ad576136c9565b600191505061062f565b60ff8411156136be576136be613273565b50506001821b61062f565b5060208310610133831016604e8410600b84101617156136ec575081810a61062f565b6136f6838361362e565b806000190482111561370a5761370a613273565b029392505050565b60006114648383613671565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061375190830184612fa6565b9695505050505050565b60006020828403121561376d57600080fd5b815161146481612ef1565b6000825161378a818460208701612f82565b919091019291505056fea26469706673582212208ad979388f9cd5b9e5558657d5d09437c3625ccd407505d78050a6784a938f0a64736f6c63430008110033