日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线程中task取消_Rust Async: async-task源码分析

發布時間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程中task取消_Rust Async: async-task源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

async-std是rust異步生態中的基礎運行時庫之一,核心理念是合理的性能 + 用戶友好的api體驗。經過幾個月密集的開發,前些天已經發布1.0穩定版本。因此是時候來一次深入的底層源碼分析。async-std的核心是一個帶工作竊取的多線程Executor,而其本身的實現又依賴于async-task這個關鍵庫,因此本文主要對async-task的源碼進行分析。

當Future提交給Executor執行時,Executor需要在堆上為這個Future分配空間,同時需要給它分配一些狀態信息,比如Future是否可以執行(poll),是否在等待被喚醒,是否已經執行完成等等。我們一般把提交給Executor執行的Future和其連帶的狀態稱為 task。async-task這個庫就是對task進行抽象封裝,以便于Executor的實現,其有幾個創新的特性:

  • 整個task只需要一次內存分配;
  • 完全隱藏了RawWaker,以避免實現Executor時處理unsafe代碼的麻煩;
  • 提供了 JoinHandle,這樣spawn函數對Future沒有 Output=()的限制,極大方便用戶使用;
  • 使用方式

    async-task只對外暴露了一個函數接口以及對應了兩個返回值類型:

    pub fn spawn<F, R, S, T>(future: F, schedule: S, tag: T) -> (Task<T>, JoinHandle<R, T>) whereF: Future<Output = R> + Send + 'static,R: Send + 'static,S: Fn(Task<T>) + Send + Sync + 'static,T: Send + Sync + 'static,

    其中,參數future表示要執行的Future,schedule是一個閉包,當task變為可執行狀態時會調用這個函數以調度該task重新執行,tag是附帶在該task上的額外上下文信息,比如task的名字,id等。 返回值Task就是構造好的task對象,JoinHandle實現了Future,用于接收最終執行的結果。

    值得注意的是spawn這個函數并不會做類似在后臺進行計算的操作,而僅僅是分配內存,創建一個task出來,因此其實叫create_task反而更為恰當且好理解。

    Task提供了如下幾個方法:

    // 對該task進行調度pub fn schedule(self);// poll一次內部的Future,如果Future完成了,則會通知JoinHandle取結果。否則task進// 入等待,直到被被下一次喚醒進行重新調度執行。pub fn run(self);// 取消task的執行pub fn cancel(&self);// 返回創建時傳入的tag信息pub fn tag(&self) -> &T;

    JoinHandle實現了Future trait,同時也提供了如下幾個方法:

    // 取消task的執行pub fn cancel(&self);// 返回創建時傳入的tag信息pub fn tag(&self) -> &T;

    同時,Task和JoinHandle都實現了Send+Sync,所以他們可以出現在不同的線程,并通過tag方法可以同時持有 &T,因此spawn函數對T有Sync的約束。

    借助于async_task的抽象,下面的幾十行代碼就實現了一個共享全局任務隊列的多線程Executor:

    use std::future::Future; use std::thread;use crossbeam::channel::{unbounded, Sender}; use futures::executor; use once_cell::sync::Lazy;static QUEUE: Lazy<Sender<async_task::Task<()>>> = Lazy::new(|| {let (sender, receiver) = unbounded::<async_task::Task<()>>();for _ in 0..4 {let recv = receiver.clone();thread::spawn(|| {for task in recv {task.run(); }});}sender });fn spawn<F, R>(future: F) -> async_task::JoinHandle<R, ()> whereF: Future<Output = R> + Send + 'static,R: Send + 'static, {let schedule = |task| QUEUE.send(task).unwrap();let (task, handle) = async_task::spawn(future, schedule, ());task.schedule();handle }fn main() {let handles: Vec<_> = (0..10).map(|i| {spawn(async move {println!("Hello from task {}", i);})}).collect();// Wait for the tasks to finish.for handle in handles {executor::block_on(handle);} }

    Task的結構圖

    通常rust里的并發數據結構會包含底層的實現,一般叫Inner或者RawXXX,包含大量裸指針等unsafe操作,然后再其基礎上進行類型安全包裝,提供上層語義。比如channel,上層暴露出 Sender和 Receiver,其行為不一樣,但內部表示是完全一樣的。async-task也類似,JoinHandle, Task以及調用Future::poll時傳遞的Waker類型內部都共享同一個RawTask結構。由于JoinHandle本身是一個Future,整個并發結構還有第四個角色-在JoinHandle上調用poll的task傳遞的Waker,為避免引起混淆就稱它為Awaiter吧。整個的結構圖大致如下:

    整個task在堆上一次分配,內存布局按Header,Tag, Schedule,Future/Output排列。由于Future和Output不同時存在,因此他們共用同一塊內存。

    • JoinHandle:只有一個,不訪問Future,可以訪問Output,一旦銷毀就不再生成;
    • Task:主要訪問Future,銷毀后可以繼續生成,不過同一時間最多只有一個,這樣可以避免潛在的多個Task對Future進行并發訪問的bug;
    • Waker:可以存在多份,主要訪問schedule數據,由于spawn函數的參數要求schedule必須是Send+Sync,因此多個waker并發調用是安全的。
    • Header:本身包含三個部分,state是一個原子變量,包含引用計數,task的執行狀態,awaiter鎖等信息;awaiter保存的是JoinHandle所在的task執行時傳遞的Waker,用于當Output生成后通知JoinHandle來取;vtable是一個指向靜態變量的虛表指針。

    task中的狀態

    所有的并發操作都是通過Header中的state這個原子變量來進行同步協調的。主要有以下幾種flag:

  • constSCHEDULED:usize=1<<0; task已經調度準備下一次執行,這個flag可以和RUNGING同時存在。
  • constRUNNING:usize=1<<1; 這個task正在執行中,這個flag可以和SCHEDULED同時存在。
  • constCOMPLETED:usize=1<<2; 這個task的future已經執行完成。
  • constCLOSED:usize=1<<3; 表示這個task要么被cancel掉了,要么output被JoinHandle取走了,是一個終結狀態。
  • constHANDLE:usize=1<<4; 表示JoinHandle存在。
  • constAWAITER:usize=1<<5; 表示JoinHandle正在等待Output,用于快速判斷Header里的awaiter不為None,避免獲取鎖的操作。
  • constLOCKED:usize=1<<6; 讀寫Header里的awaiter時,需要設置這個字段,標識是否處于locked狀態。
  • constREFERENCE:usize=1<<7; 從第7bit開始到最高位當作引用計數用,代表Task和Waker的總數,主要JoinHandle在HANDLE的flag里跟蹤。
  • JoinHandle的實現分析

    JoinHandle::cancel

    為避免并發問題,JoinHandle不接觸Future數據,而由于取消task的執行需要析構Future數據,因此cancel操作通過重新schedule一次,把操作傳遞給Task執行。

    impl<R, T> JoinHandle<R, T> {pub fn cancel(&self) {let ptr = self.raw_task.as_ptr();let header = ptr as *const Header;unsafe {let mut state = (*header).state.load(Ordering::Acquire);loop {// 如果task已經結束或者closed,什么也不做。if state & (COMPLETED | CLOSED) != 0 {break;}let new = if state & (SCHEDULED | RUNNING) == 0 {// 如果不處于scheduled或running狀態,那么下面就需要調用schedule// 函數通知Task,因此要加上SCHEDULED 和增加引用計數(state | SCHEDULED | CLOSED) + REFERENCE} else {// 否則要么task已經schedue過了,過段時間會重新執行,要么當前正在// 運行,因此只需要設置closed狀態,task執行完后會收到close狀態并// 進行處理。state | CLOSED};match (*header).state.compare_exchange_weak(state,new,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 重新schedule以便executor將Future銷毀if state & (SCHEDULED | RUNNING) == 0 {((*header).vtable.schedule)(ptr);}// 如果有awaiter的話,通知相應的的task。if state & AWAITER != 0 {(*header).notify();}break;}Err(s) => state = s,// 失敗重試}}}} }

    JoinHandle::drop

    由于整個task的所有權是由JoinHandle,Task和Waker共享的,因此都需要手動實現drop。Output只會由JoinHandle訪問,因此如果有的話也要一同銷毀。

    impl<R, T> Drop for JoinHandle<R, T> {fn drop(&mut self) {let ptr = self.raw_task.as_ptr();let header = ptr as *const Header;let mut output = None;unsafe {// 由于很多時候JoinHandle不用,會在剛創建的時候直接drop掉,因此針對這種情// 況作一個特殊化處理。這樣一個原子操作就完成了。if let Err(mut state) = (*header).state.compare_exchange_weak(SCHEDULED | HANDLE | REFERENCE,SCHEDULED | REFERENCE,Ordering::AcqRel,Ordering::Acquire,) {loop {// 如果task完成了,但是還沒有close掉,說明output還沒有被取走,需// 要在這里取出來進行析構。if state & COMPLETED != 0 && state & CLOSED == 0 {// 標記為closed,這樣就可以安全地讀取output的數據。match (*header).state.compare_exchange_weak(state,state | CLOSED,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => { output =Some((((*header).vtable.get_output)(ptr) as *mut R).read());// 更新狀態重新循環state |= CLOSED;}Err(s) => state = s,}} else {// 進到這里說明task要么沒完成,要么已經closed了。let new = if state & (!(REFERENCE - 1) | CLOSED) == 0 {// Task和Waker都已經沒了,并且沒closed,根據進else的條// 件可知task沒完成,Future還在,重新schedule一次,讓// executor把Future析構掉。SCHEDULED | CLOSED | REFERENCE} else {// 移除HANDLE flagstate & !HANDLE};match (*header).state.compare_exchange_weak(state,new,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 如果這是最后一個引用if state & !(REFERENCE - 1) == 0 { if state & CLOSED == 0 {//并且沒closed,根據進else的條件可知task沒// 完成,重新schedule一次,析構Future((*header).vtable.schedule)(ptr);} else {// task已經完成了,output也已經在上面讀出// 來了,同時也是最后一個引用,需要把task自// 身析構掉。((*header).vtable.destroy)(ptr);}}// 還有其他引用在,資源的釋放由他們負責。break;}Err(s) => state = s,}}}}}// 析構讀取出來的outputdrop(output);} }

    JoinHandle::poll

    檢查Output是否已經可以拿,沒有的話注冊cx.waker()等通知。

    impl<R, T> Future for JoinHandle<R, T> {type Output = Option<R>;fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {let ptr = self.raw_task.as_ptr();let header = ptr as *const Header;unsafe {let mut state = (*header).state.load(Ordering::Acquire);loop {// task已經closed了,沒output可拿。if state & CLOSED != 0 {// 大部分可情況下,header里的awaiter就是cx.waker,也有例外,因// 此一并進行通知。(*header).notify_unless(cx.waker());return Poll::Ready(None);}// 如果task還沒完成if state & COMPLETED == 0 {// 那么注冊當前的cx.waker到Header::awaiter里,這樣完成了可以收// 到通知。abort_on_panic(|| {(*header).swap_awaiter(Some(cx.waker().clone()));});// 要是在上面注冊前正好task完成了,那么就收不到通知了,因此注冊后// 需要重新讀取下狀態看看。state = (*header).state.load(Ordering::Acquire);// task已經closed了,沒output可拿,返回None。if state & CLOSED != 0 {// 這里我分析下來是不需要再通知了,提了個pr等作者回應。(*header).notify_unless(cx.waker());return Poll::Ready(None);}// task還沒完成,上面已經注冊了waker,可以直接返回Pending。if state & COMPLETED == 0 {return Poll::Pending;}}// 到這里說明task已經完成了。把它設置為closed狀態,就可以拿output了。match (*header).state.compare_exchange(state,state | CLOSED,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 設置closed成功,通知其他的awaiter。由于上面是原子的swap操// 作,且一旦設置為closed,awaiter就不會再變更了,因此可以// 用AWAITER這個flag進行快速判斷。if state & AWAITER != 0 {(*header).notify_unless(cx.waker());}// 讀取出Output并返回。let output = ((*header).vtable.get_output)(ptr) as *mut R;return Poll::Ready(Some(output.read()));}Err(s) => state = s,}}}} }

    Task的實現分析

    Task::schedule

    這個函數先通過Task內部保存的指針指向Header,并從Header的vtable字段中拿到schedule函數指針,這個函數最終調用的是用戶調用spawn時傳入的schedule閉包。因此本身很直接。

    Task::run

    這個函數先通過Task內部保存的指針指向Header,并從Header的vtable字段中拿到run函數指針,其指向RawTask::run,實現如下:

    首先根據指針參數強轉為RawTask,并根據Header的vtable拿到RawWakerVTable,構造好Waker和Context,為調用Future::poll做準備。

    unsafe fn run(ptr: *const ()) {let raw = Self::from_ptr(ptr);let waker = ManuallyDrop::new(Waker::from_raw(RawWaker::new(ptr,&(*raw.header).vtable.raw_waker,)));let cx = &mut Context::from_waker(&waker);//... }

    然后獲取當前的state,循環直到更新state的RUNING成功為止。

    let mut state = (*raw.header).state.load(Ordering::Acquire);loop {// 如果task已經closed,那么Future可以直接析構掉,并返回。if state & CLOSED != 0 {if state & AWAITER != 0 {(*raw.header).notify();}Self::drop_future(ptr);// 扣掉當前task的引用計數,因為run函數的參數是self。Self::decrement(ptr);return;}// 移除SCHEDULED狀態,并標記RUNINGmatch (*raw.header).state.compare_exchange_weak(state,(state & !SCHEDULED) | RUNNING,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 更新state到新的狀態,后面的代碼還要復用state。state = (state & !SCHEDULED) | RUNNING;break;}Err(s) => state = s,}}

    標記為RUNING狀態后,就可以開始正式調用Future::poll了,不過在調用前設置Guard,以便poll函數panic時,可以調用Guard的drop函數保證狀態一致。

    let guard = Guard(raw);let poll = <F as Future>::poll(Pin::new_unchecked(&mut *raw.future), cx);mem::forget(guard); // 沒panic,移除掉guard.drop的調用。match poll {Poll::Ready(out) => {/// ... }Poll::Pending => {// ... }}

    如果Future完成了,那么先把Future析構掉,騰出內存把output寫進去。并循環嘗試將RUNING狀態去掉。

    match poll {Poll::Ready(out) => {Self::drop_future(ptr);raw.output.write(out);let mut output = None;loop {// JoinHandle已經沒了,那么output沒人取,我們需要析構掉output,并設置為// closed狀態。let new = if state & HANDLE == 0 {(state & !RUNNING & !SCHEDULED) | COMPLETED | CLOSED} else {(state & !RUNNING & !SCHEDULED) | COMPLETED};match (*raw.header).state.compare_exchange_weak(state,new,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 如果handle沒了,或者跑的時候closed了,那么需要把output再讀取// 出來析構掉。if state & HANDLE == 0 || state & CLOSED != 0 {output = Some(raw.output.read());}// 通知JoinHandle來取數據。if state & AWAITER != 0 {(*raw.header).notify();}Self::decrement(ptr);break;}Err(s) => state = s,}}drop(output);}Poll::Pending => {// ...}

    如果沒完成的話,循環嘗試移除RUNING,同時在poll的時候其他線程不能調用shedule函數,而是設置SCHEDULED,所以需要檢查這個flag,如果設置了,則需要代勞。

    match poll {Poll::Ready(out) => {/// handle ready case ... }Poll::Pending => {loop {// poll的時候closed了,這里為啥要移除SCHEDULED狀態,暫時不清楚,需要問問// 作者。let new = if state & CLOSED != 0 {state & !RUNNING & !SCHEDULED} else {state & !RUNNING};match (*raw.header).state.compare_exchange_weak(state,new,Ordering::AcqRel,Ordering::Acquire,) {Ok(state) => {if state & CLOSED != 0 {// 設置closed狀態的那個線程是不能碰Future的,否則和當前線程// 產生內存并發訪問沖突。因此代勞析構操作。Self::drop_future(ptr);Self::decrement(ptr);} else if state & SCHEDULED != 0 {// poll的時候其他線程想schedule這個task,但是不能調用,因此// 當前線程代勞。 chedule函數接收self,類似move語義,因此這里// 不需要decrement。Self::schedule(ptr);} else {Self::decrement(ptr);}break;}Err(s) => state = s,}}} }

    在poll時如果發生panic,則Guard負責收拾殘局。

    fn drop(&mut self) {let raw = self.0;let ptr = raw.header as *const ();unsafe {let mut state = (*raw.header).state.load(Ordering::Acquire);loop {// poll的時候被其他線程closed了,if state & CLOSED != 0 {// 看代碼state一旦處于CLOSED后,schedule不會再運行。這里為啥要移除// SCHEDULED狀態,暫時不清楚,需要問問作者。(*raw.header).state.fetch_and(!SCHEDULED, Ordering::AcqRel);// 析構FutureRawTask::<F, R, S, T>::drop_future(ptr);RawTask::<F, R, S, T>::decrement(ptr);break;}match (*raw.header).state.compare_exchange_weak(state,(state & !RUNNING & !SCHEDULED) | CLOSED,Ordering::AcqRel,Ordering::Acquire,) {Ok(state) => {// 析構FutureRawTask::<F, R, S, T>::drop_future(ptr);// 通知awaitertask已經close了.if state & AWAITER != 0 {(*raw.header).notify();}RawTask::<F, R, S, T>::decrement(ptr);break;}Err(s) => state = s,}}} }

    Waker相關函數的實現

    wake函數

    wake函數主要功能是設置SCHEDULE狀態,并嘗試調用schedule函數,有兩個重要的細節需要注意:

  • task正在執行時不能調用schedule函數;
  • 當task已經被schedule過了時,也需要額外做一次原子操作,施加Release語義。
  • unsafe fn wake(ptr: *const ()) {let raw = Self::from_ptr(ptr);let mut state = (*raw.header).state.load(Ordering::Acquire);loop { if state & (COMPLETED | CLOSED) != 0 {// 如果task完成或者close了,直接drop掉自己,wake的參數是self語義Self::decrement(ptr);break;}if state & SCHEDULED != 0 {// 這段代碼極為關鍵,如果task已經schedule過了,則重新把讀出來的state// 設置回去,雖然看起來好像是無用的,其實是為了施加Release同步語義,// 把當前線程的內存視圖同步到其他線程去。即便是rust標準庫,之前也因為// 沒處理好類似這個情況出過bug。match (*raw.header).state.compare_exchange_weak(state,state,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {Self::decrement(ptr);break;}Err(s) => state = s,}} else {// task沒schedule過,則設置狀態。match (*raw.header).state.compare_exchange_weak(state,state | SCHEDULED,Ordering::AcqRel,Ordering::Acquire,) {Ok(_) => {// 如果task當前沒有運行,那么可以調用schedule函數。if state & (SCHEDULED | RUNNING) == 0 {// Schedule the task.let task = Task {raw_task: NonNull::new_unchecked(ptr as *mut ()),_marker: PhantomData,};(*raw.schedule)(task);} else {// task正在運行,不需要調用schedule,等運行結束后對應的// 線程會代勞。Self::decrement(ptr);}break;}Err(s) => state = s,}}} }

    wake_by_ref

    這個函數的功能和wake類似,唯一的區別就是wake的參數是self,有move語義,wakebyref是&self。實現差異不大,就不做具體分析了。

    clone_waker

    waker的clone實現也比較簡單,直接將Header里的state的引用計數加一即可。

    unsafe fn clone_waker(ptr: *const ()) -> RawWaker {let raw = Self::from_ptr(ptr);let raw_waker = &(*raw.header).vtable.raw_waker;let state = (*raw.header).state.fetch_add(REFERENCE, Ordering::Relaxed);if state > isize::max_value() as usize {std::process::abort();}RawWaker::new(ptr, raw_waker) }

    總結

    整個task的設計非常精細,api也非常直觀,難怪一發布就直接上1.0版本。

    總結

    以上是生活随笔為你收集整理的线程中task取消_Rust Async: async-task源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    999久久国产精品免费观看网站 | 激情丁香5月 | 狠狠干在线播放 | 久久久精品网站 | 91网在线| 国产精品 视频 | 国产在线理论片 | 国产精品久久久久永久免费观看 | www.狠狠插.com | 亚洲欧美日本国产 | 精品久久久成人 | 毛片www| 天天色天天色 | 日本二区三区在线 | 粉嫩aⅴ一区二区三区 | 一级黄色在线视频 | 青青河边草观看完整版高清 | 国产免费黄视频在线观看 | 精品美女久久久久久免费 | 香蕉免费| 手机在线看永久av片免费 | 欧美在线aa | 三级黄色在线观看 | 久久综合久久综合久久 | 韩国精品一区二区三区六区色诱 | 99国产视频在线 | 国产精品美女久久久久久久久 | 色资源网免费观看视频 | 亚洲在线色| 五月天,com | 日韩久久精品一区二区 | 日韩av一区二区在线影视 | 国产视频亚洲 | av.com在线 | 午夜色场| 久久久久久久国产精品视频 | 久久精品亚洲一区二区三区观看模式 | 久久国产美女 | 一区二区三区手机在线观看 | 国产无限资源在线观看 | 国产精品一区二区视频 | 色欧美综合 | 久久99亚洲热视 | 国产理论影院 | av一级片网站 | 国产精品99久久久久久人免费 | 日韩精品在线视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 美女在线国产 | 亚洲综合色站 | 91视频链接 | 人人网av | 色www.| 国产亚洲永久域名 | 久久精品久久久精品美女 | 国产麻豆精品一区二区 | 一级片视频在线 | 国产视频黄 | 国产精品11 | 在线 你懂| 奇米网8888 | 91在线区 | 免费午夜网站 | av在线播放不卡 | 日韩欧美在线观看 | 久久久久久久久久久影院 | 天天色天天射天天综合网 | 天天综合网在线 | 国产高清免费av | 久久五月精品 | av在线播放观看 | 免费看国产视频 | 日韩在线字幕 | 在线观看日韩 | 欧美福利久久 | 国精产品永久999 | 日韩伦理一区二区三区av在线 | 国产精品久久久久久久久久东京 | 99这里都是精品 | 亚洲欧美视频在线观看 | 欧美性久久久 | 一区二区精品视频 | 国产免费黄视频在线观看 | 成年人免费在线播放 | 亚洲欧美视频一区二区三区 | www色网站| 黄污在线看| 麻豆成人在线观看 | 手机色在线 | www激情网 | 最新国产视频 | 亚洲欧美综合 | 九色精品在线 | 欧美福利网址 | 最近最新中文字幕 | 九九九九免费视频 | 国产精品18p | 国产精品99在线播放 | 亚洲一级性| 亚洲精品乱码久久久久久9色 | 亚洲精品99久久久久中文字幕 | 精品一区二区三区电影 | 久久精品波多野结衣 | 亚洲小视频在线观看 | 91视频在线免费看 | 久久视频在线观看 | 色多视频在线观看 | 奇米四色影狠狠爱7777 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久综合 | 国产成人高清 | 在线视频 区 | 久久精品久久久精品美女 | 国产一区二区三区在线免费观看 | 国产无限资源在线观看 | 天天干com | 久久免费视频在线观看30 | 伊人中文网 | 久久久久免费精品 | 亚洲成人影音 | 不卡的一区二区三区 | av黄色免费在线观看 | 日韩久久精品一区二区 | 国产伦理一区 | 国产精品粉嫩 | 西西人体4444www高清视频 | 亚洲国产精品传媒在线观看 | 国产一级免费观看视频 | 日韩精品中文字幕一区二区 | 午夜精品视频一区二区三区在线看 | 久久综合婷婷 | 欧美韩国日本在线观看 | 亚洲丝袜一区 | 夜夜高潮夜夜爽国产伦精品 | 久在线观看视频 | 国产精品美女久久久免费 | 黄色一级网| 亚洲国产成人在线 | 精品在线一区二区 | av在线8 | 亚洲精品成人av在线 | 四虎国产精 | 成年美女黄网站色大片免费看 | 久久黄色网页 | 91在线观 | 久久看毛片 | 国产原创在线 | 亚洲欧洲精品在线 | 国产自制av | 国产亚洲精品福利 | 欧美日韩国产一二三区 | 高清免费在线视频 | 国产精品一区二区 91 | 久草在线 | 美女在线免费视频 | 国产精品亚洲人在线观看 | 色99中文字幕| av免费在线观看1 | 亚洲精品国产综合久久 | 精品91视频 | 天天干天天操人体 | 国产精品久久久777 成人手机在线视频 | 成人午夜电影久久影院 | 欧美 高跟鞋交 xxxxhd | 免费观看丰满少妇做爰 | 最近中文字幕免费观看 | 婷婷久草 | 亚洲综合色丁香婷婷六月图片 | 免费观看的av网站 | 国产 在线观看 | 精品欧美乱码久久久久久 | 五月天综合 | 精品美女久久久久久免费 | 日日综合网 | 香蕉视频一级 | 久久免费视频精品 | 成人黄大片视频在线观看 | 九九久久久久久久久激情 | 欧美人体xx | 精品久久久久久亚洲 | 午夜在线免费观看 | 国产精品久久久777 成人手机在线视频 | 91精品视频观看 | 中文字幕av一区二区三区四区 | 在线一区观看 | 久久视精品 | 国产精品免费观看国产网曝瓜 | 成人精品一区二区三区中文字幕 | 国产淫片| 亚洲欧美日韩一级 | 久久这里只有精品视频99 | 午夜久久久久 | 有没有在线观看av | 黄网站免费大全入口 | 热久久免费视频 | 国产玖玖在线 | av中文资源在线 | 精品亚洲男同gayvideo网站 | 国产精品乱看 | 亚洲激情六月 | 亚洲国内精品在线 | 五月婷婷色丁香 | 免费a网| 亚洲三级黄色 | 亚洲资源在线观看 | 国产精品毛片完整版 | 免费视频成人 | 婷婷色视频 | 九九热免费精品视频 | 国产一区二区免费在线观看 | 久久久久久看片 | 麻豆91在线看 | a级一a一级在线观看 | 国产精品一区二区久久久久 | 天天色天天综合 | 不卡视频一区二区三区 | 在线电影 一区 | 色婷婷av一区二 | 亚洲视频2 | 国产综合精品久久 | 日韩午夜精品福利 | 美女黄视频免费看 | 国产综合在线观看视频 | 国际精品久久 | 国产一级大片在线观看 | 久久99国产一区二区三区 | 久草资源在线 | 色com | 99色婷婷 | 欧美在线1 | 精品久久久久亚洲 | a久久久久| 久久精品国产亚洲 | 亚洲精品美女在线观看播放 | 久久99欧美 | 久久国产精品99久久久久久进口 | 狠狠色丁香久久婷婷综合五月 | 成人动态视频 | 日韩精品免费一区二区在线观看 | 亚洲天堂网在线视频 | 黄色aaa级片| 最新国产在线 | 六月丁香社区 | 免费看的国产视频网站 | 久久久久久毛片精品免费不卡 | 天天爱天天草 | 日韩精品在线播放 | 日韩精品中文字幕在线观看 | 国产精品9999久久久久仙踪林 | 狠狠狠狠干 | 日本黄色免费在线观看 | 中文字幕在线久一本久 | 国产伦精品一区二区三区高清 | 久久超| 91黄色成人 | 日韩欧美有码在线 | 成人在线播放免费观看 | 高清精品视频 | 国产精品 中文字幕 亚洲 欧美 | 国产麻豆精品久久一二三 | 一二三区av| 色婷婷综合视频在线观看 | 高清不卡毛片 | 99高清视频有精品视频 | 精品一区91 | 92av视频 | 韩国av一区二区三区在线观看 | 久色婷婷 | zzijzzij日本成熟少妇 | 在线免费观看黄色 | www91在线| 精品视频免费播放 | 99国产一区二区三精品乱码 | 欧美另类巨大 | 综合婷婷久久 | 中文字幕一区三区 | 久操视频在线免费看 | 色综合久久综合 | 亚洲成人免费在线 | 国产在线观看91 | 国产区精品视频 | 久久成人欧美 | 久久人人爽人人爽人人片 | 欧美日韩二区三区 | 日韩免费一区二区 | 丁香六月婷婷综合 | 亚洲精品在线播放视频 | 久久手机免费视频 | 欧美一级在线 | 久久综合久久八八 | 日韩一区二区三区免费视频 | av成人免费观看 | 国产福利精品视频 | 日韩精品久久久免费观看夜色 | 亚洲综合欧美精品电影 | 激情婷婷丁香 | 亚洲精品国产精品国自产观看 | 亚洲va欧美va人人爽春色影视 | 九九热精 | 99免费精品 | 天天狠狠干 | 免费看国产视频 | 亚洲精品乱码久久 | 四虎影视成人永久免费观看亚洲欧美 | 国产高清在线看 | 麻豆久久一区二区 | 国产成人精品一区二区三区免费 | 午夜久久福利视频 | 亚洲精品xxx | 国产小视频在线免费观看 | 在线观看国产高清视频 | 九九热中文字幕 | 国产色资源 | 国产一区在线视频播放 | 欧美日韩一区二区三区不卡 | 五月色丁香 | 黄网站污 | 一区二区视频在线看 | 在线观看中文字幕一区二区 | 中文字幕在线看视频国产中文版 | 亚洲精品国产综合99久久夜夜嗨 | 亚洲精品综合一二三区在线观看 | 久久电影中文字幕视频 | 日本视频网 | 久久国产精品99久久人人澡 | 91.精品高清在线观看 | 免费看一级一片 | 手机av在线免费观看 | 国产亚洲片| av免费在线观 | 日产乱码一二三区别在线 | 免费在线激情电影 | 国产精品久久久久av福利动漫 | 成人高清在线观看 | 综合网欧美 | 最近中文字幕mv | 日韩国产精品一区 | 波多野结衣一区二区 | 国产黄色片免费在线观看 | 日韩理论电影网 | 91精品福利在线 | 久草在线在线视频 | 亚洲成aⅴ人在线观看 | 日本69hd| 蜜臀av免费一区二区三区 | 成人av资源站| 97超碰人人网 | 免费看特级毛片 | 中文字幕亚洲欧美日韩 | 中文字幕之中文字幕 | 99久久99久国产黄毛片 | 久久免费黄色 | 欧美精品久久久久久久免费 | 日韩激情片在线观看 | 91自拍视频在线 | 日韩中字在线 | 欧美精品一区二区性色 | www色| 九九精品无码 | 97国产在线视频 | 国产一区二区在线免费播放 | 成人啊 v | 操操操影院 | 天天天色综合 | 天天摸天天舔天天操 | 婷婷成人亚洲综合国产xv88 | 久久av观看| 亚洲综合视频在线 | 国产精品一区久久久久 | 精品久久中文 | 亚洲六月丁香色婷婷综合久久 | 亚洲黄色片 | 欧美性一级观看 | www五月天婷婷 | 亚洲五月婷婷 | 国产视频色 | 成人黄色av免费在线观看 | 国产精品毛片一区二区在线看 | 激情电影在线观看 | 在线视频一区观看 | 98涩涩国产露脸精品国产网 | 蜜臀av免费一区二区三区 | 亚洲成a人片77777kkkk1在线观看 | 99超碰在线播放 | 91中文字幕在线视频 | 久久电影网站中文字幕 | 超碰97国产精品人人cao | 国产成人精品国内自产拍免费看 | 91视频在线免费下载 | 国内精品亚洲 | 人人干人人模 | 黄在线免费看 | 久久综合成人 | 日韩经典一区二区三区 | 永久av免费在线观看 | 国产99视频在线观看 | 精品久久福利 | 五月天色网站 | 欧美综合在线观看 | 精品久久久久_ | 亚洲一级免费观看 | 九色porny真实丨国产18 | 日韩色av色资源 | 999在线视频 | 亚洲欧美精品一区二区 | 国产美女在线免费观看 | 国产裸体视频bbbbb | 中文字幕刺激在线 | 综合国产在线 | 国产一区二区观看 | 人人插人人看 | 国产日韩欧美在线免费观看 | 超碰97国产| 中文字幕中文字幕在线一区 | 国产一区视频在线观看免费 | 午夜视频一区二区 | 婷婷在线免费视频 | 久久99精品久久久久久三级 | 狠狠的操狠狠的干 | 在线欧美日韩 | 欧美日韩亚洲第一页 | 久久久免费观看完整版 | 亚洲国产三级在线观看 | 日本精品视频一区 | 91视频xxxx| 日韩黄色中文字幕 | 在线日韩视频 | 黄色中文字幕在线 | 国产精品久久婷婷六月丁香 | 中文字幕乱码在线播放 | 999视频网| 亚洲涩综合 | 国产中文字幕91 | 日日夜夜网站 | 国产资源在线免费观看 | 91视频 - v11av | 婷婷综合伊人 | 国内精品视频在线 | 日韩精品专区 | 婷婷午夜 | 久久国产麻豆 | 国产精品九九九 | 丝袜美女视频网站 | 美女久久久久久 | 麻豆av一区二区三区在线观看 | 中文字幕有码在线 | 日本mv大片欧洲mv大片 | 国产自在线 | 中文字幕在线播放一区二区 | 中文字幕在线免费播放 | 99久久精品免费看国产免费软件 | 91免费在线视频 | 免费看日韩 | 久久久96 | 黄视频网站大全 | 国产成人精品久久亚洲高清不卡 | 色爱成人网 | 九色琪琪久久综合网天天 | 丝袜美腿亚洲 | 久草在线久 | 成年人视频在线观看免费 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 日本三级久久 | 国产色妞影院wwwxxx | 国产美女网站在线观看 | 成人在线一区二区三区 | 久久人人爽人人人人片 | 成人午夜电影在线 | 国产色啪| 国产一级二级三级视频 | 激情久久综合 | 91色吧| 国产一区二区不卡视频 | 国产91精品在线观看 | 偷拍福利视频一区二区三区 | 97视频网站 | 奇米网在线观看 | 狠狠干网 | 国产人成精品一区二区三 | 亚洲国产日本 | 国产午夜精品理论片在线 | 国产日韩欧美视频 | 国产美腿白丝袜足在线av | 999久久a精品合区久久久 | 国产小视频在线观看 | 国产一区二区精品91 | 欧美日韩在线观看一区 | 国语精品久久 | 精品96久久久久久中文字幕无 | 美女免费视频一区二区 | 久久综合桃花 | 日韩精品一区二区在线 | 国产精品国产三级国产aⅴ无密码 | 五月天丁香综合 | 久久综合免费 | 精品在线你懂的 | 99热这里只有精品在线观看 | 日日草av | 中文字幕一区二区三区在线观看 | 国产原创在线 | 欧美性爽爽 | 国产精品视频免费观看 | 精品国产伦一区二区三区 | 免费在线观看不卡av | 国产在线精品二区 | 91在线看网站 | 国产成人三级在线播放 | 色av网站| 日本中文字幕在线免费观看 | 国产成人三级在线播放 | 九九色在线观看 | 午夜国产成人 | 免费进去里的视频 | 欧美乱大交 | 色偷偷av男人天堂 | 一级做a爱片性色毛片www | 黄色官网在线观看 | 久久免费视频一区 | 日本精品视频在线播放 | 中文乱码视频在线观看 | 在线91网| 国产小视频免费在线观看 | 伊人激情综合 | 麻豆久久精品 | 免费看三级黄色片 | a天堂一码二码专区 | 久久国内视频 | 国产精品视频观看 | 片黄色毛片黄色毛片 | 最新真实国产在线视频 | 久久国产美女视频 | 一区二区观看 | 99精品在线视频播放 | 日韩一区二区三免费高清在线观看 | 国产精品久久99综合免费观看尤物 | 91毛片在线| 91麻豆精品国产自产 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 成年人国产在线观看 | 日韩乱码中文字幕 | 99久热在线精品视频成人一区 | 日韩欧美在线观看 | 69视频永久免费观看 | 97品白浆高清久久久久久 | 成人毛片100免费观看 | 人人爽人人爽人人片 | 人成免费网站 | 日韩| 搡bbbb搡bbb视频 | 国产精品久久久久久久久久久不卡 | 伊人春色电影网 | 亚洲精品乱码久久久久久蜜桃不爽 | 欧美最猛性xxx | 国产精品ssss在线亚洲 | 夜夜爱av| 日韩大陆欧美高清视频区 | 一区二区 精品 | 亚洲少妇久久 | 久草在线电影网 | 激情婷婷六月 | 亚洲国产精品激情在线观看 | 亚洲成人免费 | 中字幕视频在线永久在线观看免费 | 在线观看久 | 亚洲男男gaygay无套 | 色瓜| 亚洲精品国产精品国自产观看浪潮 | 999国内精品永久免费视频 | 亚洲aⅴ一区二区三区 | 美女网站视频免费都是黄 | 毛片99| 色婷婷综合视频在线观看 | 最近2019年日本中文免费字幕 | 337p西西人体大胆瓣开下部 | 亚洲黄色软件 | 91在线观看欧美日韩 | 婷婷色社区 | 久草手机视频 | 国产精品18久久久久白浆 | 精品一二三四视频 | 国产爽视频 | 一区二区三区久久精品 | 免费欧美 | 2023天天干| 成年人在线观看网站 | 日韩99热 | 91在线公开视频 | 免费看av在线 | 日本性高潮视频 | 久久资源总站 | 亚洲色视频 | 国产日韩欧美在线播放 | 国产韩国日本高清视频 | 午夜精品一区二区三区在线视频 | 色偷偷888欧美精品久久久 | 999久久久久久久久6666 | 日韩av成人在线 | 国产精彩视频 | 五月婷婷电影网 | 久久国产精品一国产精品 | 91视频午夜 | 亚洲春色成人 | 国产高清视频免费观看 | 超碰在线cao | 99精品视频播放 | 91麻豆精品久久久久久 | 日日草av | 久久精品站 | 国产精品久久久久久久免费观看 | 国产小视频福利在线 | 手机在线黄色网址 | 天天干亚洲 | 亚洲国产精品视频 | 久久婷婷一区二区三区 | 99精品亚洲 | 欧美日韩高清一区二区 国产亚洲免费看 | 永久免费视频国产 | 成人毛片100免费观看 | 国内99视频| 夜夜骑首页 | 国产精品99久久久久久宅男 | 91精品啪 | 97色婷婷人人爽人人 | 免费av看片| 欧美大片mv免费 | 区一区二区三区中文字幕 | 91自拍视频在线 | 在线播放日韩 | 一区二区三区精品在线视频 | av成人在线观看 | 97精品国产91久久久久久 | 99久久爱 | 天天综合网久久综合网 | 五月天久久 | 毛片美女网站 | 2024国产精品视频 | 国产99爱 | 99视频免费观看 | 亚洲一二视频 | 久久精品一二三区白丝高潮 | 成人国产精品一区二区 | 视频在线观看国产 | 日日摸日日添夜夜爽97 | 天天射,天天干 | 又黄又爽又无遮挡免费的网站 | 97碰碰视频 | 国产 一区二区三区 在线 | 久久久久国产精品视频 | 黄色一级免费网站 | 日韩动态视频 | 国产视频一区二区在线 | 天天色天天射综合网 | 色偷偷97| 久草网站在线观看 | 日韩欧美一区二区三区在线观看 | 亚洲婷婷网 | 亚洲精品高清在线 | a天堂中文在线 | 久草视频在线资源 | 亚洲国产黄色 | 麻豆视频在线免费观看 | 在线观看日韩中文字幕 | 五月开心色 | 国内精品一区二区 | 精品国产乱码一区二 | 免费色视频网址 | 亚洲国产天堂av | a黄色片| 免费国产在线精品 | av高清一区二区三区 | 免费高清在线观看电视网站 | 亚洲在线色 | 日韩av中文在线 | 人九九精品 | 欧美一级小视频 | 香蕉视频在线视频 | 成年人免费看片网站 | 亚洲国产一区在线观看 | 国产精品精品久久久久久 | 国产精品久久久久久久久毛片 | 欧美一级在线 | 三级在线视频播放 | 国内三级在线观看 | 久久久免费视频播放 | 亚洲精品人人 | 成人在线超碰 | 97理论片 | 日韩色av色资源 | 日韩在线网址 | 激情小说网站亚洲综合网 | 人人射av| 808电影| 国产伦精品一区二区三区在线 | 欧美另类交人妖 | 免费a视频在线观看 | 中文字幕av一区二区三区四区 | 色婷婷综合五月 | 在线中文字幕电影 | 夜夜夜夜夜夜操 | 国产一区在线看 | 国产视频一区二区三区在线 | 亚洲黄色app | 日批网站在线观看 | 天天干夜夜爱 | 激情网第四色 | 国产原创在线观看 | 日日夜夜精品视频天天综合网 | 精品国产一区二区三区久久久久久 | 国产精品一区二区你懂的 | 麻豆影视在线免费观看 | 国产一区在线视频观看 | 天天干夜夜干 | 欧美成人aa | 91在线视频观看免费 | 亚洲成a人片在线观看网站口工 | 激情导航 | 射久久久 | 天天玩天天干天天操 | 亚洲日本一区二区在线 | 国产精品免费观看网站 | 亚洲精品在线观看网站 | 久久香蕉国产精品麻豆粉嫩av | 国产黄在线 | 99色在线视频 | 成人精品一区二区三区中文字幕 | 人人草在线观看 | 91视频在线观看免费 | 国产91av视频在线观看 | 亚洲精品免费视频 | 亚洲不卡在线 | 午夜精品久久 | 久久精品79国产精品 | 97精品国产 | 天天操天天操天天操天天操天天操天天操 | 国产在线观看地址 | 亚洲天堂色婷婷 | 激情丁香综合五月 | 日日干美女 | www,黄视频 | 国产美腿白丝袜足在线av | 免费婷婷 | 欧美日高清视频 | 91精品久久久久久久91蜜桃 | 亚洲精品资源 | 亚洲人在线7777777精品 | 色综合久久久久综合99 | 免费看特级毛片 | 日韩一区二区三区在线看 | av色一区 | 亚洲精品乱码久久久久久高潮 | 天天操天天干天天 | 亚洲午夜小视频 | 91看片在线免费观看 | 欧美精品久久久久久久久久 | 午夜视频99| 99久久精品久久久久久清纯 | 玖玖在线播放 | 国产不卡免费视频 | 亚洲视频中文 | 九九在线国产视频 | 免费看黄在线观看 | 天天干天天在线 | 天天草天天| 久草精品视频 | 国产精品18毛片一区二区 | 亚洲综合色视频在线观看 | 国产精品观看在线亚洲人成网 | 热re99久久精品国产99热 | 正在播放国产一区 | 国产 在线观看 | 在线观看深夜福利 | 久久久久久久久久久久久久免费看 | 国产成人av电影在线 | 色五婷婷 | 国产伦理一区二区三区 | 日韩黄色中文字幕 | 在线综合色 | 蜜桃麻豆www久久囤产精品 | 亚洲黄色软件 | 亚洲一级电影在线观看 | 在线播放视频一区 | 亚洲午夜精品久久久久久久久 | 天天操网站 | 国产一区久久 | 亚洲欧洲在线视频 | 欧美国产精品久久久久久免费 | 国产亚洲成人网 | 国产尤物一区二区三区 | 久久综合国产伦精品免费 | 久久视频一区 | 97超碰人人看 | 看av免费 | 欧美a级在线免费观看 | 人人爽人人爽av | 日韩电影一区二区在线观看 | 一区二区精品在线视频 | 五月婷婷在线观看视频 | 四虎在线视频免费观看 | 91成人免费电影 | 日本激情视频中文字幕 | 色狠狠干| 992tv在线 | 天天操·夜夜操 | 国产高清在线视频 | 国产一级精品在线观看 | 99久久精品日本一区二区免费 | 美女福利视频 | 国产一区二区在线免费播放 | 欧美一二三区播放 | 国产精品自产拍在线观看桃花 | 在线国产不卡 | 国产玖玖在线 | 成人毛片在线视频 | 日韩精选在线观看 | 操操操人人人 | 成人九九视频 | 国产成人一级 | 国产不卡视频在线播放 | 国产视频久久 | www.国产在线观看 | 亚洲精品xx | 国产97碰免费视频 | 亚洲 欧美 91 | 韩日电影在线免费看 | 一区二区三区四区精品视频 | 欧美一级视频免费看 | 99一区二区三区 | 最近更新好看的中文字幕 | 亚洲丝袜一区 | 国产精品久久久久久久久久妇女 | 国产精品精品久久久 | 高清有码中文字幕 | 欧美韩国日本在线观看 | 天堂av在线网址 | 成年人免费在线观看网站 | 波多野结衣久久精品 | 亚洲一级黄色片 | 91麻豆网站| av免费黄色 | 亚洲国产网站 | 国产精品乱码一区二区视频 | 亚洲伊人av| 国内精品久久久 | 在线免费观看黄色 | 欧美一区二区三区在线观看 | 麻豆精品视频在线观看免费 | 久久久久久久电影 | 香蕉在线观看 | 91亚洲在线观看 | 国内精品小视频 | 久久综合福利 | 日本超碰在线 | 国产亚洲欧美在线视频 | 在线视频 亚洲 | 精品v亚洲v欧美v高清v | 综合伊人av | 三级av在线免费观看 | 国产精品xxxx18a99 | 丝袜制服天堂 | 青青色影院 | 丰满少妇在线观看 | 成 人 黄 色 视频播放1 | 日韩av图片 | 五月天色网站 | 97超碰成人| 蜜臀av夜夜澡人人爽人人桃色 | 国产成人在线免费观看 | 免费在线精品视频 | www.五月天 | 欧美性黑人| 欧美亚洲国产日韩 | 精品国产自在精品国产精野外直播 | 欧亚日韩精品一区二区在线 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 精品一区在线看 | 一级a毛片高清视频 | 天天爽人人爽夜夜爽 | 国产成人精品国内自产拍免费看 | 国产精国产精品 | 日韩亚洲国产精品 | 国产精品一区二区三区在线看 | 国产精品自在欧美一区 | 欧美日韩二区三区 | 一级特黄aaa大片在线观看 | av免费线看| 国内精品久久久久久久久久 | 久久精品一 | 日韩久久影院 | 波多野结衣视频一区二区 | 日韩av一区二区在线 | 91在线观 | 欧美午夜精品久久久久久浪潮 | 国产高清一区二区 | 亚洲欧美一区二区三区孕妇写真 | 狠狠躁夜夜躁人人爽超碰91 | 国产精品99久久久久久有的能看 | 日本中文字幕在线看 | 日韩中文字幕视频在线观看 | 国产99一区视频免费 | 久久久精品日本 | www.少妇| 日本爽妇网 | 国产精品久久网站 | 国产成人在线播放 | 99久久精品一区二区成人 | 久久99精品一区二区三区三区 | 成人av电影免费在线观看 | 美女久久久久久久久久久 | 亚洲精品乱码久久久久久9色 | 亚州精品一二三区 | 色偷偷88888欧美精品久久久 | 一区二区三区四区五区在线 | 成人黄色电影在线观看 | 五月婷婷开心中文字幕 | 久久天天操 | 久久久污 | 免费三级av | 久久你懂的 | 97精品国产一二三产区 | 欧美久久久久久久久久久 | 亚洲伊人第一页 | 久久久久久久久毛片精品 | 久草视频手机在线 | 欧美日韩性 | 麻豆影视在线观看 | 色婷婷视频在线 | 91喷水 | 日韩视频中文字幕 | 中文字幕一区二区在线播放 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久久久99久久| 插插插色综合 | 久久99精品热在线观看 | 国产一区国产精品 | 丁香影院在线 | 人人玩人人添人人澡超碰 | 亚洲成人黄色在线观看 | 高清久久久久久 | 亚洲成人黄色在线 | 国产91电影在线观看 | 成人免费在线观看入口 | 午夜丁香网 | 91中文在线 | 久久久在线| 久久y | 精品自拍av | 一二三精品视频 | 成+人+色综合 | 精品国产一区二区三区在线 | 亚洲国产高清在线观看视频 | 在线观看免费av网 | 欧美日韩在线观看一区 | 欧美一级片免费播放 | 高清不卡一区二区三区 | 中文亚洲欧美日韩 | 欧美一级爽| 国产福利在线 | 久久网站最新地址 | 亚洲免费永久精品国产 | 一级特黄aaa大片在线观看 | 制服丝袜天堂 | 亚洲精品乱码久久久久久 | 免费a v网站 | 国产日本在线观看 | 欧美性色xo影院 | av一区二区在线观看中文字幕 | 91亚洲在线观看 | 91爱爱中文字幕 | 久草视频免费看 | 久久综合九色综合欧美狠狠 | 日日草av| av片子在线观看 | 蜜桃传媒一区二区 | 黄污视频网站大全 | 91麻豆精品国产91久久久久久 | 97夜夜澡人人爽人人免费 | 一级片免费观看 | 久久久精华网 | 色综合天天天天做夜夜夜夜做 | 久草9视频 | 日韩欧美国产精品 | 色瓜| 亚洲国产精品日韩 | 色网址99 | 久久精品3 | 不卡视频一区二区三区 | 国产精品毛片一区二区三区 | 在线国产视频一区 | 国产免费久久 | 成人亚洲网 | 美女久久久久久久久久 | 狠狠狠色丁香综合久久天下网 | 在线免费黄色毛片 | 成人一区电影 | 在线观看深夜福利 | 欧美乱大交 | 少妇按摩av | 亚洲精品99久久久久久 |