60806040523480156200001157600080fd5b5060408051808201825260108082526f2234bb34b232b7322faa3930b1b5b2b960811b602080840182905284518086019095529184529083015290818160036200005c83826200018b565b5060046200006b82826200018b565b50505062000088620000826200009060201b60201c565b62000094565b505062000257565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011157607f821691505b6020821081036200013257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018657600081815260208120601f850160051c81016020861015620001615750805b601f850160051c820191505b8181101562000182578281556001016200016d565b5050505b505050565b81516001600160401b03811115620001a757620001a7620000e6565b620001bf81620001b88454620000fc565b8462000138565b602080601f831160018114620001f75760008415620001de5750858301515b600019600386901b1c1916600185901b17855562000182565b600085815260208120601f198616915b82811015620002285788860151825594840194600190910190840162000207565b5085821015620002475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61182a80620002676000396000f3fe608060405234801561001057600080fd5b50600436106101805760003560e01c80630483f7a01461018557806306fdde031461019a578063095ea7b3146101b857806318160ddd146101db578063226cfa3d146101ed57806323b872dd1461020d57806327ce014714610220578063313ce567146102335780633243c7911461024257806339509351146102555780633b36a1d71461026857806344b6bd9e1461027b578063497ec8231461028e5780634e7b827f146102a15780636a474002146102c457806370a08231146102cc578063715018a6146102df578063807ab4f7146102e757806385a6b3ae146102fa5780638da5cb5b1461030357806391b89fba1461031857806395d89b411461032b5780639e1e066114610333578063a457c2d71461033c578063a8b9d2401461034f578063a9059cbb14610362578063aafd847a14610375578063dceeeae01461039e578063dd62ed3e146103b1578063e30443bc146103c4578063f2fde38b146103d7578063fbcbc0f1146103ea575b600080fd5b6101986101933660046114d2565b61042f565b005b6101a26104fd565b6040516101af919061150b565b60405180910390f35b6101cb6101c6366004611560565b61058f565b60405190151581526020016101af565b6002545b6040519081526020016101af565b6101df6101fb36600461158c565b600d6020526000908152604090205481565b6101cb61021b3660046115a9565b6105a9565b6101df61022e36600461158c565b6105cd565b604051601281526020016101af565b6101986102503660046115ea565b610626565b6101cb610263366004611560565b6106c2565b61019861027636600461158c565b6106e4565b61019861028936600461158c565b610798565b61019861029c366004611603565b6107c2565b6101cb6102af36600461158c565b600c6020526000908152604090205460ff1681565b6101986108a6565b6101df6102da36600461158c565b6108af565b6101986108ca565b6101cb6102f536600461158c565b6108de565b6101df600a5481565b61030b610962565b6040516101af9190611631565b6101df61032636600461158c565b610971565b6101a261097c565b6101df600b5481565b6101cb61034a366004611560565b61098b565b6101df61035d36600461158c565b610a06565b6101cb610370366004611560565b610a32565b6101df61038336600461158c565b6001600160a01b031660009081526009602052604090205490565b60065461030b906001600160a01b031681565b6101df6103bf366004611603565b610a40565b6101986103d2366004611560565b610a6b565b6101986103e536600461158c565b610a9d565b6103fd6103f836600461158c565b610b13565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0016101af565b610437610bbb565b6001600160a01b0382166000908152600c602052604090205481151560ff90911615150361046457600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215159081179091556001036104a25761049d826000610c1a565b6104b4565b6104b4826104af846108af565b610c1a565b816001600160a01b03167fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be826040516104f1911515815260200190565b60405180910390a25050565b60606003805461050c90611645565b80601f016020809104026020016040519081016040528092919081815260200182805461053890611645565b80156105855780601f1061055a57610100808354040283529160200191610585565b820191906000526020600020905b81548152906001019060200180831161056857829003601f168201915b5050505050905090565b60003361059d818585610c6d565b60019150505b92915050565b6000336105b7858285610d91565b6105c2858585610e05565b506001949350505050565b6001600160a01b038116600090815260086020526040812054600160801b9061061c906106179061061161060c610603886108af565b60075490610e5c565b610ee5565b90610ef5565b610f33565b6105a39190611695565b61062e610bbb565b600061063960025490565b1161064357600080fd5b80156106bf5761067661065560025490565b61066383600160801b610e5c565b61066d9190611695565b60075490610f46565b60075560405181815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2600a546106bb9082610f46565b600a555b50565b60003361059d8185856106d58383610a40565b6106df91906116b7565b610c6d565b6106ec610bbb565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610739576040519150601f19603f3d011682016040523d82523d6000602084013e61073e565b606091505b50509050806107945760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420457468657220746f2077616c6c6574000060448201526064015b60405180910390fd5b5050565b6107a0610bbb565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6107ca610bbb565b6040516370a0823160e01b81526001600160a01b0382169063a9059cbb90849083906370a0823190610800903090600401611631565b602060405180830381865afa15801561081d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084191906116cf565b6040518363ffffffff1660e01b815260040161085e9291906116e8565b6020604051808303816000875af115801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a19190611701565b505050565b6106bf33610fa3565b6001600160a01b031660009081526020819052604090205490565b6108d2610bbb565b6108dc600061112f565b565b60006108e8610bbb565b60006108f383610fa3565b90508015610959576001600160a01b0383166000818152600d602052604090819020429055517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4906109489084815260200190565b60405180910390a250600192915050565b50600092915050565b6005546001600160a01b031690565b60006105a382610a06565b60606004805461050c90611645565b600033816109998286610a40565b9050838110156109f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078b565b6105c28286868403610c6d565b6001600160a01b0381166000908152600960205260408120546105a390610a2c846105cd565b90611181565b60003361059d818585610e05565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a73610bbb565b6001600160a01b0382166000908152600c602052604090205460ff16610794576107948282610c1a565b610aa5610bbb565b6001600160a01b038116610b0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b6106bf8161112f565b6000806000806000610b4f604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b6001600160a01b0387168152610b6487610a06565b6020820152610b72876105cd565b60408281019182526001600160a01b03989098166000908152600d60209081529890205460608301819052825198909201519051600b5498999198909750919550909350915050565b33610bc4610962565b6001600160a01b0316146108dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161078b565b6000610c25836108af565b905080821115610c4d576000610c3b8383611181565b9050610c4784826111c3565b50505050565b808210156108a1576000610c618284611181565b9050610c478482611227565b6001600160a01b038316610ccf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078b565b6001600160a01b038216610d305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610d9d8484610a40565b90506000198114610c475781811015610df85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078b565b610c478484848403610c6d565b60405162461bcd60e51b815260206004820152602660248201527f4469766964656e645f547261636b65723a204e6f207472616e736665727320616044820152651b1b1bddd95960d21b606482015260840161078b565b600082600003610e6e575060006105a3565b6000610e7a838561171e565b905082610e878583611695565b14610ede5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078b565b9392505050565b600081818112156105a357600080fd5b600080610f02838561173d565b905060008312158015610f155750838112155b80610f2a5750600083128015610f2a57508381125b610ede57600080fd5b600080821215610f4257600080fd5b5090565b600080610f5383856116b7565b905083811015610ede5760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161078b565b600080610faf83610a06565b90508015610959576001600160a01b038316600090815260096020526040902054610fda9082610f46565b6001600160a01b038416600090815260096020526040812091909155600b80548392906110089084906116b7565b90915550506040518181526001600160a01b038416907fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d9060200160405180910390a260065460405163a9059cbb60e01b81526000916001600160a01b03169063a9059cbb9061107e90879086906004016116e8565b6020604051808303816000875af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190611701565b905080611128576001600160a01b0384166000908152600960205260409020546110eb9083611181565b6001600160a01b038516600090815260096020526040812091909155600b805484929061111990849061177e565b90915550600095945050505050565b5092915050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610ede83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061126b565b6111cd82826112a5565b6112076111e861060c83600754610e5c90919063ffffffff16565b6001600160a01b03841660009081526008602052604090205490611352565b6001600160a01b0390921660009081526008602052604090209190915550565b611231828261138f565b61120761124c61060c83600754610e5c90919063ffffffff16565b6001600160a01b03841660009081526008602052604090205490610ef5565b6000818484111561128f5760405162461bcd60e51b815260040161078b919061150b565b50600061129c848661177e565b95945050505050565b6001600160a01b0382166112fb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161078b565b806002600082825461130d91906116b7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481526000805160206117d5833981519152910160405180910390a35050565b60008061135f8385611795565b9050600083121580156113725750838113155b80610f2a5750600083128015610f2a5750838113610ede57600080fd5b6001600160a01b0382166113ef5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078b565b6001600160a01b038216600090815260208190526040902054818110156114635760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206117d5833981519152910160405180910390a3505050565b6001600160a01b03811681146106bf57600080fd5b80151581146106bf57600080fd5b600080604083850312156114e557600080fd5b82356114f0816114af565b91506020830135611500816114c4565b809150509250929050565b600060208083528351808285015260005b818110156115385785810183015185820160400152820161151c565b8181111561154a576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561157357600080fd5b823561157e816114af565b946020939093013593505050565b60006020828403121561159e57600080fd5b8135610ede816114af565b6000806000606084860312156115be57600080fd5b83356115c9816114af565b925060208401356115d9816114af565b929592945050506040919091013590565b6000602082840312156115fc57600080fd5b5035919050565b6000806040838503121561161657600080fd5b8235611621816114af565b91506020830135611500816114af565b6001600160a01b0391909116815260200190565b600181811c9082168061165957607f821691505b60208210810361167957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000826116b257634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156116ca576116ca61167f565b500190565b6000602082840312156116e157600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561171357600080fd5b8151610ede816114c4565b60008160001904831182151516156117385761173861167f565b500290565b600080821280156001600160ff1b038490038513161561175f5761175f61167f565b600160ff1b83900384128116156117785761177861167f565b50500190565b6000828210156117905761179061167f565b500390565b60008083128015600160ff1b8501841216156117b3576117b361167f565b6001600160ff1b03840183138116156117ce576117ce61167f565b5050039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122005c7506b49a663815460364cba7d99cce9d14e2248d27170e4c0b68f40d2427d64736f6c634300080f0033