0x608060405234801561001057600080fd5b5060405161115938038061115983398101604081905261002f916100ae565b6001600160a01b0381166100895760405162461bcd60e51b815260206004820152601960248201527f636f6e74726f6c6c65722063616e6e6f74206265207a65726f00000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100de565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b61106c806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a1256f9f1161005b578063a1256f9f146100cf578063a2cab3a1146100f3578063c6c5e21c14610106578063f77c47911461010e57600080fd5b80631bf31828146100825780636bd1a72c1461008c57806392eefe9b146100bc575b600080fd5b61008a610121565b005b61009f61009a366004610326565b610169565b6040516001600160a01b0390911681526020015b60405180910390f35b61008a6100ca366004610326565b61022d565b6001546100e390600160a01b900460ff1681565b60405190151581526020016100b3565b60015461009f906001600160a01b031681565b61008a6102cf565b60005461009f906001600160a01b031681565b6000546001600160a01b031633146101545760405162461bcd60e51b815260040161014b90610356565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055565b600154600090600160a01b900460ff168061018e57506000546001600160a01b031633145b6101aa5760405162461bcd60e51b815260040161014b90610356565b816040516101b790610319565b6001600160a01b039091168152602001604051809103906000f0801580156101e3573d6000803e3d6000fd5b506040516001600160a01b038083168252919250908316907ff91a2130b45bdd9c3937405a2772e5cfb9a8753516c98b489bbfd12222611fa09060200160405180910390a2919050565b6001600160a01b0381166102835760405162461bcd60e51b815260206004820152601960248201527f636f6e74726f6c6c65722063616e6e6f74206265207a65726f00000000000000604482015260640161014b565b6000546001600160a01b031633146102ad5760405162461bcd60e51b815260040161014b90610356565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146102f95760405162461bcd60e51b815260040161014b90610356565b600180546001600160a01b03199081169091556000805490911633179055565b610cbd8061037a83390190565b60006020828403121561033857600080fd5b81356001600160a01b038116811461034f57600080fd5b9392505050565b6020808252600990820152683337b93134b23232b760b91b60408201526060019056fe608060405234801561001057600080fd5b50604051610cbd380380610cbd83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610c2a806100936000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806344ea559a1161005b57806344ea559a146100db578063a6f19c84146100f0578063cdc26e1c1461011b578063f40084b71461014657600080fd5b806305231dea14610082578063140d1fc6146100a8578063174e31c4146100c8575b600080fd5b6100956100903660046108e2565b61018a565b6040519081526020015b60405180910390f35b6100bb6100b6366004610935565b6101f0565b60405161009f91906109a1565b6100956100d63660046109e5565b6102c6565b6100ee6100e9366004610a0f565b6102ee565b005b600054610103906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6100956101293660046109e5565b600260209081526000928352604080842090915290825290205481565b61017a610154366004610a42565b600160209081526000938452604080852082529284528284209052825290205460ff1681565b604051901515815260200161009f565b6000805b828110156101d4576101b8858585848181106101ac576101ac610a7e565b905060200201356103e3565b6101c29083610aaa565b91506101cd81610abd565b905061018e565b506101e96001600160a01b038516338361062f565b9392505050565b60608367ffffffffffffffff81111561020b5761020b610ad6565b604051908082528060200260200182016040528015610234578160200160208202803683370190505b50905060005b848110156102bd5761029086868381811061025757610257610a7e565b905060200201602081019061026c9190610aec565b85858481811061027e5761027e610a7e565b90506020028101906100909190610b07565b8282815181106102a2576102a2610a7e565b60209081029190910101526102b681610abd565b905061023a565b50949350505050565b60006102d283836103e3565b90506102e86001600160a01b038416338361062f565b92915050565b6102fb62093a8042610b51565b82101561034f5760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f742061646420666f722070726576696f7573207765656b7300000060448201526064015b60405180910390fd5b6103646001600160a01b03841633308461074a565b6001600160a01b038316600090815260026020908152604080832085845290915281208054839290610397908490610aaa565b909155505060405181815282906001600160a01b0385169033907f464108cc474515e518612456d1896ac7329d978cfd2353a6ee0ecda7d27b2cd99060200160405180910390a4505050565b60006103f262093a8042610b51565b821061042a5760405162461bcd60e51b81526020600482015260076024820152661b9bdd081e595d60ca1b6044820152606401610346565b3360009081526001602090815260408083206001600160a01b0387168452825280832085845290915290205460ff16156104905760405162461bcd60e51b815260206004820152600760248201526618db185a5b595960ca1b6044820152606401610346565b6000805460405163277166bf60e11b8152336004820152602481018590526001600160a01b0390911690634ee2cd7e90604401602060405180830381865afa1580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105049190610b73565b60008054604051630981b24d60e41b81526004810187905292935090916001600160a01b039091169063981b24d090602401602060405180830381865afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105779190610b73565b6001600160a01b038616600090815260026020908152604080832088845290915290205490915081906105ab908490610b8c565b6105b59190610b51565b3360008181526001602081815260408084206001600160a01b038c168086529083528185208b8652835293819020805460ff1916909317909255905184815293965087939192917ffe7c5fc89da23a432c91f264decb100ab9d08ab7b14650c3cdb9b6b4f84a60e9910160405180910390a4505092915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161068b9190610ba3565b6000604051808303816000865af19150503d80600081146106c8576040519150601f19603f3d011682016040523d82523d6000602084013e6106cd565b606091505b50915091508180156106f75750805115806106f75750808060200190518101906106f79190610bd2565b6107435760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c6564006044820152606401610346565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916107ae9190610ba3565b6000604051808303816000865af19150503d80600081146107eb576040519150601f19603f3d011682016040523d82523d6000602084013e6107f0565b606091505b509150915081801561081a57508051158061081a57508080602001905181019061081a9190610bd2565b6108725760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b6064820152608401610346565b505050505050565b80356001600160a01b038116811461089157600080fd5b919050565b60008083601f8401126108a857600080fd5b50813567ffffffffffffffff8111156108c057600080fd5b6020830191508360208260051b85010111156108db57600080fd5b9250929050565b6000806000604084860312156108f757600080fd5b6109008461087a565b9250602084013567ffffffffffffffff81111561091c57600080fd5b61092886828701610896565b9497909650939450505050565b6000806000806040858703121561094b57600080fd5b843567ffffffffffffffff8082111561096357600080fd5b61096f88838901610896565b9096509450602087013591508082111561098857600080fd5b5061099587828801610896565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156109d9578351835292840192918401916001016109bd565b50909695505050505050565b600080604083850312156109f857600080fd5b610a018361087a565b946020939093013593505050565b600080600060608486031215610a2457600080fd5b610a2d8461087a565b95602085013595506040909401359392505050565b600080600060608486031215610a5757600080fd5b610a608461087a565b9250610a6e6020850161087a565b9150604084013590509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156102e8576102e8610a94565b600060018201610acf57610acf610a94565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610afe57600080fd5b6101e98261087a565b6000808335601e19843603018112610b1e57600080fd5b83018035915067ffffffffffffffff821115610b3957600080fd5b6020019150600581901b36038213156108db57600080fd5b600082610b6e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610b8557600080fd5b5051919050565b80820281158282048414176102e8576102e8610a94565b6000825160005b81811015610bc45760208186018101518583015201610baa565b506000920191825250919050565b600060208284031215610be457600080fd5b815180151581146101e957600080fdfea264697066735822122021f4a51846f755ed4622ebcfcef076b5cd20bee128669e6b320290e1ae8992ab64736f6c63430008110033a2646970667358221220510f334e1b2f21b14e72751114f6b1cc12421aaf6655e0960f6bf7048d7ba52e64736f6c634300081100330000000000000000000000009c1da1ea058a2aa38689703b3ca78eab10552101