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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密

發布時間:2024/7/19 C# 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匹夫細說C#:庖丁解牛迭代器,那些藏在幕后的秘密

c#語言規范

閱讀目錄

  • 0x00 前言
  • 0x01 你好,迭代器
  • 0x02 原來是狀態機呀
  • 0x03 狀態管理
  • 0x04 總結
回到目錄

0x00 前言

在匹夫的上一篇文章《匹夫細說C#:不是“棧類型”的值類型,從生命周期聊存儲位置》的最后,匹夫以總結和后記的方式涉及到一部分迭代器的知識。但是覺得還是不夠過癮,很多需要說清楚的內容還是含糊不清,所以這周就專門寫一下c#中的迭代器吧。

回到目錄

0x01 你好,迭代器

首先思考一下,在什么情景下我們需要使用到迭代器?

假設我們有一個數據容器(可能是Array,List,Tree等等),對我們這些使用者來說,我們顯然希望這個數據容器能提供一種無需了解它的內部實現就可以獲取其元素的方法,無論它是Array還是List或者別的什么,我們希望可以通過相同的方法達到我們的目的。

此時,迭代器模式(iterator pattern)便應運而生,它通過持有迭代狀態,追蹤當前元素并且識別下一個需要被迭代的元素,從而可以讓使用者透過特定的界面巡訪容器中的每一個元素而不用了解底層的實現。

那么,在c#中,迭代器到底是以一個怎樣的面目出現的呢?

如我們所知,它們被封裝在IEnumerable和IEnumerator這兩個接口中(當然,還有它們的泛型形式,要注意的是泛型形式顯然是強類型的。且IEnumerator<T>實現了IDisposable接口)。

IEnumerable非泛型形式:

//IEnumerable非泛型形式[ComVisibleAttribute(True)] [GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerable {IEnumerator GetEnumerator(); }

IEnumerator非泛型形式:

//IEnumerator非泛型形式 [ComVisibleAttribute(true)] [GuidAttribute("496B0ABF-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerator {Object Current {get;}bool MoveNext();void Reset(); }

IEnumerable泛型形式:

//IEnumerable泛型形式public interface IEnumerable<out T> : IEnumerable {IEnumerator<T> GetEnumerator();IEnumerator GetEnumerator(); }

IEnumerator泛型形式:

//IEnumerator泛型形式public interface IEnumerator<out T> : IDisposable, IEnumerator {void Dispose(); Object Current {get;} T Current {get;}bool MoveNext(); void Reset(); }[ComVisibleAttribute(true)] public interface IDisposable {void Dispose(); }

IEnumerable接口定義了一個可以獲取IEnumerator的方法——GetEnumerator()。

而IEnumerator則在目標序列上實現循環迭代(使用MoveNext()方法,以及Current屬性來實現),直到你不再需要任何數據或者沒有數據可以被返回。使用這個接口,可以保證我們能夠實現常見的foreach循環。

為什么會有2個接口?

到此,各位看官是否和曾經的匹夫有相同的疑惑呢?那就是為何IEnumerable自己不直接實現MoveNext()方法、提供Current屬性呢?為何還需要額外的一個接口IEnumerator來專門做這個工作?

OK,假設有兩個不同的迭代器要對同一個序列進行迭代。當然,這種情況很常見,比如我們使用兩個嵌套的foreach語句。我們自然希望兩者相安無事,不要互相影響彼此。所以自然而然的,我們需要保證這兩個獨立的迭代狀態能夠被正確的保存、處理。這也正是IEnumerator要做的工作。而為了不違背單一職責原則,不使IEnumerable擁有過多職責從而陷入分工不明的窘境,所以IEnumerable自己并沒有實現MoveNext()方法。

迭代器的執行步驟

為了更直觀的了解一個迭代器,匹夫這里提供一個小例子。

using System; using System.Collections.Generic;class Class1 { static void Main(){foreach (string s in GetEnumerableTest()){Console.WriteLine(s);}}static IEnumerable<string> GetEnumerableTest(){yield return "begin";for (int i=0; i < 10; i++){yield return i.ToString();}yield return "end";} }

輸出結果如圖:

