0x608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c8063aa3aa4601161006e578063aa3aa460146101b8578063c657c6a5146101c0578063c7267e831461025a578063cd80557e1461026d578063e32e13eb14610280578063f1855381146102a7575f5ffd5b80630986d05d146100b55780630abfc517146100db5780630cd55abf146101215780632860ff75146101405780636caacff3146101715780638c069799146101ae575b5f5ffd5b6100c86100c3366004610a2e565b6102e3565b6040519081526020015b60405180910390f35b61010c6100e9366004610a71565b600160208181525f93845260408085209091529183529120805491015460ff1682565b604080519283529015156020830152016100d2565b6100c861012f366004610a99565b5f6020819052908152604090205481565b610164604051806040016040528060058152602001645156502d3160d81b81525081565b6040516100d29190610ab9565b61019e61017f366004610a71565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100d2565b6101b66103b6565b005b6100c8600181565b61021f6101ce366004610a71565b600260208181525f9384526040808520909152918352912080546001820154928201546003909201549092919067ffffffffffffffff8116906801000000000000000090046001600160a01b031685565b6040805195865260208601949094529284019190915267ffffffffffffffff1660608301526001600160a01b0316608082015260a0016100d2565b6101b6610268366004610b04565b610482565b6101b661027b366004610b76565b6108d1565b6100c87fc07ec8207800d009757582016b4dd37958564364c3736e35cd6e96ad07da2e0581565b6101646040518060400160405280601d81526020017f5175616e74756d20566572696669636174696f6e2050726f746f636f6c00000081525081565b6001600160a01b0384165f908152600160209081526040808320868452909152812054806103245760405163815589fb60e01b815260040160405180910390fd5b604080517fc07ec8207800d009757582016b4dd37958564364c3736e35cd6e96ad07da2e05602082015246918101919091523060608201526001600160a01b038716608082015260a0810186905260c0810185905267ffffffffffffffff841660e082015261010081018290526101200160405160208183030381529060405280519060200120915050949350505050565b335f90815260208181526040808320546001835281842081855290925290912080546103f55760405163815589fb60e01b815260040160405180910390fd5b600181015460ff161561041b57604051630f3cb48d60e11b815260040160405180910390fd5b6001818101805460ff191682179055610435908390610ba1565b335f8181526020818152604091829020939093558354905190815284927fc51660aa5a85f27d0e326440ae2334abea2c4b5c260187685b06f2b5b557a55991015b60405180910390a35050565b6001600160a01b0386165f9081526001602081815260408084208985529091529091209081015460ff16156104ca57604051630f3cb48d60e11b815260040160405180910390fd5b6001600160a01b0387165f908152602081905260409020548681146105115760405163a3c996d360e01b815260048101829052602481018890526044015b60405180910390fd5b81546105305760405163815589fb60e01b815260040160405180910390fd5b8561054e57604051630b8fc7cd60e21b815260040160405180910390fd5b428567ffffffffffffffff16101561058b576040516324730def60e21b815267ffffffffffffffff86166004820152426024820152604401610508565b815460405161059e908690602001610bba565b60405160208183030381529060405280519060200120146105d2576040516385f83a9760e01b815260040160405180910390fd5b5f6105df898989896102e3565b90505f5b61010081101561071d575f6105f9826002610bca565b905086610607826001610ba1565b610200811061061857610618610be1565b60200201358782610200811061063057610630610be1565b60200201350361065657604051631da1d13560e31b815260048101839052602401610508565b5f610662600884610c09565b61066d906007610c1c565b84610679600886610c2f565b6020811061068957610689610be1565b1a901c60011690508761069c8284610ba1565b61020081106106ad576106ad610be1565b6020020135878461010081106106c5576106c5610be1565b60200201356040516020016106dc91815260200190565b6040516020818303038152906040528051906020012014610713576040516323417db560e21b815260048101849052602401610508565b50506001016105e3565b506001838101805460ff191682179055610738908990610ba1565b6001600160a01b038a165f908152602081815260408083209390935591519091610766918891889101610c42565b6040516020818303038152906040528051906020012090506040518060a001604052808981526020018381526020018281526020014267ffffffffffffffff168152602001336001600160a01b031681525060025f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8b81526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050336001600160a01b0316898b6001600160a01b03167f41e192d35c13db18b32a88cec7413c1632f3e47d6e703c2324e7dcd497756d418b86866040516108bd939291909283526020830191909152604082015260600190565b60405180910390a450505050505050505050565b806108ef57604051635560fe6360e11b815260040160405180910390fd5b335f908152602081815260408083205460018352818420818552909252909120541561092e57604051630c7bc20160e11b815260040160405180910390fd5b335f90815260036020908152604080832085845290915290205460ff161561096957604051636e64093360e01b815260040160405180910390fd5b335f81815260036020908152604080832086845282528083208054600160ff199182168117909255825180840184528881528085018681528787528386528487208988528652958490209051815594519490910180549091169315159390931790925590518481528392917f5ab6098d5858572691e43544085d822b2cd7fd3760e9b8c58defe6ff77d819c09101610476565b80356001600160a01b0381168114610a12575f5ffd5b919050565b803567ffffffffffffffff81168114610a12575f5ffd5b5f5f5f5f60808587031215610a41575f5ffd5b610a4a856109fc565b93506020850135925060408501359150610a6660608601610a17565b905092959194509250565b5f5f60408385031215610a82575f5ffd5b610a8b836109fc565b946020939093013593505050565b5f60208284031215610aa9575f5ffd5b610ab2826109fc565b9392505050565b602081525f82518060208401525f5b81811015610ae55760208186018101516040868401015201610ac8565b505f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f5f5f6160808789031215610b1a575f5ffd5b610b23876109fc565b95506020870135945060408701359350610b3f60608801610a17565b9250614080870188811115610b52575f5ffd5b6080880192508861608089011115610b68575f5ffd5b809150509295509295509295565b5f60208284031215610b86575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610bb457610bb4610b8d565b92915050565b6140008181019083833792915050565b8082028115828204841417610bb457610bb4610b8d565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f82610c1757610c17610bf5565b500690565b81810381811115610bb457610bb4610b8d565b5f82610c3d57610c3d610bf5565b500490565b616000810161400084833761200083614000840137939250505056fea264697066735822122008cddfe404869ad3e365b359193aa715a746cddd4132db63bea25f2621bb749c64736f6c634300081e0033
