0x60806040523480156200001157600080fd5b5060043610620000b75760003560e01c8063715018a6116200007a578063715018a614620001725780638da5cb5b146200017c578063a9445d9b146200018e578063d6a1524014620001b6578063d9f8bd2314620001ca578063f2fde38b14620001f257600080fd5b806301ffc9a714620000bc5780632a2b6ba014620000e85780632ae9c600146200012957806357c41942146200014257806368cb8df5146200015b575b600080fd5b620000d3620000cd36600462001363565b62000209565b60405190151581526020015b60405180910390f35b620001107f000000000000000000000000da296feef395da53d9bdc8950d185f7472b06e0781565b6040516001600160a01b039091168152602001620000df565b6200013362000240565b604051620000df919062001396565b6200015962000153366004620013e2565b6200026c565b005b620001106200016c3660046200144e565b620002f7565b6200015962000bf3565b6000546001600160a01b031662000110565b620001107f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a81565b60015462000110906001600160a01b031681565b620001107f000000000000000000000000bb1d6196b82f4833e19da61196d59d2fb19c927e81565b6200015962000203366004620013e2565b62000c0b565b60006001600160e01b03198216621574e360e91b14806200023a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6200024a62001337565b5060408051606081018252600181526003602082015260009181019190915290565b6200027662000c8a565b6001546001600160a01b031615620002d55760405162461bcd60e51b815260206004820152601a60248201527f73746174696f6e20616c7265616479207265676973746572656400000000000060448201526064015b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b0316620003465760405162461bcd60e51b815260206004820152600f60248201526e1cdd185d1a5bdb881b9bdd081cd95d608a1b6044820152606401620002cc565b600154604051632312e32f60e01b81526001600160a01b0390911690632312e32f90620003829033908a908a908a908a908a90600401620015c2565b60006040518083038186803b1580156200039b57600080fd5b505afa158015620003b0573d6000803e3d6000fd5b50505060008590039050620003d857604051638aec24df60e01b815260040160405180910390fd5b620003e38662000ce6565b60015460405163288971d360e11b81526001600160a01b038084166004830152336024830152929350911690635112e3a690604401600060405180830381600087803b1580156200043357600080fd5b505af115801562000448573d6000803e3d6000fd5b5050604051632a99dcd560e21b81526001600160a01b0384811660048301523360248301527f000000000000000000000000da296feef395da53d9bdc8950d185f7472b06e0716925063aa6773549150604401600060405180830381600087803b158015620004b657600080fd5b505af1158015620004cb573d6000803e3d6000fd5b505050506000816001600160a01b03166309e56b146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053691906200173d565b905060007f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a6001600160a01b031663747e5ec16040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bf91906200173d565b90506000836001600160a01b0316636a582b446040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062891906200173d565b6040516335a2eb4b60e21b81529091506001600160a01b0385169063d68bad2c906200067d9087907f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a90869060040162001757565b600060405180830381600087803b1580156200069857600080fd5b505af1158015620006ad573d6000803e3d6000fd5b50506040516335a2eb4b60e21b81526001600160a01b038716925063d68bad2c9150620007039087907f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a90889060040162001757565b600060405180830381600087803b1580156200071e57600080fd5b505af115801562000733573d6000803e3d6000fd5b50506040516335a2eb4b60e21b81526001600160a01b038716925063d68bad2c915062000789907f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a903090879060040162001757565b600060405180830381600087803b158015620007a457600080fd5b505af1158015620007b9573d6000803e3d6000fd5b5050505060005b8781101562000a69576000807f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a6001600160a01b0316633c8c01d18860405180604001604052808f8f898181106200081c576200081c6200177b565b905060200281019062000830919062001791565b6200084290368190038101906200184e565b81526020018f8f898181106200085c576200085c6200177b565b905060200281019062000870919062001791565b62000880906060810190620018ca565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040516001600160e01b031960e085901b168152620008da9291906004016200195c565b6000604051808303816000875af1158015620008fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000924919081019062001ada565b915091507f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a6001600160a01b031663dbf9ee9e886040518060a001604052808f8f898181106200097857620009786200177b565b90506020028101906200098c919062001791565b6200099e90368190038101906200184e565b8152602001866001600160a01b0316815260200185602001518152602001620009cb866000015162000dbe565b81526020018f8f89818110620009e557620009e56200177b565b9050602002810190620009f9919062001791565b608001358152506040518363ffffffff1660e01b815260040162000a1f92919062001c14565b600060405180830381600087803b15801562000a3a57600080fd5b505af115801562000a4f573d6000803e3d6000fd5b5050505050508062000a619062001d03565b9050620007c0565b5062000a758462000df0565b604051633658153160e21b81526001600160a01b0385169063d96054c49062000ac79087907f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a90889060040162001757565b600060405180830381600087803b15801562000ae257600080fd5b505af115801562000af7573d6000803e3d6000fd5b5050604051633658153160e21b81526001600160a01b038716925063d96054c4915062000b4d907f0000000000000000000000005f80f35e61204a93e260c10124e91ad7cba7bd0a903090879060040162001757565b600060405180830381600087803b15801562000b6857600080fd5b505af115801562000b7d573d6000803e3d6000fd5b5050604051633658153160e21b81526001600160a01b038716925063d96054c4915062000bb39087903090889060040162001757565b600060405180830381600087803b15801562000bce57600080fd5b505af115801562000be3573d6000803e3d6000fd5b5050505050505095945050505050565b62000bfd62000c8a565b62000c096000620012a3565b565b62000c1562000c8a565b6001600160a01b03811662000c7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002cc565b62000c8781620012a3565b50565b6000546001600160a01b0316331462000c095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002cc565b600062000d237f000000000000000000000000bb1d6196b82f4833e19da61196d59d2fb19c927e60405180602001604052806000815250620012f3565b90506001600160a01b03811663eafb8b0662000d436040850185620018ca565b3062000d536020880188620013e2565b62000d626020890189620018ca565b6040518763ffffffff1660e01b815260040162000d859695949392919062001d2b565b600060405180830381600087803b15801562000da057600080fd5b505af115801562000db5573d6000803e3d6000fd5b50505050919050565b60008160405160200162000dd3919062001d7a565b604051602081830303815290604052805190602001209050919050565b60408051600680825260e08201909252600091816020015b604080516060810182526000808252602080830182905292820152825260001990920191018162000e085790505060408051606081019091529091508060008152602001836001600160a01b03168152602001836001600160a01b03166309e56b146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ec091906200173d565b8152508160008151811062000ed95762000ed96200177b565b602090810291909101015260408051606081019091528060008152602001836001600160a01b03168152602001836001600160a01b03166324b4d73f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f6b91906200173d565b8152508160018151811062000f845762000f846200177b565b602090810291909101015260408051606081019091528060008152602001836001600160a01b03168152602001836001600160a01b031663e2e355636040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101691906200173d565b815250816002815181106200102f576200102f6200177b565b602090810291909101015260408051606081019091528060008152602001836001600160a01b03168152602001836001600160a01b031663829331a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200109b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010c191906200173d565b81525081600381518110620010da57620010da6200177b565b602090810291909101015260408051606081019091528060008152602001836001600160a01b03168152602001836001600160a01b031663e306bee76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200116c91906200173d565b815250816004815181106200118557620011856200177b565b602090810291909101015260408051606081019091528060008152602001836001600160a01b03168152602001836001600160a01b03166326875b1f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200121791906200173d565b815250816005815181106200123057620012306200177b565b60209081029190910101526040516308a1134160e21b81526001600160a01b038316906322844d04906200126b908590859060040162001dc9565b600060405180830381600087803b1580156200128657600080fd5b505af11580156200129b573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008282604051620013059062001355565b6200131292919062001e43565b604051809103906000f0801580156200132f573d6000803e3d6000fd5b509392505050565b60405180606001604052806003906020820280368337509192915050565b6107278062001e7283390190565b6000602082840312156200137657600080fd5b81356001600160e01b0319811681146200138f57600080fd5b9392505050565b60608101818360005b6003811015620013c357815160ff168352602092830192909101906001016200139f565b50505092915050565b6001600160a01b038116811462000c8757600080fd5b600060208284031215620013f557600080fd5b81356200138f81620013cc565b60008083601f8401126200141557600080fd5b50813567ffffffffffffffff8111156200142e57600080fd5b6020830191508360208285010111156200144757600080fd5b9250929050565b6000806000806000606086880312156200146757600080fd5b853567ffffffffffffffff808211156200148057600080fd5b908701906080828a0312156200149557600080fd5b90955060208701359080821115620014ac57600080fd5b818801915088601f830112620014c157600080fd5b813581811115620014d157600080fd5b8960208260051b8501011115620014e757600080fd5b6020830196508095505060408801359150808211156200150657600080fd5b50620015158882890162001402565b969995985093965092949392505050565b6000808335601e198436030181126200153e57600080fd5b830160208101925035905067ffffffffffffffff8111156200155f57600080fd5b8036038213156200144757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff81168114620015aa57600080fd5b919050565b803561ffff81168114620015aa57600080fd5b600060018060a01b03808916835260206080818501528835620015e581620013cc565b82166080850152620015fa8982018a62001526565b608060a087015262001612610100870182846200156f565b9150506200162460408b018b62001526565b868303607f190160c08801526200163d8382846200156f565b60608d013560e089015287810360408901528a815292505050818101600589901b820183018a6000805b8c8110156200171457858403601f190185528235368f9003609e190181126200168e578283fd5b8e0160ff6200169d8262001598565b16855261ffff620016b0898301620015af565b16888601526040810135620016c581620013cc565b89166040860152620016db606082018262001526565b60a06060880152620016f260a0880182846200156f565b6080938401359790930196909652509487019493509186019160010162001667565b50505086810360608801526200172c81898b6200156f565b9d9c50505050505050505050505050565b6000602082840312156200175057600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112620017a857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715620017ee57620017ee620017b2565b60405290565b60405160a0810167ffffffffffffffff81118282101715620017ee57620017ee620017b2565b604051601f8201601f1916810167ffffffffffffffff81118282101715620018465762001846620017b2565b604052919050565b600081830360608112156200186257600080fd5b6200186c620017c8565b60408212156200187b57600080fd5b62001885620017c8565b9150620018928462001598565b8252620018a260208501620015af565b6020830152908152604083013590620018bb82620013cc565b60208101919091529392505050565b6000808335601e19843603018112620018e257600080fd5b83018035915067ffffffffffffffff821115620018fe57600080fd5b6020019150368190038213156200144757600080fd5b6000815180845260005b818110156200193c576020818501810151868301820152016200191e565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190528251620019a5918301908051805160ff16835260209081015161ffff168184015201516001600160a01b0316604090910152565b60006020830151608060a0840152620019c260c084018262001914565b95945050505050565b600067ffffffffffffffff821115620019e857620019e8620017b2565b5060051b60200190565b600082601f83011262001a0457600080fd5b8151602062001a1d62001a1783620019cb565b6200181a565b82815260a0928302850182019282820191908785111562001a3d57600080fd5b8387015b8581101562001acd5781818a03121562001a5b5760008081fd5b62001a65620017f4565b81516003811062001a765760008081fd5b81528186015162001a8781620013cc565b8187015260408281015162001a9c81620013cc565b9082015260608281015162001ab181620013cc565b9082015260808281015190820152845292840192810162001a41565b5090979650505050505050565b6000806040838503121562001aee57600080fd5b825162001afb81620013cc565b8092505060208084015167ffffffffffffffff8082111562001b1c57600080fd5b908501906040828803121562001b3157600080fd5b62001b3b620017c8565b82518281111562001b4b57600080fd5b8301601f8101891362001b5d57600080fd5b805162001b6e62001a1782620019cb565b81815260059190911b8201860190868101908b83111562001b8e57600080fd5b928701925b8284101562001bb957835162001ba981620013cc565b8252928701929087019062001b93565b8452505050828401518281111562001bd057600080fd5b62001bde89828601620019f2565b8583015250809450505050509250929050565b6003811062001c1057634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0383811682526040602080840182905284518051805160ff168685015282015161ffff1660608601528101518316608085015260009290610120850186820151831660a0878101919091528488015160e060c0890152805192839052830191600091906101408901905b8084101562001cdc57845162001c9d83825162001bf1565b80870151881683880152888101518816898401526060808201518916908401526080908101519083015293850193600193909301929082019062001c85565b5060608a015160e08a015260808a01516101008a0152809750505050505050509392505050565b60006001820162001d2457634e487b7160e01b600052601160045260246000fd5b5060010190565b60808152600062001d4160808301888a6200156f565b6001600160a01b03878116602085015286166040840152828103606084015262001d6d8185876200156f565b9998505050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101562001dbd5783516001600160a01b03168352928401929184019160010162001d96565b50909695505050505050565b6001600160a01b038381168252604060208084018290528451848301819052600093606092909183870190888301875b8281101562001e3357815162001e1185825162001bf1565b8086015187168587015288015188850152928601929084019060010162001df9565b50919a9950505050505050505050565b6001600160a01b038316815260406020820181905260009062001e699083018462001914565b94935050505056fe608060405260405161072738038061072783398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610700602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b6102bb806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acc8ee9f3a5a986220ad982559e64d607f588b1eb4344af71691e8e643c3424964736f6c63430008110033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204b67cf533848d4381894c77956ea2457907800693e58243970e28b55cac2efc664736f6c63430008110033