0x6080604052600280546001600160a01b031916600117905534801561002357600080fd5b50600080546001600160a01b0319163390811782558152600160208190526040909120805460ff191690911790556116ff806100606000396000f3fe6080604052600436106100595760003560e01c806310d1e85c146100625780632c512d6e1461008257806339be6afd1461009557806353ed5143146100b5578063dca9c125146100bd578063efeb5f1f146100d057610060565b3661006057005b005b34801561006e57600080fd5b5061006061007d3660046110c1565b6100e3565b610060610090366004611096565b61062f565b3480156100a157600080fd5b506100606100b03660046112bb565b6106d2565b610060610a34565b6100606100cb3660046111c0565b610a7a565b6100606100de366004611057565b610a96565b6000336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561011e57600080fd5b505afa158015610132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610156919061107a565b90506000336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561019357600080fd5b505afa1580156101a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cb919061107a565b6002549091506001600160a01b031633146102015760405162461bcd60e51b81526004016101f890611428565b60405180910390fd5b85158061020c575084155b61021557600080fd5b6000808080610226878901896111d8565b935093509350935060008260008151811061025157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316876001600160a01b0316146102775786610279565b855b905060008b15610289578b61028b565b8a5b90506000829050806001600160a01b031663a9059cbb876001815181106102c257634e487b7160e01b600052603260045260246000fd5b6020026020010151846040518363ffffffff1660e01b81526004016102e89291906113d8565b602060405180830381600087803b15801561030257600080fd5b505af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a9190611152565b5060015b6001865161034c9190611656565b81101561056f5760008087838151811061037657634e487b7160e01b600052603260045260246000fd5b60200260200101518884600161038c91906115ff565b815181106103aa57634e487b7160e01b600052603260045260246000fd5b60200260200101519150915060006103c28383610ad4565b5090506000886103d38660016115ff565b815181106103f157634e487b7160e01b600052603260045260246000fd5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461041f57826000610423565b6000835b91509150600060018e516104379190611656565b88106104435730610476565b8d61044f8960016115ff565b8151811061046d57634e487b7160e01b600052603260045260246000fd5b60200260200101515b90508d888151811061049857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031663022c0d9f848484600067ffffffffffffffff8111156104d957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610503576020820181803683370190505b506040518563ffffffff1660e01b815260040161052394939291906113f1565b600060405180830381600087803b15801561053d57600080fd5b505af1158015610551573d6000803e3d6000fd5b505050505050505050505080806105679061166d565b91505061033e565b5060008560008151811061059357634e487b7160e01b600052603260045260246000fd5b60200260200101519050806001600160a01b031663a9059cbb338a6040518363ffffffff1660e01b81526004016105cb9291906113d8565b602060405180830381600087803b1580156105e557600080fd5b505af11580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190611152565b50505050505050505050505050505050565b6000546001600160a01b0316331461064657600080fd5b60005460405163a9059cbb60e01b815283916001600160a01b038084169263a9059cbb9261067a92169086906004016113d8565b602060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cc9190611152565b50505050565b3360009081526001602052604090205460ff166106ee57600080fd5b600080610708896106ff8a8a6115ff565b88888888610b5e565b915091508585600081811061072d57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107429190611057565b600280546001600160a01b0319166001600160a01b03929092169190911790556040516000906107809084908990899089908990889060200161153e565b60408051601f198184030181529190526002549091506001600160a01b031685856000816107be57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107d39190611057565b6001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561081557600080fd5b505afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d919061107a565b6001600160a01b031614156108ee57806001600160a01b031663022c0d9f60008560018151811061088e57634e487b7160e01b600052603260045260246000fd5b602002602001015130866040518563ffffffff1660e01b81526004016108b794939291906113f1565b600060405180830381600087803b1580156108d157600080fd5b505af11580156108e5573d6000803e3d6000fd5b5050505061097c565b806001600160a01b031663022c0d9f8460018151811061091e57634e487b7160e01b600052603260045260246000fd5b6020026020010151600030866040518563ffffffff1660e01b815260040161094994939291906113f1565b600060405180830381600087803b15801561096357600080fd5b505af1158015610977573d6000803e3d6000fd5b505050505b47898110156109f85773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d6109a9838d611656565b6040518263ffffffff1660e01b81526004016109c59190611535565b600060405180830381600087803b1580156109df57600080fd5b505af11580156109f3573d6000803e3d6000fd5b505050505b60405141908b156108fc02908c906000818181858888f19350505050158015610a25573d6000803e3d6000fd5b50505050505050505050505050565b6000546001600160a01b03163314610a4b57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610a77573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610a9157600080fd5b600355565b6000546001600160a01b03163314610aad57600080fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600080826001600160a01b0316846001600160a01b03161415610b095760405162461bcd60e51b81526004016101f8906114d0565b826001600160a01b0316846001600160a01b031610610b29578284610b2c565b83835b90925090506001600160a01b038216610b575760405162461bcd60e51b81526004016101f8906114a1565b9250929050565b600060608267ffffffffffffffff811115610b8957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b5090508781600081518110610bd757634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060005b610bf1600185611656565b811015610f1557600080888884818110610c1b57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610c309190611057565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610c6857600080fd5b505afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190611172565b506001600160701b0391821693501690506000808888610cc18760016115ff565b818110610cde57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cf39190611057565b6001600160a01b0316898987818110610d1c57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d319190611057565b6001600160a01b031610610d46578284610d49565b83835b915091506000868681518110610d6f57634e487b7160e01b600052603260045260246000fd5b602002602001015111610d945760405162461bcd60e51b81526004016101f89061144e565b600082118015610da45750600081115b610dc05760405162461bcd60e51b81526004016101f890611507565b6000868681518110610de257634e487b7160e01b600052603260045260246000fd5b60200260200101516103e5610df79190611637565b90506000610e058383611637565b9050600082610e16866103e8611637565b610e2091906115ff565b9050610e2c8183611617565b89610e388a60016115ff565b81518110610e5657634e487b7160e01b600052603260045260246000fd5b602090810291909101015287610f025788600181518110610e8757634e487b7160e01b600052603260045260246000fd5b602002602001015185610e9a9190611637565b610ea6906103e8611637565b915088600181518110610ec957634e487b7160e01b600052603260045260246000fd5b60200260200101516103e5610ede9190611637565b610ee89085611656565b9050610ef48183611617565b610eff9060016115ff565b99505b505060019095019450610be69350505050565b50600354610f7957610f2787896115ff565b8160018351610f369190611656565b81518110610f5457634e487b7160e01b600052603260045260246000fd5b602002602001015111610f795760405162461bcd60e51b81526004016101f890611485565b965096945050505050565b60008083601f840112610f95578182fd5b50813567ffffffffffffffff811115610fac578182fd5b6020830191508360208083028501011115610b5757600080fd5b600082601f830112610fd6578081fd5b81356020610feb610fe6836115db565b6115b1565b8281528181019085830183850287018401881015611007578586fd5b855b8581101561102e57813561101c816116b4565b84529284019290840190600101611009565b5090979650505050505050565b80516001600160701b038116811461105257600080fd5b919050565b600060208284031215611068578081fd5b8135611073816116b4565b9392505050565b60006020828403121561108b578081fd5b8151611073816116b4565b600080604083850312156110a8578081fd5b82356110b3816116b4565b946020939093013593505050565b6000806000806000608086880312156110d8578081fd5b85356110e3816116b4565b94506020860135935060408601359250606086013567ffffffffffffffff8082111561110d578283fd5b818801915088601f830112611120578283fd5b81358181111561112e578384fd5b89602082850101111561113f578384fd5b9699959850939650602001949392505050565b600060208284031215611163578081fd5b81518015158114611073578182fd5b600080600060608486031215611186578283fd5b61118f8461103b565b925061119d6020850161103b565b9150604084015163ffffffff811681146111b5578182fd5b809150509250925092565b6000602082840312156111d1578081fd5b5035919050565b600080600080608085870312156111ed578384fd5b8435935060208086013567ffffffffffffffff8082111561120c578586fd5b61121889838a01610fc6565b9550604088013591508082111561122d578485fd5b61123989838a01610fc6565b9450606088013591508082111561124e578384fd5b508601601f8101881361125f578283fd5b803561126d610fe6826115db565b81815283810190838501858402850186018c1015611289578687fd5b8694505b838510156112ab57803583526001949094019391850191850161128d565b50979a9699509497505050505050565b600080600080600080600060a0888a0312156112d5578182fd5b873596506020880135955060408801359450606088013567ffffffffffffffff80821115611301578384fd5b61130d8b838c01610f84565b909650945060808a0135915080821115611325578384fd5b506113328a828b01610f84565b989b979a50959850939692959293505050565b60008284526020808501945082825b85811015611382578135611367816116b4565b6001600160a01b031687529582019590820190600101611354565b509495945050505050565b60008151808452815b818110156113b257602081850181015186830182015201611396565b818111156113c35782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03929092168252602082015260400190565b600085825284602083015260018060a01b03841660408301526080606083015261141e608083018461138d565b9695505050505050565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b6020808252601a908201527f4c6962726172793a20494e535546465f494e5055545f414d4e54000000000000604082015260600190565b602080825260029082015261463160f01b604082015260600190565b6020808252601590820152744c6962726172793a205a45524f5f4144445245535360581b604082015260600190565b6020808252601c908201527f4c6962726172793a204944454e544943414c5f41444452455353455300000000604082015260600190565b6020808252601490820152734c6962726172793a20494e535546465f4c49515560601b604082015260600190565b90815260200190565b6000878252602060808184015261155960808401888a611345565b838103604085015261156c818789611345565b84810360608601528551808252838701925090830190845b818110156115a057835183529284019291840191600101611584565b50909b9a5050505050505050505050565b60405181810167ffffffffffffffff811182821017156115d3576115d361169e565b604052919050565b600067ffffffffffffffff8211156115f5576115f561169e565b5060209081020190565b6000821982111561161257611612611688565b500190565b60008261163257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561165157611651611688565b500290565b60008282101561166857611668611688565b500390565b600060001982141561168157611681611688565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a7757600080fdfea2646970667358221220995e83452986fb1f72166b7bb6d327626c0267a0560523c75ae2f200aebea66364736f6c63430008000033