60806040523480156200001157600080fd5b50604051620021ca380380620021ca833981810160405260208110156200003757600080fd5b5051604080518082018252601181527029a9a0a62aa5a4a9a130b9102a37b5b2b760791b602082810191909152825180840190935260088352675353414c554b495360c01b908301529060006200008d6200013c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000ec90600490602085019062000140565b5080516200010290600590602084019062000140565b5050600680546001600160a01b0390931661010002610100600160a81b031960ff19909416601217939093169290921790915550620001dc565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018357805160ff1916838001178555620001b3565b82800160010185558215620001b3579182015b82811115620001b357825182559160200191906001019062000196565b50620001c1929150620001c5565b5090565b5b80821115620001c15760008155600101620001c6565b611fde80620001ec6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e146105ed578063e7a324dc1461061b578063f1127ed814610623578063f2fde38b14610675576101da565b8063a9059cbb14610528578063aff369d414610554578063b4b5ea5714610580578063c3cda520146105a6576101da565b806395d89b41116100de57806395d89b41146104ab5780639dc29fac146104b3578063a0712d68146104df578063a457c2d7146104fc576101da565b80637ecebe0014610475578063893d20e81461049b5780638da5cb5b146104a3576101da565b806340c10f191161017c57806370a082311161014b57806370a0823114610413578063715018a61461043957806375aa14da14610441578063782d6fe114610449576101da565b806340c10f191461033e578063587cde1e1461036c5780635c19a95c146103ae5780636fcfff45146103d4576101da565b806320606b70116101b857806320606b70146102b657806323b872dd146102be578063313ce567146102f45780633950935114610312576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e761069b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b038135169060200135610731565b604080519115158252519081900360200190f35b6102a461074f565b60408051918252519081900360200190f35b6102a4610755565b610288600480360360608110156102d457600080fd5b506001600160a01b03813581169160208101359091169060400135610779565b6102fc610800565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561032857600080fd5b506001600160a01b038135169060200135610809565b61036a6004803603604081101561035457600080fd5b506001600160a01b038135169060200135610857565b005b6103926004803603602081101561038257600080fd5b50356001600160a01b03166108e2565b604080516001600160a01b039092168252519081900360200190f35b61036a600480360360208110156103c457600080fd5b50356001600160a01b0316610900565b6103fa600480360360208110156103ea57600080fd5b50356001600160a01b031661090d565b6040805163ffffffff9092168252519081900360200190f35b6102a46004803603602081101561042957600080fd5b50356001600160a01b0316610925565b61036a610940565b6103926109e2565b6102a46004803603604081101561045f57600080fd5b506001600160a01b0381351690602001356109f6565b6102a46004803603602081101561048b57600080fd5b50356001600160a01b0316610bfe565b610392610c10565b610392610c1f565b6101e7610c2e565b61036a600480360360408110156104c957600080fd5b506001600160a01b038135169060200135610c8f565b610288600480360360208110156104f557600080fd5b5035610d17565b6102886004803603604081101561051257600080fd5b506001600160a01b038135169060200135610d8a565b6102886004803603604081101561053e57600080fd5b506001600160a01b038135169060200135610df2565b61036a6004803603604081101561056a57600080fd5b506001600160a01b038135169060200135610e06565b6102a46004803603602081101561059657600080fd5b50356001600160a01b0316611000565b61036a600480360360c08110156105bc57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135611064565b6102a46004803603604081101561060357600080fd5b506001600160a01b03813581169160200135166112d7565b6102a4611302565b6106556004803603604081101561063957600080fd5b5080356001600160a01b0316906020013563ffffffff16611326565b6040805163ffffffff909316835260208301919091528051918290030190f35b61036a6004803603602081101561068b57600080fd5b50356001600160a01b0316611353565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050905090565b600061074561073e61144b565b848461144f565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061078684848461153b565b6107f68461079261144b565b6107f185604051806060016040528060288152602001611e76602891396001600160a01b038a166000908152600260205260408120906107d061144b565b6001600160a01b03168152602081019190915260400160002054919061168d565b61144f565b5060019392505050565b60065460ff1690565b600061074561081661144b565b846107f1856002600061082761144b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611724565b61085f61144b565b6000546001600160a01b039081169116146108af576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b6108b9828261177e565b6001600160a01b038083166000908152600760205260408120546108de921683611864565b5050565b6001600160a01b039081166000908152600760205260409020541690565b61090a33826119a1565b50565b60096020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b61094861144b565b6000546001600160a01b03908116911614610998576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065461010090046001600160a01b031681565b6000438210610a365760405162461bcd60e51b815260040180806020018281038252602a815260200180611e23602a913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205463ffffffff1680610a64576000915050610749565b6001600160a01b038416600090815260086020908152604080832063ffffffff600019860181168552925290912054168310610ad3576001600160a01b03841660009081526008602090815260408083206000199490940163ffffffff16835292905220600101549050610749565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff16831015610b0e576000915050610749565b600060001982015b8163ffffffff168163ffffffff161115610bc757600282820363ffffffff16048103610b40611d2f565b506001600160a01b038716600090815260086020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610ba2576020015194506107499350505050565b805163ffffffff16871115610bb957819350610bc0565b6001820392505b5050610b16565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b600a6020526000908152604090205481565b6000610c1a610c1f565b905090565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107275780601f106106fc57610100808354040283529160200191610727565b610c9761144b565b6000546001600160a01b03908116911614610ce7576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b610cf18282611a36565b6001600160a01b038083166000908152600760205260408120546108de92169083611864565b6000610d2161144b565b6000546001600160a01b03908116911614610d71576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b610d82610d7c61144b565b8361177e565b506001919050565b6000610745610d9761144b565b846107f185604051806060016040528060258152602001611f846025913960026000610dc161144b565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061168d565b6000610745610dff61144b565b848461153b565b610e0e61144b565b6000546001600160a01b03908116911614610e5e576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b600654604080516370a0823160e01b8152306004820152905160009261010090046001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d6020811015610ed857600080fd5b5051905080821115610f72576006546040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820185905291516101009093049091169163a9059cbb916044808201926020929091908290030181600087803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b505050506040513d6020811015610f6a57600080fd5b50610ffb9050565b6006546040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820186905291516101009093049091169163a9059cbb916044808201926020929091908290030181600087803b158015610fce57600080fd5b505af1158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b50505b505050565b6001600160a01b03811660009081526009602052604081205463ffffffff168061102b57600061105d565b6001600160a01b038316600090815260086020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86661108f61069b565b8051906020012061109e611b26565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa1580156111d1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166112235760405162461bcd60e51b8152600401808060200182810382526029815260200180611d8c6029913960400191505060405180910390fd5b6001600160a01b0381166000908152600a6020526040902080546001810190915589146112815760405162461bcd60e51b8152600401808060200182810382526025815260200180611f5f6025913960400191505060405180910390fd5b874211156112c05760405162461bcd60e51b8152600401808060200182810382526029815260200180611e4d6029913960400191505060405180910390fd5b6112ca818b6119a1565b505050505b505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b61135b61144b565b6000546001600160a01b039081169116146113ab576040805162461bcd60e51b81526020600482018190526024820152600080516020611e9e833981519152604482015290519081900360640190fd5b6001600160a01b0381166113f05760405162461bcd60e51b8152600401808060200182810382526026815260200180611db56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166114945760405162461bcd60e51b8152600401808060200182810382526024815260200180611f3b6024913960400191505060405180910390fd5b6001600160a01b0382166114d95760405162461bcd60e51b8152600401808060200182810382526022815260200180611ddb6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166115805760405162461bcd60e51b8152600401808060200182810382526025815260200180611f166025913960400191505060405180910390fd5b6001600160a01b0382166115c55760405162461bcd60e51b8152600401808060200182810382526023815260200180611d476023913960400191505060405180910390fd5b61160281604051806060016040528060268152602001611dfd602691396001600160a01b038616600090815260016020526040902054919061168d565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546116319082611724565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561171c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116e15781810151838201526020016116c9565b50505050905090810190601f16801561170e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561105d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0382166117d9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546117e69082611724565b6003556001600160a01b03821660009081526001602052604090205461180c9082611724565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b816001600160a01b0316836001600160a01b0316141580156118865750600081115b15610ffb576001600160a01b03831615611918576001600160a01b03831660009081526009602052604081205463ffffffff1690816118c65760006118f8565b6001600160a01b038516600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006119068285611b2a565b905061191486848484611b6c565b5050505b6001600160a01b03821615610ffb576001600160a01b03821660009081526009602052604081205463ffffffff169081611953576000611985565b6001600160a01b038416600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006119938285611724565b90506112cf85848484611b6c565b6001600160a01b03808316600090815260076020526040812054909116906119c884610925565b6001600160a01b0385811660008181526007602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611a30828483611864565b50505050565b6001600160a01b038216611a7b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ebe6021913960400191505060405180910390fd5b611ab881604051806060016040528060228152602001611d6a602291396001600160a01b038516600090815260016020526040902054919061168d565b6001600160a01b038316600090815260016020526040902055600354611ade9082611b2a565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b4690565b600061105d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061168d565b6000611b9043604051806060016040528060378152602001611edf60379139611cd1565b905060008463ffffffff16118015611bd957506001600160a01b038516600090815260086020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611c16576001600160a01b038516600090815260086020908152604080832063ffffffff60001989011684529091529020600101829055611c87565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600884528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260099092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000816401000000008410611d275760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156116e15781810151838201526020016116c9565b509192915050565b60408051808201909152600080825260208201529056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636553414c554b49533a3a64656c656761746542795369673a20696e76616c6964207369676e61747572654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636553414c554b49533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656453414c554b49533a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737353414c554b49533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737353414c554b49533a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aed2c0e6971471df8ab66e16ff14f459b16a1954d36a8abf47822a56a7a9681464736f6c634300060c0033000000000000000000000000e1845758c40b8daab9e479830139b99dba650971