60806040819052664ff1aaf3af109e600b55668e1bc9bf040000600c55600080546001600160a01b031916339081178255918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03199182161790915560028054735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9216821790556040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015263c9c6539690604401602060405180830381600087803b1580156100f257600080fd5b505af1158015610106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012a9190610211565b600380546001600160a01b0319166001600160a01b03928316179055600b546000805483168152600660205260408120919091555416600480546001600160a01b0319166001600160a01b0392831690811790915560035482166000908152600760209081526040808320938352928152828220600019905581548416825260059052908120805460ff1916600117905554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b5460405161020491815260200190565b60405180910390a3610241565b60006020828403121561022357600080fd5b81516001600160a01b038116811461023a57600080fd5b9392505050565b61152c806102506000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806352390c02116100b8578063a8aa1b311161007c578063a8aa1b311461030c578063a9059cbb1461031f578063b59c097414610332578063dd62ed3e1461033a578063e6bd7ed114610373578063ee97f7f31461038657600080fd5b806352390c021461026c57806370a082311461027f57806383d972f9146102a85780638da5cb5b146102c857806395d89b41146102ed57600080fd5b80632782e35b1161010a5780632782e35b146101e1578063313ce567146102045780633685d419146102135780633b24c4bb146102265780633fb5c1cb1461024657806342966c681461025957600080fd5b806306fdde0314610147578063095ea7b31461018457806318160ddd146101a757806323b872dd146101b957806326fae0d3146101cc575b600080fd5b60408051808201909152600f81526e4d797374696b6f204e6574776f726b60881b60208201525b60405161017b919061126c565b60405180910390f35b6101976101923660046112d9565b610399565b604051901515815260200161017b565b600b545b60405190815260200161017b565b6101976101c7366004611305565b6103af565b6101df6101da366004611346565b610477565b005b6101976101ef366004611346565b60056020526000908152604090205460ff1681565b6040516006815260200161017b565b6101df610221366004611346565b610501565b6101ab610234366004611346565b600a6020526000908152604090205481565b6101df610254366004611363565b61053c565b6101df610267366004611363565b61056b565b6101df61027a366004611346565b6105fc565b6101ab61028d366004611346565b6001600160a01b031660009081526006602052604090205490565b6101ab6102b6366004611346565b60096020526000908152604090205481565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017b565b604080518082019091526003815262585a4b60e81b602082015261016e565b6003546102d5906001600160a01b031681565b61019761032d3660046112d9565b610634565b6101df610651565b6101ab61034836600461137c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101df610381366004611363565b6106d2565b6004546102d5906001600160a01b031681565b60006103a633848461075b565b50600192915050565b60006103bc848484610880565b1561046c576001600160a01b03841660009081526007602090815260408083203384529091529020548281101561044b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610456858585610980565b61046a853361046586856113cb565b61075b565b505b5060015b9392505050565b6000546001600160a01b031633146104a15760405162461bcd60e51b8152600401610442906113e2565b600380546001600160a01b039081166000908152600760208181526040808420600480548716865290835281852085905580546001600160a01b031916978616978817905594549093168252825282812093815292905290206000199055565b6004546001600160a01b0316331461051857600080fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146105665760405162461bcd60e51b8152600401610442906113e2565b600c55565b6000546001600160a01b031633146105955760405162461bcd60e51b8152600401610442906113e2565b80600660006105ac6000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546105db91906113cb565b9250508190555080600b60008282546105f491906113cb565b909155505050565b6004546001600160a01b0316331461061357600080fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000610641338484610880565b156103a6576103a6338484610980565b6004546001600160a01b0316331461066857600080fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106b857600080fd5b505af11580156106cc573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146106fc5760405162461bcd60e51b8152600401610442906113e2565b80600660006107136000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546107429190611417565b9250508190555080600b60008282546105f49190611417565b6001600160a01b0383166107bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610442565b6001600160a01b03821661081e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610442565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526005602052604081205460ff16806108bf57506001600160a01b03831660009081526005602052604090205460ff165b156108cc57506001610470565b6108d584610b69565b806108e457506108e483610b69565b156108f157506000610470565b6108fa84610e28565b1561090757506001610470565b61091083610e28565b1561046c57600061092083610e5a565b6001600160a01b0386166000908152600860209081526040808320546009835281842054600a909352922054929350909161095b8683611417565b8310158015610975575061096f8482611417565b600c5410155b945050505050610470565b6001600160a01b0383166109e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610442565b6001600160a01b038216610a465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610442565b610a518383836110f2565b6001600160a01b038316600090815260066020526040902054811115610ac85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610442565b6001600160a01b03831660009081526006602052604081208054839290610af09084906113cb565b90915550506001600160a01b03821660009081526006602052604081208054839290610b1d908490611417565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161087391815260200190565b60006001600160a01b0382163b610b8257506000919050565b60008290506000806000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610bc557600080fd5b505afa925050508015610bf5575060408051601f3d908101601f19168201909252610bf29181019061142f565b60015b610c36573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b506000979650505050505050565b9250836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7157600080fd5b505afa925050508015610ca1575060408051601f3d908101601f19168201909252610c9e9181019061142f565b60015b610ccf573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b9150836001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0a57600080fd5b505afa925050508015610d3a575060408051601f3d908101601f19168201909252610d379181019061144c565b60015b610d68573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b604051630b4c774160e11b81526001600160a01b0380861660048301528416602482015262ffffff82166044820152909150731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829060640160206040518083038186803b158015610dd157600080fd5b505afa158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061142f565b6001600160a01b0316866001600160a01b031614945050505050919050565b6001546000906001600160a01b0383811691161480610e5457506003546001600160a01b038381169116145b92915050565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610ead57600080fd5b505afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee5919061148d565b506001600160701b031691506001600160701b03169150600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4a57600080fd5b505afa158015610f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f82919061142f565b6001600160a01b0316600360009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611011919061142f565b6001600160a01b031614156110b357600154604051630153543560e21b81526004810186905260248101839052604481018490526001600160a01b039091169063054d50d4906064015b60206040518083038186803b15801561107357600080fd5b505afa158015611087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ab91906114dd565b949350505050565b600154604051630153543560e21b81526004810186905260248101849052604481018390526001600160a01b039091169063054d50d49060640161105b565b6110fa6111b3565b156111ae5761110883610e28565b1561113b576001600160a01b03821660009081526008602052604081208054839290611135908490611417565b90915550505b61114482610e28565b156111ae576001600160a01b03831660009081526009602052604081208054839290611171908490611417565b90915550611180905081610e5a565b6001600160a01b0384166000908152600a6020526040812080549091906111a8908490611417565b90915550505b505050565b6000806000600360009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e919061148d565b506001600160701b031691506001600160701b031691506000821180156112655750600081115b9250505090565b600060208083528351808285015260005b818110156112995785810183015185820160400152820161127d565b818111156112ab576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146112d657600080fd5b50565b600080604083850312156112ec57600080fd5b82356112f7816112c1565b946020939093013593505050565b60008060006060848603121561131a57600080fd5b8335611325816112c1565b92506020840135611335816112c1565b929592945050506040919091013590565b60006020828403121561135857600080fd5b8135610470816112c1565b60006020828403121561137557600080fd5b5035919050565b6000806040838503121561138f57600080fd5b823561139a816112c1565b915060208301356113aa816112c1565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156113dd576113dd6113b5565b500390565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561142a5761142a6113b5565b500190565b60006020828403121561144157600080fd5b8151610470816112c1565b60006020828403121561145e57600080fd5b815162ffffff8116811461047057600080fd5b80516001600160701b038116811461148857600080fd5b919050565b6000806000606084860312156114a257600080fd5b6114ab84611471565b92506114b960208501611471565b9150604084015163ffffffff811681146114d257600080fd5b809150509250925092565b6000602082840312156114ef57600080fd5b505191905056fea264697066735822122036a7174d20c0ca6bee04c1af3c290a490ea5f02473062ce8698893147fb6e1bf64736f6c63430008090033