60806040526004805461ffff191661120017905534801561001f57600080fd5b50604051604080610b8083398101604052805160209091015160008054600160a060020a031916331790556003546100649082640100000000610a5f6100ba82021704565b600355600160a060020a0382166000908152600260205260409020546100979082640100000000610a5f6100ba82021704565b600160a060020a03909216600090815260026020526040902091909155506100d0565b6000828201838110156100c957fe5b9392505050565b610aa1806100df6000396000f3006080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100df578063095ea7b31461010857806313af40351461012c57806318160ddd1461014f57806323b872dd14610176578063313ce567146101a057806340c10f19146101cb57806366188463146101ef57806370a08231146102135780637d64bcb4146102345780638da5cb5b1461024957806395d89b411461027a578063a9059cbb14610304578063d73dd62314610328578063dd62ed3e1461034c575b600080fd5b3480156100eb57600080fd5b506100f4610373565b604080519115158252519081900360200190f35b34801561011457600080fd5b506100f4600160a060020a036004351660243561037c565b34801561013857600080fd5b5061014d600160a060020a03600435166103e2565b005b34801561015b57600080fd5b50610164610461565b60408051918252519081900360200190f35b34801561018257600080fd5b506100f4600160a060020a0360043581169060243516604435610467565b3480156101ac57600080fd5b506101b56105e0565b6040805160ff9092168252519081900360200190f35b3480156101d757600080fd5b506100f4600160a060020a03600435166024356105ee565b3480156101fb57600080fd5b506100f4600160a060020a03600435166024356106f1565b34801561021f57600080fd5b50610164600160a060020a03600435166107e1565b34801561024057600080fd5b506100f46107fc565b34801561025557600080fd5b5061025e610860565b60408051600160a060020a039092168252519081900360200190f35b34801561028657600080fd5b5061028f61086f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c95781810151838201526020016102b1565b50505050905090810190601f1680156102f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031057600080fd5b506100f4600160a060020a03600435166024356108a6565b34801561033457600080fd5b506100f4600160a060020a0360043516602435610989565b34801561035857600080fd5b50610164600160a060020a0360043581169060243516610a22565b60045460ff1681565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a031633146103f957600080fd5b60008054604051600160a060020a03808516939216917fcbf985117192c8f614a58aaf97226bb80a754772f5f6edf06f87c675f2e6c66391a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035490565b6000600160a060020a038316151561047e57600080fd5b600160a060020a0384166000908152600260205260409020548211156104a357600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020548211156104d357600080fd5b600160a060020a0384166000908152600260205260409020546104fc908363ffffffff610a4d16565b600160a060020a038086166000908152600260205260408082209390935590851681522054610531908363ffffffff610a5f16565b600160a060020a038085166000908152600260209081526040808320949094559187168152600182528281203382529091522054610575908363ffffffff610a4d16565b600160a060020a03808616600081815260016020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600454610100900460ff1681565b60008054600160a060020a0316331461060657600080fd5b60045460ff161561061657600080fd5b600354610629908363ffffffff610a5f16565b600355600160a060020a038316600090815260026020526040902054610655908363ffffffff610a5f16565b600160a060020a038416600081815260026020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b336000908152600160209081526040808320600160a060020a03861684529091528120548083111561074657336000908152600160209081526040808320600160a060020a038816845290915281205561077b565b610756818463ffffffff610a4d16565b336000908152600160209081526040808320600160a060020a03891684529091529020555b336000818152600160209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526002602052604090205490565b60008054600160a060020a0316331461081457600080fd5b60045460ff161561082457600080fd5b6004805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a031681565b60408051808201909152600381527f4441490000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156108bd57600080fd5b336000908152600260205260409020548211156108d957600080fd5b336000908152600260205260409020546108f9908363ffffffff610a4d16565b3360009081526002602052604080822092909255600160a060020a0385168152205461092b908363ffffffff610a5f16565b600160a060020a0384166000818152600260209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b336000908152600160209081526040808320600160a060020a03861684529091528120546109bd908363ffffffff610a5f16565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600082821115610a5957fe5b50900390565b600082820183811015610a6e57fe5b93925050505600a165627a7a7230582017a95ce0804e2df510a4571916f2020ea5b0f0453aa221c7659a9bde3131fc71002900000000000000000000000054ac16e1ad06dca13af18c1a6aaa05de8c4842c00000000000000000000000000000000000000000000422ca8b0a00a425000003