0x608060405234801561001057600080fd5b5061001a33610039565b336000908152600260205260409020805460ff19166001179055610089565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6112d1806100986000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063d759f87411610066578063d759f8741461021d578063e91563f314610230578063f2fde38b14610243578063fbae898d1461025657600080fd5b8063715018a6146101d457806376319190146101dc5780638da5cb5b146101ef578063954f659d1461020a57600080fd5b806338991219116100d357806338991219146101885780634f4047ac1461019b5780636d69fcaf146101ae57806370480275146101c157600080fd5b806306fdde03146101055780630a00c9fc1461014d5780631785f53c146101625780632d42acaa14610175575b600080fd5b604080518082018252601881527f44417070536f6369616c506f6f6c436f6e74726f6c6c65720000000000000000602082015290516101449190611004565b60405180910390f35b61016061015b36600461106e565b610269565b005b61016061017036600461106e565b6102c4565b610160610183366004611090565b6103ac565b6101606101963660046110cb565b610563565b6101606101a936600461111f565b61063c565b6101606101bc36600461106e565b61079e565b6101606101cf36600461106e565b61081b565b610160610905565b6101606101ea36600461106e565b61093b565b6000546040516001600160a01b039091168152602001610144565b610160610218366004611185565b6109b4565b61016061022b3660046111e4565b610b90565b61016061023e366004611220565b610d9a565b61016061025136600461106e565b610dd7565b6101606102643660046110cb565b610e72565b6000546001600160a01b0316331461029c5760405162461bcd60e51b81526004016102939061123b565b60405180910390fd5b600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146102ee5760405162461bcd60e51b81526004016102939061123b565b6001600160a01b03811660009081526002602052604090205460ff166103565760405162461bcd60e51b815260206004820152601860248201527f5468652041646472657373206973206e6f742061646d696e00000000000000006044820152606401610293565b6001600160a01b0381166000818152600260209081526040808320805460ff19169055519182527f1eed86672c9dc0b985e74ea7d22ba679ae6a4a43d0fc1e68f21af2baeb2b8f8291015b60405180910390a250565b60075460ff1615156001146103fb5760405162461bcd60e51b815260206004820152601560248201527443726f737358206973206e6f742072756e6e696e6760581b6044820152606401610293565b6001600160a01b03831660009081526001602052604090205460ff1661043457604051633dd1b30560e01b815260040160405180910390fd5b600082116104845760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e2030006044820152606401610293565b33600081815260036020908152604080832088845290915290819020849055600754905163036dd62f60e31b81526001600160a01b0386811660048301526024820193909352604481018590526064810184905261010090910490911690631b6eb17890608401600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b50506040518481523392506001600160a01b03861691507f301aaa4fdc0778a315911e0bfa1cad16ec3e1bd7b16e69be4135ea58acd8110a9060200160405180910390a350505050565b3360009081526002602052604090205460ff166105925760405162461bcd60e51b815260040161029390611270565b6001600160a01b0382166000908152600460209081526040808320878452909152812054908190036105d75760405163f2a3e8db60e01b815260040160405180910390fd5b6001600160a01b0383811660008181526004602090815260408083208a8452825280832092909255905185815291928716917f046eaf385d820ef75f685f8367b758bb837cdd9266348c1e406e031e0509f89991015b60405180910390a35050505050565b3360009081526002602052604090205460ff1661066b5760405162461bcd60e51b815260040161029390611270565b6001600160a01b03851660009081526001602052604090205460ff166106a457604051633dd1b30560e01b815260040160405180910390fd5b6001600160a01b038316600090815260046020908152604080832089845290915290208290558015610700576001600160a01b03831660009081526005602090815260408083208984529091529020805460ff19168215151790555b6001600160a01b03841615610749576001600160a01b0383811660009081526006602090815260408083208a8452909152902080546001600160a01b0319169186169190911790555b826001600160a01b0316856001600160a01b03167f301aaa4fdc0778a315911e0bfa1cad16ec3e1bd7b16e69be4135ea58acd8110a8460405161078e91815260200190565b60405180910390a3505050505050565b6000546001600160a01b031633146107c85760405162461bcd60e51b81526004016102939061123b565b6001600160a01b038116600081815260016020818152604092839020805460ff19168317905591519081527f34ac012792c35155e23840f3aa5eac3d291082197efeacd6927e1c4c4c213da791016103a1565b6000546001600160a01b031633146108455760405162461bcd60e51b81526004016102939061123b565b6001600160a01b03811660009081526002602052604090205460ff16156108ae5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320697320616c72656164792041646d696e00000000000000006044820152606401610293565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600190811790915591519182527f79842df409f607e159442094a5666f13290ffc7c29bd2eabe52cb5a11bd42dc391016103a1565b6000546001600160a01b0316331461092f5760405162461bcd60e51b81526004016102939061123b565b6109396000610fb4565b565b6000546001600160a01b031633146109655760405162461bcd60e51b81526004016102939061123b565b6001600160a01b0381166000818152600160209081526040808320805460ff19169055519182527f5c40f9d37b61552ea2b523376fa41fa9d5b383c9532aa40ed2e31d741b1ac9e791016103a1565b3360009081526002602052604090205460ff166109e35760405162461bcd60e51b815260040161029390611270565b6001600160a01b038416600090815260036020908152604080832089845290915281205490819003610a285760405163f2a3e8db60e01b815260040160405180910390fd5b60075460405163ab36c17b60e01b81526001600160a01b03888116600483015287811660248301528681166044830152606482018690526101009092049091169063ab36c17b90608401600060405180830381600087803b158015610a8c57600080fd5b505af1158015610aa0573d6000803e3d6000fd5b505050506000821115610b225760075460405163b505c6ef60e01b81526001600160a01b0388811660048301528781166024830152604482018590526101009092049091169063b505c6ef90606401600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505050505b6001600160a01b0385811660008181526003602090815260408083208c84528252808320929092558151888516815290810187905291928916917f5185694dc63309e22772f1704656f3bb2384d5128d13abd3ceedcd801f6138df910160405180910390a350505050505050565b60075460ff161515600114610bdf5760405162461bcd60e51b815260206004820152601560248201527443726f737358206973206e6f742072756e6e696e6760581b6044820152606401610293565b6001600160a01b038116600090815260046020908152604080832086845290915281205490819003610c245760405163f2a3e8db60e01b815260040160405180910390fd5b6001600160a01b038083166000908152600660209081526040808320888452909152902054168015801590610c6257506001600160a01b0381163314155b15610c8057604051631580b5bd60e31b815260040160405180910390fd5b6001600160a01b0383811660008181526004602081815260408084208b8552825280842054600754868652600584528286208d87529093529381902054905163538c951160e01b81528a87169381019390935233602484015260448301949094526064820183905260ff9093161515608482015290926101009092049091169063538c95119060a401600060405180830381600087803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526004602090815260408083208b84528252808320929092558151928352820184905233928816917f82095ee254dc6cc5a12ddff16ee1a1764747711418b959a270b63a4fb8b0fe1e910161078e565b6000546001600160a01b03163314610dc45760405162461bcd60e51b81526004016102939061123b565b6007805460ff1916911515919091179055565b6000546001600160a01b03163314610e015760405162461bcd60e51b81526004016102939061123b565b6001600160a01b038116610e665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610293565b610e6f81610fb4565b50565b3360009081526002602052604090205460ff16610ea15760405162461bcd60e51b815260040161029390611270565b6001600160a01b038216600090815260036020908152604080832087845290915281205490819003610ee65760405163f2a3e8db60e01b815260040160405180910390fd5b60075460405163b505c6ef60e01b81526001600160a01b0386811660048301528581166024830152604482018590526101009092049091169063b505c6ef90606401600060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b505050506001600160a01b0383811660008181526003602090815260408083208a8452825280832092909255905185815291928716917f046eaf385d820ef75f685f8367b758bb837cdd9266348c1e406e031e0509f899910161062d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b8181101561103157858101830151858201604001528201611015565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461106957600080fd5b919050565b60006020828403121561108057600080fd5b61108982611052565b9392505050565b600080600080608085870312156110a657600080fd5b843593506110b660208601611052565b93969395505050506040820135916060013590565b600080600080608085870312156110e157600080fd5b843593506110f160208601611052565b92506110ff60408601611052565b9396929550929360600135925050565b8035801515811461106957600080fd5b60008060008060008060c0878903121561113857600080fd5b8635955061114860208801611052565b945061115660408801611052565b935061116460608801611052565b92506080870135915061117960a0880161110f565b90509295509295509295565b60008060008060008060c0878903121561119e57600080fd5b863595506111ae60208801611052565b94506111bc60408801611052565b93506111ca60608801611052565b92506080870135915060a087013590509295509295509295565b6000806000606084860312156111f957600080fd5b8335925061120960208501611052565b915061121760408501611052565b90509250925092565b60006020828403121561123257600080fd5b6110898261110f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526011908201527037b7363c9020b236b4b71030b1ba34b7b760791b60408201526060019056fea26469706673582212209d4c5c23d82d23eeff0714c9c5832ede4eaf6543a3906ac222592f95cc76cbcf64736f6c63430008130033