OK,那么匹夫就給各位捋一下這段代碼的執行過程。

  • Main調用GetEnumerableTest()方法
  • GetEnumerableTest()方法會為我們創建一個編譯器生成的新的類"Class1/'<GetEnumerableTest>c__Iterator0'"(本例中)的實例。注意,此時GetEnumerableTest()方法中,我們自己的代碼尚未執行
  • Main調用MoveNext()方法
  • 迭代器開始執行,直到它遇到第一個yield return語句。此時迭代器會獲取當前的值是“start”,并且返回true以告知此時還有數據
  • Main使用Current屬性以獲取數據,并打印出來
  • Main再次調用MoveNext()方法
  • 迭代器繼續從上次遇到yield return的地方開始執行,并且和之前一樣,直到遇到下一個yield return
  • 迭代器按照這種方式循環,直到MoveNext()方法返回false,以告知此時已經沒有數據了
  • 這個例子中迭代器的執行過程,匹夫已經給各位看官簡單的描述了一下。但是還有幾點需要關注的,匹夫也想提醒各位注意一下。

    • 在第一次調用MoveNext()方法之前,我們自己在GetEnumerableTest中的代碼不會執行
    • 之后調用MoveNext()方法時,會從上次暫停(yield return)的地方開始。
    • 編譯器會保證GetEnumerableTest方法中的局部變量能夠被保留,換句話說,雖然本例中的i是值類型實例,但是它的值其實是被迭代器保存在堆上的,這樣才能保證每次調用MoveNext時,它是可用的。這也是匹夫上一篇文章中說迭代器塊中的局部變量會被分配在堆上的原因。

    好啦,簡單總結了一下C#中的迭代器的外觀。那么接下來,我們繼續向內部前進,來看看迭代器究竟是如何實現的。

    回到目錄

    0x02 原來是狀態機呀

    上一節我們已經從外部看到了IEnumerable和IEnumerator這兩個接口的用法了,但是它們的內部到底是如何實現的呢?兩者之間又有何區別呢?

    既然要深入迭代器的內部,這就是一個不得不面對的問題。

    那么匹夫就寫一個小程序,之后再通過反編譯的方式,看看在我們自己手動寫的代碼背后,編譯器究竟又給我們做了哪些工作吧。

    為了簡便起見,這個小程序僅僅實現一個按順序返回0-9這10個數字的功能。

    IEnumerator的內部實現

    首先,我們定義一個返回IEnumerator<T>的方法TestIterator()。

    //IEnumerator<T>測試using System; using System.Collections;class Test {static IEnumerator<int> TestIterator(){for (int i = 0; i < 10; i++){yield return i;}} }

    接下來,我們看看反編譯之后的代碼,探查一下編譯器到底為我們做了什么吧。

    internal class Test {// Methods 注,此時還沒有執行任何我們寫的代碼private static IEnumerator<int> TestIterator(){return new <TestIterator>d__0(0);}// Nested Types 編譯器生成的類,用來實現迭代器。 [CompilerGenerated]private sealed class <TestIterator>d__0 : IEnumerator<int>, IEnumerator, IDisposable{// Fields 字段:state和current是默認出現的private int <>1__state;private int <>2__current;public int <i>5__1;//<i>5__1來自我們迭代器塊中的局部變量,匹夫上一篇文章中提到過// Methods 構造函數,初始化狀態 [DebuggerHidden]public <TestIterator>d__0(int <>1__state){this.<>1__state = <>1__state;}// 幾乎所有的邏輯在這里private bool MoveNext(){switch (this.<>1__state){case 0:this.<>1__state = -1;this.<i>5__1 = 0;while (this.<i>5__1 < 10){this.<>2__current = this.<i>5__1;this.<>1__state = 1;return true;Label_0046:this.<>1__state = -1;this.<i>5__1++;}break;case 1:goto Label_0046;}return false;}[DebuggerHidden]void IEnumerator.Reset(){throw new NotSupportedException();}void IDisposable.Dispose(){}// Propertiesint IEnumerator<int>.Current{[DebuggerHidden]get{return this.<>2__current;}}object IEnumerator.Current{[DebuggerHidden]get{return this.<>2__current;}}} }

    我們先全面的看一下反編譯之后的代碼,可以發現幾乎所有的邏輯都發生在MoveNext()方法中。那么之后我們再詳細介紹下它,現在我們先從上到下把代碼捋一遍。

  • 這段代碼給人的第一印象就是命名似乎很不雅觀。的確,這種在正常的C#代碼中不會出現的命名,在編譯器生成的代碼中卻是常常出現。因為這樣就可以避免和已經存在的正常名字發生沖突的可能性。
  • 調用TestIterator()方法的結果僅僅是調用了<TestIterator>d__0(編譯器生成的用來實現迭代器的類)的構造函數。而這個構造函數會設置迭代器的初始狀態,此時的參數為0,而構造函數會將0賦值給記錄迭代器狀態的字段:?this.<>1__state = <>1__state;。注意,此時我們自己的代碼并沒有執行。
  • <TestIterator>d__0這個類實現了3個接口:IEnumerator<int>, IEnumerator, IDisposable。
  • IDisposable的實現十分重要。因為foreach語句會在它自己的finally代碼塊中調用實現了IDisposable接口的迭代器的Dispose方法。
  • <TestIterator>d__0類有3個字段:<>1__state,<>2__current, <i>5__1。其中,<>1__state私有字段標識迭代器的狀態,<>2__current私有字段則追蹤當前的值,而<i>5__1共有字段則是我們在迭代器塊中定義的局部變量i。
  • MoveNext()方法的實現則依托與switch語句。根據狀態機的狀態,執行不同的代碼。
  • 在本例中Dispose方法什么都沒有做。
  • 在IEnumerator和IEnumerator<int>的實現中,Current都是單純的返回<>2__current的值。
  • OK,IEnumerator接口我們看完了。下面再來看看另一個接口IEnumerable吧。

    IEnumerator VS IEnumerable

    依樣畫葫蘆,這次我們仍然是寫一個實現按順序返回0-9這10個數字的功能的小程序,只不過返回類型變為IEnumerable<T>。

    using System; using System.Collections.Generic;class Test {static IEnumerable<int> TestIterator(){for (int i = 0; i < 10; i++){yield return i;}} }

    之后,我們同樣通過反編譯,看看編譯器又背著我們做了什么。

    internal class Test {private static IEnumerable<int> TestIterator(){return new <TestIterator>d__0(-2);}private sealed class <TestIterator>d__0 : IEnumerable<int>, IEnumerable, IEnumerator<int>, IEnumerator, IDisposable{// Fieldsprivate int <>1__state;private int <>2__current;private int <>l__initialThreadId;public int <count>5__1;public <TestIterator>d__0(int <>1__state){this.<>1__state = <>1__state;this.<>l__initialThreadId = Thread.CurrentThread.ManagedThreadId;}private bool MoveNext(){switch (this.<>1__state){case 0:this.<>1__state = -1;this.<count>5__1 = 0;while (this.<count>5__1 < 10){this.<>2__current = this.<count>5__1;this.<>1__state = 1;return true;Label_0046:this.<>1__state = -1;this.<count>5__1++;}break;case 1:goto Label_0046;}return false;}IEnumerator<int> IEnumerable<int>.GetEnumerator(){if ((Thread.CurrentThread.ManagedThreadId == this.<>l__initialThreadId) && (this.<>1__state == -2)){this.<>1__state = 0;return this;}return new Test.<TestIterator>d__0(0);}IEnumerator IEnumerable.GetEnumerator(){return ((IEnumerable<Int32>) this).GetEnumerator();}void IEnumerator.Reset(){throw new NotSupportedException();}void IDisposable.Dispose(){}int IEnumerator<int>.Current{get{return this.<>2__current;}}object IEnumerator.Current{get{return this.<>2__current;}}} }

    看到反編譯出的代碼,我們就很容易能對比出區別。

  • <TestIterator>d__0類不僅實現了IEnumerable<int>?接口,而且還實現了IEnumerator<int>接口。
  • IEnumerator和IEnumerator<int>的實現都和上面一樣。IEnumerator的Reset方法會拋出NotSupportedException異常,而IEnumerator和IEnumerator<int>的Current仍舊會返回<>2__current字段的值。
  • TestIterator()方法調用<TestIterator>d__0類的構造函數時,傳入的參數由上面的0變成了-2:“new <TestIterator>d__0(-2);”。也就是說此時的初始狀態是-2。
  • 又多了一個新的私有字段“<>l__initialThreadId”,且會在<TestIterator>d__0的構造函數中被賦值,用來標識創建該實例的線程。
  • 實現IEnumerable的GetEnumerator方法,在GetEnumerator方法中要么將狀態置為0,并返回this:this.<>1__state = 0;return this;要么就返回一個新的<TestIterator>d__0實例,且初始狀態置為0:return new Test.<TestIterator>d__0(0);
  • 所以,從這些對比中我們能發現些什么嗎?思考一下我們經常使用的一些用法,包括匹夫在上一節中提供的小例子。不錯,我們會創建一個IEnumerable<T>的實例,之后一些語句(例如foreach)會去調用GetEnumerator方法獲取一個Enumerator<T>的實例,之后迭代數據,最終結束后釋放掉迭代器的實例(這一步foreach會幫我們做)。(而最初我們得到的IEnumerable<T>實例,在第一次調用GetEnumerator方法獲得了一個Enumerator<T>實例之后就再沒有用到了。)

    而分析IEnumerable的GetEnumerator方法:

    IEnumerator<int> IEnumerable<int>.GetEnumerator(){if ((Thread.CurrentThread.ManagedThreadId == this.<>l__initialThreadId) && (this.<>1__state == -2)){this.<>1__state = 0;return this;}return new Test.<TestIterator>d__0(0);}

    我們可以發現,-2這個狀態,也就是此時的初始狀態,表明了GetEnumerator()方法還沒有執行。而0這個狀態,則表明已經準備好了迭代,但是MoveNext()尚未調用過。

    當在不同的線程上調用GetEnumerator方法或者是狀態不是-2(證明已經不是初始狀態了),則GetEnumerator方法會返回一個<TestIterator>d__0類的新實例用來保存不同的狀態。

    回到目錄

    0x03 狀態管理

    OK,我們深入了迭代器的內部,發現了原來它的實現主要依靠的是一個狀態機。那么,下面就讓匹夫繼續和大伙聊聊這個狀態機是如何管理狀態的。

    狀態切換

    根據Ecma-334標準,也就是c#語言標準的第26.2 Enumerator objects小節,我們可以知道迭代器有4種可能狀態:

  • before狀態
  • running狀態
  • suspended狀態
  • after狀態
  • 而其中before狀態是作為初始狀態出現的。

    在我們討論狀態如何切換之前,匹夫還要帶領大家回想一下上面提到的,也就是在調用一個使用了迭代器塊,返回類型為一個IEnumerator或IEnumerable接口的方法時,這個方法并非立刻執行我們自己寫的代碼的。而是會創建一個編譯器生成的類的實例,之后當調用MoveNext()方法時(當然如果方法的返回類型是IEnumerable,則要先調用GetEnumerator()方法),我們的代碼才會開始執行,直到遇到第一個yield return語句或yield break語句,此時會返回一個布爾值來判斷迭代是否結束。當下次再調用MoveNext()方法時,我們的方法會繼續從上一個yield return語句處開始執行。

    為了能夠直觀的觀察狀態的切換,下面小匹夫提供一個類似于《深入理解C#》這本書中的例子:

    class Test {static IEnumerable<int> TestStateChange(){Console.WriteLine("----我TestStateChange是第一行代碼");Console.WriteLine("----我是第一個yield return前的代碼");yield return 1;Console.WriteLine("----我是第一個yield return后的代碼");Console.WriteLine("----我是第二個yield return前的代碼");yield return 2;Console.WriteLine("----我是第二個yield return前的代碼");}static void Main(){Console.WriteLine("調用TestStateChange");IEnumerable<int> iteratorable = TestStateChange();Console.WriteLine("調用GetEnumerator");IEnumerator<int> iterator = iteratorable.GetEnumerator();Console.WriteLine("調用MoveNext()");bool hasNext = iterator.MoveNext();Console.WriteLine("是否有數據={0}; Current={1}", hasNext, iterator.Current);Console.WriteLine("第二次調用MoveNext");hasNext = iterator.MoveNext();Console.WriteLine("是否還有數據={0}; Current={1}", hasNext, iterator.Current);Console.WriteLine("第三次調用MoveNext");hasNext = iterator.MoveNext();Console.WriteLine("是否還有數據={0}", hasNext);} }

    之后,我們運行這段代碼看看結果如何。

    可見,代碼的執行順序就是匹夫剛剛總結的那樣。那么我們將這段編譯后的代碼再反編譯回C#,看看編譯器到底是如何處理這里的狀態切換的。

    這里我們只關心兩個方法,首先是GetEnumerator方法。其次是MoveNext方法。

    [DebuggerHidden] IEnumerator<int> IEnumerable<int>.GetEnumerator() {if ((Environment.CurrentManagedThreadId == this.<>l__initialThreadId) && (this.<>1__state == -2)){this.<>1__state = 0;return this;}return new Test.<TestStateChange>d__0(0); }

    看GetEnumerator方法,我們可以發現:

  • 此時的初始狀態是-2。
  • 不過一旦調用GetEnumerator,則會將狀態置為0。也就是狀態從最初的-2,在調用過GetEnumerator方法后變成了0。
  • 我們再來看看MoveNext方法。

    private bool MoveNext() {switch (this.<>1__state){case 0:this.<>1__state = -1;Console.WriteLine("----我TestStateChange是第一行代碼");Console.WriteLine("----我是第一個yield return前的代碼");this.<>2__current = 1;this.<>1__state = 1;return true;case 1:this.<>1__state = -1;Console.WriteLine("----我是第一個yield return后的代碼");Console.WriteLine("----我是第二個yield return前的代碼");this.<>2__current = 2;this.<>1__state = 2;return true;case 2:this.<>1__state = -1;Console.WriteLine("----我是第二個yield return前的代碼");break;}return false; }

    由于第一次調用MoveNext方法發生在調用GetEnumerator方法之后,所以此時狀態已經變成了0。

    可以清晰的看到此時從0——>1——>2——>-1這樣的狀態切換過程。而且還要注意,每個分支中,this.<>1__state都會首先被置為-1:this.<>1__state = -1。之后才會根據不同的階段賦值不同的值。而這些不同的值也就用來標識代碼從哪里恢復執行。

    我們再拿之前實現了按順序返回0-9這10個數字的小程序的狀態管理作為例子,來讓我們更加深刻的理解迭代器除了剛剛的例子,還有什么手段可以用來實現“當下次再調用MoveNext()方法時,我們的方法會繼續從上一個yield return語句處開始執行。”這一個功能的。

    private bool MoveNext(){switch (this.<>1__state){case 0:this.<>1__state = -1;this.<i>5__1 = 0;while (this.<i>5__1 < 10){this.<>2__current = this.<i>5__1;this.<>1__state = 1;return true;Label_0046:this.<>1__state = -1;this.<i>5__1++;}break;case 1:goto Label_0046;}return false;}

    如代碼中黃色色帶標出的語句,不錯,此時狀態機是靠著goto語句實現半路插入,進而實現了從yield return處繼續執行的功能。

    好吧,讓我們總結一下關于迭代器內部狀態機的狀態切換:

    • -2狀態:只有IEnumerable才有,表明在第一次調用GetEnumerator之前的狀態。
    • -1狀態:即上文中提到的C#語言標準中規定的Running狀態,表明此時迭代器正在執行。當然,也會用于After狀態,例如上例中的case 2中,this.<>1__state被賦值為-1,但是此時迭代結束了。
    • 0狀態:即上文中提到的Before狀態,表明MoveNext()還一次都沒有調用過。
    • 正數(1,2,3...),主要用來標識從遇到yield之后,代碼從哪里恢復執行。
    回到目錄

    0x04 總結

    通過匹夫上文的分析,可以看出迭代器的實現的確十分復雜。不過值得慶幸的是很多工作都由編譯器在幕后為我們做好了。那么,本文就到此結束。歡迎大家探討。


    本作品采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可,我的博客歡迎復制共享,但在同時,希望保留我的署名權陳嘉棟(慕容小匹夫),并且,不得用于商業用途。如您有任何疑問或者授權方面的協商,請給我留言。
    來源:?<http://www.cnblogs.com/murongxiaopifu/p/4437432.html>?

    來自為知筆記(Wiz)

    轉載于:https://www.cnblogs.com/zhiGamer/p/6230542.html

    總結

    以上是生活随笔為你收集整理的匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    91精品成人久久 | 超碰激情在线 | 久久看毛片 | 九九视频精品在线 | 国产最新视频在线观看 | 久久久久久高潮国产精品视 | 久草在线视频国产 | 色偷偷男人的天堂av | 中文字幕在线观看完整版电影 | 日韩欧美视频一区二区三区 | 99自拍视频在线观看 | 国产区高清在线 | 我爱av激情网 | 中文字幕一区二区三 | 亚洲精品国产精品久久99热 | 成人资源站| 久久视频免费 | 中文字幕精品一区二区三区电影 | 日韩在线免费小视频 | 怡红院成人在线 | 又黄又爽的视频在线观看网站 | 五月婷久 | 免费久久网站 | 久久国产日韩 | 最近中文字幕 | 亚洲国产午夜精品 | 久久99亚洲网美利坚合众国 | www.xxxx欧美| 在线亚洲午夜片av大片 | 免费av免费观看 | 亚洲电影av在线 | 亚州日韩中文字幕 | av资源在线观看 | 日韩欧美一区二区在线播放 | 中文字幕乱偷在线 | 精品久久福利 | 日本中文乱码卡一卡二新区 | 日韩高清在线一区 | av福利在线免费观看 | 成人蜜桃视频 | 亚洲国产精彩中文乱码av | 国产不卡在线视频 | 99婷婷狠狠成为人免费视频 | 国产成人一区二区三区免费看 | 91chinese在线 | 国产精品免费久久久久 | 成年人视频免费在线播放 | 久热免费在线观看 | 久久免费国产精品1 | 国产亚洲永久域名 | 国产成人精品av在线 | 日韩黄色免费电影 | 日韩在线网址 | 亚洲狠狠操 | 五月激情视频 | 激情网综合 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久影视网 | 一区二区精品在线视频 | 久久精品综合一区 | 久久国内免费视频 | 91视频在线免费下载 | 午夜精品久久久久99热app | 99综合影院在线 | 精品国产aⅴ一区二区三区 在线直播av | 免费看黄的 | 日韩av手机在线看 | 日韩a在线观看 | 国产日韩精品在线 | 九九久久在线看 | 亚洲综合在线五月天 | 国产精品中文字幕在线观看 | 精品国产一区二区三区久久久久久 | 免费视频一二三区 | 日韩欧美一区二区在线播放 | 超碰av在线播放 | 九九免费观看视频 | 综合中文字幕 | 久草99| 久久1电影院 | 亚洲 欧洲 国产 日本 综合 | 91中文字幕在线视频 | 4hu视频 | 日本不卡123 | 一二区av| 在线免费观看视频一区二区三区 | 婷婷丁香七月 | 久久精品亚洲一区二区三区观看模式 | 97电影院在线观看 | 91成熟丰满女人少妇 | www.色婷婷.com | 欧美久草网 | 九九热久久免费视频 | 91日韩在线专区 | 一区中文字幕 | 国产99一区视频免费 | 精品国产自在精品国产精野外直播 | 午夜久久精品 | 911免费视频 | 亚洲国产69| 字幕网资源站中文字幕 | 免费av在线网站 | 免费麻豆 | 天天爱天天射 | 亚洲综合欧美日韩狠狠色 | 中文字幕在线一区观看 | 99在线热播精品免费 | 日韩大片在线播放 | 久久综合婷婷 | 不卡的av中文字幕 | 日韩中文字幕一区 | 视频1区2区 | 久久99精品热在线观看 | 日韩免费在线观看网站 | 狠狠操狠狠干天天操 | 成人污视频在线观看 | 欧美性极品xxxx娇小 | 激情久久久久 | 97人人模人人爽人人喊网 | 天天艹天天干天天 | 亚洲精品一区二区三区新线路 | 亚洲激情在线观看 | 久草99| 久久久久久国产精品久久 | 精品国产久| 久久久电影 | 在线观看色视频 | 欧美成人在线免费 | 九九热精品国产 | 国产精品午夜免费福利视频 | 人人爽人人乐 | 国产精品人人做人人爽人人添 | 毛片网站观看 | 五月婷婷六月综合 | 国产视频九色蝌蚪 | 97av视频在线| 亚洲国产日韩欧美在线 | 视频在线播放国产 | 国产91影视| 国产精品久久嫩一区二区免费 | 黄色大全在线观看 | 一区二区三区中文字幕在线观看 | 青春草免费视频 | av免费在线网站 | 日韩精品一区二区三区丰满 | a视频在线观看免费 | 久草精品视频在线看网站免费 | 日韩在线观看a | 349k.cc看片app | 韩日在线一区 | 欧美男同网站 | 五月综合久久 | 91九色porny蝌蚪主页 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲第一成网站 | 六月激情 | 久久久久久看片 | 国产一区二区三区高清播放 | 操碰av| 97超碰.com| av观看在线观看 | 亚洲免费国产 | 国产成人三级三级三级97 | 欧日韩在线视频 | 韩日在线一区 | 91精品国产一区 | 夜夜澡人模人人添人人看 | av综合av | 69精品在线 | 九九久久久久99精品 | 综合久久网站 | 欧美久久久 | 久久精品久久精品 | 韩日av在线 | 精品久久久久一区二区国产 | 综合网中文字幕 | 亚洲综合视频在线播放 | 激情久久婷婷 | 夜夜操天天摸 | 狠狠色丁香久久婷婷综合五月 | 99视频免费在线观看 | 成人欧美一区二区三区黑人麻豆 | 午夜久久福利视频 | 狠狠的操狠狠的干 | 人人爽人人舔 | 久久久久久久久久久久久影院 | 欧美激情亚洲综合 | 国产精品不卡 | 密桃av在线 | 国产黄a三级三级 | 免费h在线观看 | 日日添夜夜添 | 骄小bbw搡bbbb揉bbbb| 久久久久久久久久亚洲精品 | 五月综合激情婷婷 | 不卡国产在线 | 国产精品二区在线观看 | 在线观看网站你懂的 | 日韩电影一区二区三区在线观看 | 日日夜夜网 | 在线观看a视频 | 日韩免费在线看 | 91视频麻豆 | 国产在线观看 | 国产激情小视频在线观看 | 中文字幕一区二区三区四区视频 | 高清一区二区 | 福利视频导航网址 | 超碰av在线播放 | 国产成人精品一区二区三区免费 | 日韩中文在线字幕 | 欧美一区在线观看视频 | 99热99热 | 日本丰满少妇免费一区 | 99久久国产免费,99久久国产免费大片 | 97热在线观看 | 免费看av在线 | 色欧美成人精品a∨在线观看 | 在线观看a视频 | 国产免费观看高清完整版 | 亚洲综合视频在线观看 | 天天摸日日摸人人看 | 国产高清av | 一本一本久久aa综合精品 | 五月婷婷在线视频观看 | 国产五十路毛片 | 中文字幕一区2区3区 | 色婷婷成人网 | 亚洲 精品在线视频 | 欧美日韩一区二区三区在线观看视频 | 国产91全国探花系列在线播放 | 国产高清在线一区 | 国产理论免费 | 亚洲天堂毛片 | 亚洲爱视频 | 天天射天天爽 | 99久久99久久综合 | 午夜精品久久久久99热app | 天天色视频 | 2019天天干天天色 | 日韩精品高清不卡 | 国产一区在线观看免费 | 精品v亚洲v欧美v高清v | 伊人婷婷 | 欧美精品v国产精品 | 欧美日韩中文在线观看 | 十八岁免进欧美 | 成人黄色毛片视频 | 欧美久久久久久久久 | 九色精品在线 | 亚洲天堂网视频在线观看 | 久草在线免费看视频 | 国产三级视频在线 | 伊人狠狠操 | 免费男女羞羞的视频网站中文字幕 | 91视频久久| 色天天综合网 | 久久视屏网 | 欧美一区二区三区不卡 | 中文字幕激情 | 国产999精品久久久久久 | 国产在线a免费观看 | 在线看v片成人 | 久草热久草视频 | 日韩欧美99 | 中文字幕二区在线观看 | 视频在线一区 | 欧美精品xxx | 国产精品s色 | 日韩黄色在线 | 国产亚洲精品久久久久久网站 | 亚洲精品无| 操操操人人 | 免费一级特黄录像 | 欧美激情第十页 | 国产黄色片网站 | 欧美a视频 | 精品免费国产一区二区三区四区 | 久草av在线播放 | 亚洲国产视频在线 | 亚洲精品在线免费播放 | 在线观看麻豆av | 亚洲精品视频在线看 | 伊人色**天天综合婷婷 | 黄色一级片视频 | 高清精品在线 | 国产日韩视频在线 | 日韩精品中文字幕一区二区 | 午夜精品视频一区二区三区在线看 | 激情欧美xxxx | 欧美日本高清视频 | 色婷婷精品大在线视频 | 探花视频免费观看 | 国产小视频网站 | 国产精品孕妇 | 日韩欧美视频免费在线观看 | 亚洲成av人片 | 狠狠干 狠狠操 | 日韩高清 一区 | 天天躁日日躁狠狠躁av中文 | 九九精品无码 | 日韩国产精品久久久久久亚洲 | 久草久草久草久草 | 96av麻豆蜜桃一区二区 | 特级西西444www大胆高清无视频 | 亚洲综合视频在线观看 | 国产一级电影 | 国产精品自产拍在线观看中文 | 日韩女同一区二区三区在线观看 | 黄色av影视 | 91亚洲激情| 免费91麻豆精品国产自产在线观看 | 日韩高清av在线 | 91在线视频免费播放 | 五月天av在线 | www视频在线观看 | 黄色大全在线观看 | 色视频网址 | 美女一二三区 | 在线免费观看国产精品 | 日本三级在线观看中文字 | 欧美专区亚洲专区 | 亚洲精品ww| 少妇高潮流白浆在线观看 | 欧美亚洲另类在线视频 | 国产美女免费观看 | 中文字幕资源在线 | 黄色网www | mm1313亚洲精品国产 | 日韩高清不卡一区二区三区 | 亚洲国产欧美在线看片xxoo | 美女免费视频一区 | 91成人天堂久久成人 | 久久香蕉国产精品麻豆粉嫩av | 日韩av在线免费看 | av片中文 | 黄污网| 国产精品女同一区二区三区久久夜 | 国产99久久久国产精品免费看 | 成人黄大片视频在线观看 | 久久国产欧美日韩 | 中文字幕av在线电影 | 少妇做爰k8经典 | 五月综合色婷婷 | 亚洲日本国产精品 | 国产免费激情久久 | 在线成人欧美 | 日本久久精品视频 | 天天干,天天射,天天操,天天摸 | 91麻豆精品国产午夜天堂 | 在线观看黄网站 | 亚洲精品一区二区精华 | 日韩区在线观看 | 日本高清dvd | 在线观看免费av网 | av成人动漫在线观看 | 国产最新福利 | 久久www免费视频 | 日本不卡视频 | 99中文在线 | 超碰97免费观看 | 91pony九色丨交换 | 久久国语露脸国产精品电影 | 一级淫片在线观看 | av网址在线播放 | 四虎在线观看视频 | 天天射天天操天天干 | 亚洲毛片久久 | 成人午夜黄色 | 国产欧美精品在线观看 | 麻豆精品传媒视频 | 久99久中文字幕在线 | 久久婷婷色综合 | 精品人人人人 | 久久综合九色综合久99 | 久草视频网 | 国产视频亚洲精品 | 天天综合日日夜夜 | 欧美成人亚洲 | 草久电影| 婷婷午夜天 | 狠狠色丁香久久婷婷综 | 超碰在线公开 | 特黄一级毛片 | 欧美黑人性猛交 | 国产精品视频 | 91精品国产乱码在线观看 | 韩日三级av| 麻豆系列在线观看 | 最新免费av在线 | 国产小视频在线 | 天天干天天上 | 国产欧美综合视频 | 日韩免费网站 | 亚洲一二视频 | 国产成人精品久久 | 色亚洲激情 | 久草在线免费资源站 | 国产一区二区成人 | 久久国产精品色av免费看 | 成人免费看黄 | 日韩中文在线字幕 | 久久精品直播 | 香蕉久草在线 | 日韩久久精品 | www.久久久.com | 视频成人| 欧美日韩国产一区二 | 久久欧美在线电影 | 亚洲国产精品va在线看 | 亚洲一级电影 | .国产精品成人自产拍在线观看6 | 国产小视频免费在线观看 | 麻豆成人精品 | 日韩久久精品一区二区 | 五月天婷亚洲天综合网精品偷 | 精品免费观看 | 天天舔夜夜操 | 国产精品电影一区 | 免费看黄色91 | 亚洲欧美成人网 | 伊人狠狠色丁香婷婷综合 | 欧美日本国产在线观看 | www.99av| 韩国一区二区三区视频 | 久久综合久久综合久久综合 | 91成人精品观看 | 精品国产乱码久久 | 久久国产精品99精国产 | 欧美性色综合网站 | 久热国产视频 | 日韩四虎| 国产美女视频 | 91三级在线观看 | 久久久999| 亚洲一区av | 国产精品成人国产乱 | 丁香婷婷久久久综合精品国产 | 久久综合加勒比 | 欧美激情精品久久久久 | 午夜久久久久久久久 | 韩国精品一区二区三区六区色诱 | 黄色三级免费观看 | 国产亚洲激情视频在线 | av天天澡天天爽天天av | www.黄色片网站| 国产最新在线视频 | 色视频在线观看 | 日韩av电影中文字幕在线观看 | 狠狠色噜噜狠狠 | 久久精品视频在线观看 | 在线日本看片免费人成视久网 | 在线看黄色av | 天天摸天天舔 | 在线观看久久久久久 | 五月天久久久久 | 日韩羞羞 | 日韩欧美高清在线 | 日本不卡一区二区三区在线观看 | 天天av资源| 日本一区二区不卡高清 | 国产电影黄色av | 玖玖视频国产 | 日日婷婷夜日日天干 | 国产亚洲人成网站在线观看 | 日韩a级黄色 | 国产做爰视频 | 国产黄色视 | 97国产情侣爱久久免费观看 | 久久国产精品系列 | 午夜久久影院 | av资源在线看 | 久久久久黄色 | 国产一级特黄毛片在线毛片 | 成人黄色电影在线播放 | 久久国产精品99久久久久久丝袜 | 高清有码中文字幕 | 婷婷精品国产一区二区三区日韩 | 久久久久久久综合色一本 | 日韩一区二区三区高清免费看看 | av大全免费在线观看 | 在线 日韩 av | 免费色视频 | 国产精品成人一区二区三区吃奶 | 婷婷丁香社区 | 久久看片网站 | 亚洲精品乱码 | 午夜电影久久 | 精品字幕在线 | 国产剧情av在线播放 | 久久不卡av| 国产一区精品在线 | 久久av中文字幕片 | 日韩激情片在线观看 | 欧美视频不卡 | 国产少妇在线观看 | 2018亚洲男人天堂 | 久久精品视 | 亚洲人片在线观看 | 一区二区三区在线观看 | 午夜国产福利在线观看 | 精品福利在线视频 | 一区二区三区在线免费 | 久久国产精品久久w女人spa | 国产在线观看污片 | 黄在线免费看 | 99久精品视频 | 国产精品一区二区久久精品爱微奶 | 日韩午夜一级片 | 91九色蝌蚪视频网站 | 特黄特色特刺激视频免费播放 | 中文字幕xxxx | 96看片 | 成人久久18免费网站麻豆 | 欧美精品久久人人躁人人爽 | 亚洲国产日本 | av免费网站 | 国产视频在线免费观看 | 91少妇精拍在线播放 | 国产成人99av超碰超爽 | 亚洲精品一区中文字幕乱码 | 亚洲性少妇性猛交wwww乱大交 | 一本一道久久a久久精品 | 免费a现在观看 | 碰天天操天天 | 国产不卡av在线播放 | 日本护士撒尿xxxx18 | av在线之家电影网站 | 91成人精品国产刺激国语对白 | 精品在线视频一区二区三区 | 成人网444ppp | 婷婷六月色 | 国产视频在线免费 | 91一区二区三区久久久久国产乱 | 狠狠躁夜夜av| 日日夜夜精品免费观看 | 久久久亚洲电影 | 久久男人影院 | 欧美日韩亚洲国产一区 | 五月激情久久 | 免费一级片观看 | 久草在线看片 | 人人玩人人弄 | 久久久久久麻豆 | 欧美日韩一区二区免费在线观看 | 亚洲国产精品日韩 | 亚洲精品高清视频在线观看 | 视频在线一区 | 色综合五月天 | 中文字幕亚洲情99在线 | 欧美日韩在线免费视频 | 日韩视频一区二区三区 | 国产亚洲精品综合一区91 | 97爱爱爱| 一区二区av | 超碰人人av | 九九免费在线观看视频 | 51久久夜色精品国产麻豆 | 久久成人国产精品一区二区 | 久久久久久国产一区二区三区 | 国产精品精品国产 | 夜夜澡人模人人添人人看 | 一区二区电影在线观看 | 亚洲国产精彩中文乱码av | 最新av在线播放 | 久久午夜色播影院免费高清 | 亚洲黄色在线 | 亚洲午夜不卡 | 免费黄在线观看 | 国产精品2020 | 亚洲国产精品电影在线观看 | 久久精品激情 | 亚洲区另类春色综合小说校园片 | 中文字幕av全部资源www中文字幕在线观看 | 国产不卡视频在线 | 欧美aa在线 | 97人人人人| 国产日本在线播放 | 亚洲手机av | 亚洲最新av在线网站 | 成人在线你懂得 | 天堂av一区二区 | 亚洲在线成人精品 | 91亚洲精品久久久蜜桃网站 | 亚洲一区 影院 | 久久久久成人精品免费播放动漫 | 国产精品美女久久久久aⅴ 干干夜夜 | 亚洲精品国产精品国 | 顶级bbw搡bbbb搡bbbb | 911在线| 国产美女免费看 | 99视频在线观看免费 | 在线成人免费 | 四虎国产精品成人免费影视 | 精品视频中文字幕 | 亚洲精品免费在线 | 在线观看91视频 | 欧洲成人av | 天天操偷偷干 | 国产日产精品一区二区三区四区的观看方式 | 国产福利在线不卡 | 天天爽人人爽夜夜爽 | 欧美在线视频不卡 | 久久九九影视网 | 国产高清在线免费观看 | 日韩免费电影 | 99久久精品久久久久久动态片 | 美女视频黄在线观看 | 国产伦精品一区二区三区高清 | 丁香婷婷在线观看 | 黄色av一级| 欧美精品一区二区在线播放 | 日本在线观看一区 | av免费在线播放 | 日产中文字幕 | 韩国av一区二区三区在线观看 | 免费视频91蜜桃 | 亚洲国产欧美一区二区三区丁香婷 | 成年人免费看av | 国产精品18久久久 | 国产精品ⅴa有声小说 | 91亚洲精品久久久久图片蜜桃 | 人人爽人人爽人人爽学生一级 | 美女久久久久久久久久久 | 中文字幕文字幕一区二区 | 99久精品视频 | 97人人模人人爽人人喊中文字 | 999久久久久久久久 69av视频在线观看 | 草久在线观看视频 | 深夜免费网站 | 久久蜜臀一区二区三区av | 国产高清av免费在线观看 | 狠狠躁日日躁狂躁夜夜躁 | 婷婷激情五月 | 久久99精品久久久久久三级 | 热久久影视 | 久久久五月天 | 欧美在线free | 日韩av黄 | 久热精品国产 | 黄色的视频 | 久久在线视频精品 | 高清av免费观看 | www.com.黄| 久久久精品一区二区 | 久久视频精品在线观看 | 国产国语在线 | www.黄色网.com| 国产色道 | 99精品免费视频 | 中文字幕免费高清av | 久久96 | 日韩在线视| www.亚洲精品视频 | 国产一线二线三线性视频 | 日韩xxx视频| 91视频免费观看 | 九九视频在线 | 欧美一二三区在线观看 | 亚洲美女在线国产 | 人人躁 | 国产精品一区免费在线观看 | 国产精品久久久久久av | 精品理论片 | 欧美一级久久久 | 亚洲码国产日韩欧美高潮在线播放 | 久久99精品热在线观看 | 99精品免费在线观看 | 青青久草在线视频 | 精品国产福利在线 | 在线观看免费av网 | 日韩在线中文字幕 | 日本h在线播放 | 欧美日韩一区二区三区在线免费观看 | 久久精品视频国产 | 久久免费在线观看视频 | 超碰在线cao| 国产高清中文字幕 | 国色天香在线观看 | 欧美网址在线观看 | 久久久一本精品99久久精品 | 精品一区二区免费在线观看 | 中文字幕在线一二 | 超碰在线公开 | 91精品1区 | 国产亚洲精品中文字幕 | 亚洲精品一区二区精华 | 日韩三级视频在线看 | 中文字幕第一页在线vr | 成人一区二区三区在线观看 | 91福利视频免费 | 天天天天射 | 日韩簧片在线观看 | 国产高清中文字幕 | 免费观看国产视频 | 国产视频一 | 人人爽人人爽 | 精品久久久久免费极品大片 | 国产视频二区三区 | 国产综合在线视频 | 国产成人综合图片 | av一本久道久久波多野结衣 | 国产精品视频永久免费播放 | 欧美欧美 | 中文字幕日本在线 | 久久五月婷婷丁香 | 午夜丁香视频在线观看 | 中文字幕成人在线 | 欧美日韩国产成人 | 97福利视频| 又紧又大又爽精品一区二区 | 欧美日韩国产综合一区二区 | 精品国产成人av | 欧美日韩免费一区 | 波多野结衣最新 | 制服丝袜亚洲 | 中文字幕在线乱 | 国产精品日韩在线播放 | 欧美国产日韩一区二区 | 日韩深夜在线观看 | 五月婷婷影院 | 天天躁天天操 | 久久久精品 一区二区三区 国产99视频在线观看 | 波多野结衣亚洲一区二区 | 久久精品视频免费 | 五月婷香蕉久色在线看 | 黄色三级网站在线观看 | 日韩午夜大片 | 色综合天天狠狠 | 久久免费国产电影 | 国产欧美精品一区二区三区四区 | 欧美网站黄色 | 国产不卡免费视频 | 婷婷av网| 精品国模一区二区三区 | 在线免费观看视频你懂的 | 久草在线这里只有精品 | 黄色一级在线免费观看 | 久久新视频 | 欧美大码xxxx | 夜夜狠狠 | 日韩在线免费观看视频 | 色五月色开心色婷婷色丁香 | 中文av资源站 | 人人爽人人舔 | 久久9精品 | 免费久久99精品国产婷婷六月 | 九九久| 久久久久在线 | 91精品国产自产91精品 | 一级一片免费看 | 日韩理论| 久久久国产一区二区三区四区小说 | 中文字幕网站视频在线 | 午夜精品久久久久久久久久久久 | 五月天高清欧美mv | 国产午夜精品免费一区二区三区视频 | 国产免费三级在线观看 | 成人欧美一区二区三区黑人麻豆 | 国产小视频在线免费观看 | 色婷婷国产精品一区在线观看 | 人人爽人人爽 | 日日干天天 | 日韩av成人在线观看 | 免费在线电影网址大全 | 欧美了一区在线观看 | 中文字幕视频免费观看 | 亚洲国产欧洲综合997久久, | 久久精品资源 | 亚洲精品免费在线观看 | 欧美激情第28页 | 国产在线观看地址 | 一区二区欧美激情 | 久久精品视频在线播放 | 深爱激情五月婷婷 | 久久99精品一区二区三区三区 | 日韩va欧美va亚洲va久久 | 精品亚洲免费 | 成人黄色中文字幕 | 在线之家免费在线观看电影 | 日韩免费观看一区二区 | 亚洲精选视频免费看 | 尤物97国产精品久久精品国产 | 2018亚洲男人天堂 | 天天草天天干天天射 | 日本中文字幕网址 | 亚洲精品免费看 | 中文字幕资源网 国产 | 狠狠干天天操 | 69人人| 国产精品一区免费在线观看 | 久久福利国产 | 干干日日 | 日韩网站中文字幕 | 亚洲精品中文字幕在线观看 | 黄色福利网站 | 国产aa免费视频 | 久久久久女人精品毛片 | 精品欧美乱码久久久久久 | 久久久久久久毛片 | 黄色在线观看免费网站 | 久久综合九色欧美综合狠狠 | 久久久久久久久久久高潮一区二区 | 国产成人av片 | 欧美日韩免费一区 | 久久99九九99精品 | 91视频久久久久久 | 久久另类视频 | 欧美精品久久 | 久久黄色免费视频 | 欧美色图东方 | 日本久草电影 | 色网站免费在线观看 | 免费观看一区二区三区视频 | 97超碰人人模人人人爽人人爱 | 人人爽人人爽人人爽 | 99精品视频在线观看免费 | 麻豆成人精品视频 | 亚洲视屏一区 | 国产伦理久久精品久久久久_ | 狠狠干在线播放 | 欧美五月婷婷 | 欧美国产91 | 国产精品嫩草影院123 | 日本少妇高清做爰视频 | 国产成人免费在线观看 | 欧美日韩国语 | 综合久久久久久久 | 手机在线看片日韩 | 国产一二三区av | 在线色亚洲 | 一区二区视频欧美 | 久久久久亚洲精品中文字幕 | 五月婷激情| 天天操天天操天天操天天操天天操 | 高清av免费看 | 久久老司机精品视频 | 免费在线观看av电影 | 亚洲人成人99网站 | 成人精品国产免费网站 | 福利视频一区二区 | 久久成年人 | 不卡的一区二区三区 | 性色在线视频 | www.91成人| 婷婷激情在线 | 麻豆久久一区二区 | 久久久久97国产 | 中文字幕a在线 | 日韩久久午夜一级啪啪 | 国产999在线 | 岛国精品一区二区 | 天天色天天上天天操 | 美女视频网站久久 | 日韩乱码在线 | 久操免费视频 | 日韩在线免费视频观看 | 亚洲免费永久精品国产 | 午夜精品视频一区二区三区在线看 | 欧美做受高潮电影o | 涩涩网站在线看 | 91九色免费视频 | 五月婷网站 | 亚洲精品日韩在线观看 | 亚洲精品字幕在线观看 | 黄网站免费看 | 特级毛片网 | 深爱开心激情网 | 91污视频在线| a天堂最新版中文在线地址 久久99久久精品国产 | 成人黄色中文字幕 | 日韩精品免费在线观看 | 国产视频久 | 99久久精品午夜一区二区小说 | 久久国内精品视频 | 日韩专区在线 | 国产区 在线 | 日韩美女黄色片 | 色综合天天视频在线观看 | 天天操天天摸天天干 | 亚洲美女免费精品视频在线观看 | 国产色视频一区二区三区qq号 | 日韩精选在线 | 亚洲影院天堂 | 亚洲自拍av在线 | 欧美色综合天天久久综合精品 | 天天天在线综合网 | 欧美精选一区二区三区 | 国产视频不卡一区 | 五月婷久 | 91最新国产 | 黄色片免费看 | 91麻豆精品国产91 | 日韩性xxxx| 日韩精品一区二区三区电影 | 国产不卡一区二区视频 | 国产午夜精品一区二区三区在线观看 | 91精品在线播放 | 亚洲激情五月 | 黄色在线看网站 | av中文字幕网址 | 天天操福利视频 | 国产黄色理论片 | 国产在线一区二区 | 91成人精品| 午夜精品久久久久久中宇69 | 国产精品岛国久久久久久久久红粉 | 欧美一级片在线免费观看 | 色婷婷狠| 在线 高清 中文字幕 | 最新中文字幕在线播放 | 国产精品一区二区美女视频免费看 | 人人爽影院 | 日韩高清dvd| 黄色app网站在线观看 | 精品视频在线看 | 国产精品成人自产拍在线观看 | 国产麻豆果冻传媒在线观看 | 久久精品久久久久久久 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 免费色婷婷 | 色综合天天综合在线视频 | 九热在线 | 在线探花 | 国外成人在线视频网站 | 亚洲成免费 | 国产精品久久久999 国产91九色视频 | 久久久久久高潮国产精品视 | 亚洲香蕉在线观看 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 狠狠色丁香久久婷婷综合五月 | www91在线观看 | 久操视频在线 | 欧美一级黄色网 | 波多野结衣在线播放一区 | 探花视频免费观看高清视频 | 天天草天天色 | 免费h精品视频在线播放 | 伊人一级 | 久久激情视频免费观看 | 久久久蜜桃一区二区 | 国产精品三级视频 | 午夜精品一区二区三区可下载 | 欧美日韩午夜 | 日韩欧美综合在线视频 | 6080yy午夜一二三区久久 | 欧美a级一区二区 | 免费网站黄色 | 97精品国产91久久久久久久 | 日韩欧美在线视频一区二区三区 | 岛国大片免费视频 | 久久综合免费 | 超碰97人| 日韩午夜视频在线观看 | 国产日本三级 | 久黄色 | 亚洲最大免费成人网 | 成人高清在线观看 | 欧美日韩久久 | 91插插插网站 | 欧美亚洲精品一区 | 国产精品美女久久久久久久 | 国产精品成人一区二区三区吃奶 | 91福利视频久久久久 | 中中文字幕av在线 | 亚洲国产合集 | 久久久 激情 | 国产精品高潮呻吟久久av无 | 天天色天天射天天干 | 久久99免费视频 | 成人在线观看资源 | 日韩av一区在线观看 | 国内精品久久久久影院日本资源 | 青草视频在线 | 亚洲国产日韩一区 | 粉嫩av一区二区三区四区 | 永久免费的av电影 | 天天草av | 性色av免费在线观看 | www.xxx.性狂虐| a极黄色片 | 91最新地址永久入口 | 97av视频| 最近中文字幕免费av | 91九色免费视频 | 最新日韩在线 | 国产高清精| 免费精品人在线二线三线 | 亚洲va在线va天堂 | 一二三区高清 | 日韩视频中文 | 欧美日韩一区二区在线 | 婷婷天天色 | 久久久久久毛片精品免费不卡 | 97免费中文视频在线观看 | 日韩一区二区三区免费电影 | 成人午夜影院 | 亚洲精品激情 |