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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core的配置(2):配置模型详解

發布時間:2025/3/13 asp.net 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core的配置(2):配置模型详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上面一章我們以實例演示的方式介紹了幾種讀取配置的幾種方式,其中涉及到三個重要的對象,它們分別是承載結構化配置信息的Configuration,提供原始配置源數據的ConfigurationProvider,以及作為“中間人”的ConfigurationBuilder。接下來我們將會對由這三個核心對象組成的配置模型進行詳細介紹,不過在此之前我們有必要來認識配置信息在不同載體中所體現出來的三種結構。

目錄
一、配置的三種結構
邏輯結構
原始結構
物理結構
結構轉換
二、Configuration
三、ConfigurationProvider
四、ConfigurationBuilder

一、配置的三種結構

相同的數據具有不同的表現和承載方式,同時體現出不同的數據結構。對于配置來說,它在消費過程中是以Configuration對象的形式來體現的,該對象邏輯上具有一個樹形化的層次結構。配置具有多種來源,可以是內存對象、物理文件或者數據庫,不同類型的數據源決定了不同的配置結構。我們將這兩種結構稱為邏輯結構和原始結構。在這兩種結構之間,配置還存在一種中間結構,我們姑且稱之為物理結構。

邏輯結構

配置的邏輯結構就是Configuration對象所體現的結構,說得更加準確一點應該是針對Configuration對象的API所體現的結構(因為不是所有的Configuration對象內部都封裝一組配置數據)。配置在邏輯上呈現為一種樹形結構,我們稱之為配置樹,組成這棵樹的某個節點就體現為一個Configuration對象。表現為鍵值對的原子配置項存儲于葉子節點中,而非葉子節點僅僅體現為一個配置節點的邏輯容器,自身不包含具體的配置數據。對于我們在第一節定義的FormatSettings來說,它對應的配置具有如右圖所示的邏輯結構。

原始結構

配置采用怎樣的原始結構取決于我們采用何種方式定義它。最常見的配置源體現為采用某個格式的文本文件,那么配置的原始結構則由文件的格式來決定。對于我們在第一節定義的FormatSettings類型,我們可以按照如下的形式以XML和JSON的格式來定義其配置。

XML:

1: <Format> 2: <DateTime> 3: <LongDatePattern>dddd, MMMM d, yyyy</LongDatePattern> 4: <LongTimePattern>h:mm:ss tt</LongTimePattern> 5: <ShortDatePattern>M/d/yyyy</ShortDatePattern> 6: <ShortTimePattern>h:mm tt</ShortTimePattern> 7: </DateTime> 8: <CurrencyDecimal> 9: <Digits>2</Digits> 10: <Symbol>$</Symbol> 11: </CurrencyDecimal> 12: </Format>

JSON:

1: { 2: "format": { 3: "dateTime": { 4: "longDatePattern" : "dddd, MMMM d, yyyy", 5: "longTimePattern" : "h:mm:ss tt", 6: "shortDatePattern" : "M/d/yyyy", 7: "shortTimePattern" : "h:mm tt" 8: }, 9: "currencyDecimal": { 10: "digits": "2", 11: "symbol": "$" 12: } 13: } 14: }

物理結構

配置模型的終極目的就是將配置從原始結構轉換成邏輯結構。不過在進行結構轉化的時候,它并不會直接將原始的配置數據轉換成一個Configuration對象,它們之間由一種被我稱為物理結構的中間結構作為過度。配置的物理結構體現為一個簡單的數據字典。同樣是針對FormatSettings這個類型,對應的配置將具有如下表所示的物理結構。

結構轉換

配置模型的終極目的在于將具有不同來源的配置轉換成Configuration對象,配置源和Configuration對象本身分別體現了配置的原始結構和邏輯結構,所以配置模型旨在實現配置數據從原始結構向邏輯結構的轉換。在具體轉換過程中,配置模型先利用與配置源相對應的ConfigurationProvider將配置數據從原始結構轉換成體現為數據字典的物理結構。當我們利用ConfigurationBuilder生成Configuration的時候,實際上將配置數據從物理結構轉換成邏輯結構。

二、Configuration

我們在上面以數據結構轉換的角度分析了Configuratin、ConfigurationProvider和ConfigurationBuilder這三個核心對象在配置模型中所起的作用,接下來讓我們來更加深入地認識它們。我們首先來介紹Configuration對象,本章不斷提及的Configuration泛指類型實現了IConfiguration接口的對象,該接口定義在“Microsoft.Extensions.Configuration”命名空間下,如果未作特別說明,本章涉及到的與配置相關的類型均定義在此命名空間下。

1: public interface IConfiguration 2: { 3: IEnumerable<IConfigurationSection> GetChildren(); 4: IConfigurationSection GetSection(string key); 5: IChangeToken GetReloadToken(); 6: 7: string this[string key] { get; set; } 8: }

配置具有樹形邏輯結構,一個Configuration對象表示配置樹的某個配置節點。對于組成整棵樹的所有配置節點來說,表示根節點的Configuration對象與表示其它配置節點的Configuration對象相比具有不同的特性,所以配置模型采用不同的接口來表示它們。具體來說,基于根節點的Configuration對象通過接口IConfigurationRoot表示,另一個接口IConfigurationSection則表示針對非空節點的Configuration對象,兩個接口都繼承IConfiguration。如右圖所示,一棵完整的配置樹由一個ConfigurationRoot對象和若干ConfigurationSection構成。

ConfigurationRoot

我們將所有實現了IConfigurationRoot接口的類型和其對象統稱為ConfigurationRoot。如下面的代碼片段所示,IConfigurationRoot僅僅包含一個唯一的方法Reload實現對配置數據的重新加載。一個ConfigurationRoot對象表示配置數的根節點,如果它被重新加載了,那么這顆配置樹承載的所有配置數據均被重新加載了。

1: public interface IConfigurationRoot : IConfiguration 2: { 3: void Reload(); 4: }

ConfigurationSection

我們將所有實現了IConfigurationSection接口的類型及其對象統稱為ConfigurationSection,一個ConfigurationSection對應著配置樹中某個非根配置節。IConfigurationSection具有如下三個屬性,只讀屬性Key用來唯一標識多個“同父”配置節,而另一個只讀屬性Path則表示從根節點到父節點的路徑,該路徑由ConfigurationSection的Key組成,并采用冒號作為分隔符。Path和Key的組合體現了當前配置節在整個配置樹中的位置。

1: public interface IConfigurationSection : IConfiguration 2: { 3: string Path { get; } 4: string Key { get; } 5: string Value { get; set; } 6: }

IConfigurationSection的Value屬性表示配置節的值,在大部分情況下,只有配置樹葉子結點對應的ConfigurationSection對象才具有值,非葉子節點對應的ConfigurationSection對象實際上僅僅表示一組隸屬于它的所有子配置節的邏輯容器,它們的Value一般返回Null。值得一體的是,這個Value屬性并不是只讀的,而是可讀可寫的。

在對ConfigurationRoot和ConfigurationSection具有基本了解情況下我們回過頭來看看定義在接口IConfiguration中的成員。它的GetChildren方法返回一組表示其子配置節的ConfigurationSection對象集合,另一個方法GetSection則根據指定的Key返回對應的ConfigurationSection對象。當GetSection方法執行的時候,指定的參數將會與當前ConfigurationSection的Path進行組合以確定目標ConfigurationSection所在的路徑,所以如果在調用該方法的時候指定一個相對于當前配置節的路徑,我們是可以得到子節點以下的某個配置節。

1: Dictionary<string, string> source = new Dictionary<string, string> 2: { 3: ["A:B:C"] = "ABC" 4: }; 5: IConfiguration root = new ConfigurationBuilder() 6: .Add(new MemoryConfigurationProvider(source)) 7: .Build(); 8:? 9: IConfigurationSection section1 = root.GetSection("A:B:C"); 10: IConfigurationSection section2 = root.GetSection("A:B").GetSection("C"); 11: IConfigurationSection section3 = root.GetSection("A").GetSection("B:C"); 12:? 13: Debug.Assert(section1.Value == section2.Value && section2.Value == section3.Value); 14: Debug.Assert(!ReferenceEquals(section1, section2) && !ReferenceEquals(section2, section3)); 15: Debug.Assert(null == root.GetSection(Guid.NewGuid().ToString()));

如上面的代碼片段所示,我們以不同的方式調用GetSection方法得到的都是路徑為“Format:DateTime:LongDatePattern”的ConfigurationSection。上面這段代碼還體現了另一個有趣的現象,雖然這三個ConfigurationSection對象均指向配置樹的同一個節點,但是它們卻并非同一個對象。換句話說,當我們調用GetSection方法的時候,不論配置樹種是否存在一個與指定路徑匹配的配置節,它總是會創建一個全新的ConfigurationSection對象。

IConfiguration還具有一個索引,我們可以指定子配置節的Key或者相對當前配置節的路徑得到對應配置節的值。當這個索引執行的時候,它會按照與GetSection方法完全一致的邏輯得到一個ConfigurationSection對象,并返回其Value屬性。如果配置樹中不具有匹配的配置節,該索引會返回Null而不會拋出異常。

三、ConfigurationProvider

為配置模型提供原始配置數據的ConfigurationProvider是對所有實現了IConfigurationProvider接口的所有類型及其對象的統稱。從配置數據結構轉換的角度來看,ConfigurationProvider的目的在于將配置數據從原始結構轉換成物理結構,由于配置數據的物理結構體現為一個簡單的二維數據字典,所以我們會發現定義在IConfigurationProvider接口中的方法大都體現為針對字典對象的相關操作。

1: public interface IConfigurationProvider 2: { 3: void Load(); 4:? 5: bool TryGet(string key, out string value); 6: void Set(string key, string value); 7: IEnumerable<string> GetChildKeys(IEnumerable<string> earlierKeys, string parentPath, string delimiter) 8: }

配置數據的加載通過調用ConfigurationProvider的Load方法來完成。我們可以調用TryGet方法獲取有指定的Key所標識的配置項的值。從數據持久化的角度來講,ConfigurationProvider基本上都是只讀的,也就是說ConfigurationProvider只負責從持久化資源中讀取配置數據,而不負責更新保存在持久化資源的配置數據,所以它提供的Set方法設置的配置數據一般只會保存在內存中。ConfigurationProvider的GetChildKeys方法用于獲取指定路徑對應配置節的所有子節點的Key。

每種不同類型的配置源都具有對應的ConfigurationProvider,它們對應的類型大都不會直接實現IConfigurationProvider接口,而是繼承另一個名為ConfigurationProvider的抽象類。這個抽象類的定義其實很簡單,從如下的代碼片段可以看出它僅僅是對一個IDictionary<string, string>對象的封裝,其Set和TryGetValue方法最終操作的都是這個字典對象。它實現了Load方法并將其定義成虛方法,具體的ConfigurationProvider可以通過重寫這個方法從相應的數據源中讀取配置數據并對這個字典對象進行初始化。

1: public abstract class ConfigurationProvider : IConfigurationProvider 2: { 3: protected IDictionary<string, string> Data { get; set; } 4:? 5: public IEnumerable<string> GetChildKeys(IEnumerable<string> earlierKeys, string parentPath, string delimiter) 6: { 7: //省略實現 8: } 9:? 10: public virtual void Load() 11: {} 12:? 13: public void Set(string key, string value) 14: { 15: this.Data[key] = value; 16: } 17:? 18: public bool TryGet(string key, out string value) 19: { 20: return this.Data.TryGetValue(key, out value); 21: } 22: //其他成員 23: }

接下來我們簡單介紹一下定義在這個抽象類中GetChildKeys方法的邏輯。采用基于路徑的Key讓數據字典在邏輯上具有了樹形化層次結構,而這個方法用于獲取將指定配置節作為父節點的所有配置節的Key。指定的父配置節通過參數parentPath表示的路徑來體現,另一個參數delimiter則表示路徑采用的分隔符。除此之外,這個方法還具有一個字符串集合類型的參數earlierKeys,它表示預先解析出來的Key,這個列表會包含在返回的結果中。

1: class Program 2: { 3: static void Main(string[] args) 4: { 5: Dictionary<string, string> source = new Dictionary<string, string> 6: { 7: ["A:B:C"] = "", 8: ["A:B:D"] = "", 9: ["A:E"] = "", 10: }; 11:? 12: MemoryConfigurationProvider provider = new MemoryConfigurationProvider(source); 13: Console.WriteLine("{0, -20}{1}", "Parent Path", "Child Keys"); 14: Console.WriteLine("------------------------------------------"); 15:? 16: Print("Null", provider.GetChildKeys(new string[] { "X", "Y", "Z" }, null, ":")); 17: Print("A", provider.GetChildKeys(new string[] { "x", "y", "z" }, "A", ":")); 18: Print("A:B", provider.GetChildKeys(new string[] { "X", "Y", "Z }, "A:B", ":")); 19: Print("A:B:C",provider.GetChildKeys(new string[] { "X", "Y", "Z }, "A:B:C", ":")); 20: } 21:? 22: static void Print(string parentPath, IEnumerable<string> keys) 23: { 24: Console.WriteLine("{0, -20}{1}", parentPath, string.Join(", ", keys.ToArray())); 25: } 26: }

為了讓讀者朋友們能夠更加直觀地理解GetChildKeys方法的邏輯,我們編寫了如上一段實例程序。我們創建了一個MemoryConfigurationProvider對象,由塔封裝的配置數據字段包含三個元素,它們對應的Key分別是“A:B:C”、“A:B:D”和“A:E”。我們調用它的GetChildKeys方法并將表示父節點的路徑分別指定為“A”、“A:B和“A:B:C”以獲取相應子節點的Key。除此之外,我們采用冒號(“:”)作為分隔符,并將earlierKeys指定為包含“X”、“Y”和“Z”三個元素的數組。這段程序執行之后會在控制臺上產生如下的輸出結果,我們從中可以看出一個細節,返回的結構并沒有將重復的Key剔除

1: Parent Path Child Keys 2: ------------------------------------------ 3: Null X, Y, Z 4: A B, B, E, X, Y, Z: 5: A:B C, D, X, Y, Z 6: A:B:C X, Y, Z


四、ConfigurationBuilder

ConfigurationBuilder泛指所有實現了IConfigurationBuilder接口的類型及其對象,它在配置模型中的作用就是利用注冊的ConfigurationProvider提取轉換成數據字典的配置數據并創建對應的Configuration對象,具體來說創建的是一個體現配置樹的ConfigurationRoot對象。注冊到ConfigurationBuilder上的ConfigurationProvider體現為IConfigurationBuilder接口的Providers屬性,我們可以調用Add方法將ConfigurationProvider添加到這個集合中。

1: public interface IConfigurationBuilder 2: { 3: IEnumerable<IConfigurationProvider> Providers { get; } 4: Dictionary<string, object> Properties { get; } 5:? 6: IConfigurationBuilder Add(IConfigurationProvider provider); 7: IConfigurationRoot Build(); 8: }

除此之外,IConfigurationBuilder還具有一個字典類型的只讀屬性Properties,我們可以將任意自定義的屬性附加當一個ConfigurationBuilder對象上,并通過對應的Key得到這些屬性值。ConfigurationRoot的創建最終通過Build方法完成。

原生的配置模型中提供了一個實現IConfigurationBuilder接口的類型,那就是在我們之前演示的實例中多次使用的ConfigurationBuilder類,配置模型默認的配置生成機制體現在它實現的Build方法中。具體來說,實現在ConfigurationBuilder類中的Build方法返回對象的真實類型為ConfigurationRoot,該對象通過一個類型為ConfigurationSection對象表示非根配置節。右圖所示的UML展示了配置模型中以Configuration、ConfigurationProvider和ConfigurationBuilder為核心的相關接口/類型以及它們之前的關系。

ConfigurationRoot和ConfigurationSection這個兩個類型的定義體現配置模型默認采用怎樣的機制讀取配置數據,這是我們本節論述的重點內容。雖然配置模型最終提供的配置數據通過Configuration對象來體現,但是不論ConfigurationRoot還是ConfigurationSection對象,它們自身本沒有封裝任何的形式的配置數據所有針對它們的數據讀寫操作最終都會轉移到相應的ConfigurationProvider上。由于Configuration對象僅僅體現為ConfigurationProvider的代理,所以由同一個ConfigurationBuilder創建的所有ConfigurationRoot對象都是等效的,下面的代碼片段體現了這樣的等效性。

1: IConfigurationBuilder builder = new ConfigurationBuilder().Add(new MemoryConfigurationProvider()); 2:? 3: IConfiguration config1 = builder.Build(); 4: IConfiguration config2 = builder.Build(); 5:? 6: config1["Foobar"] = "ABC"; 7: Debug.Assert(config2["Foobar"] == "ABC");

組成配置樹的ConfigurationRoot和ConfigurationSection不但自身封裝和配置數據,配置節父子關系的維護也并不直接通過對象之間的引用關系來維系。如右圖所示,對于一個表示配置樹中某個非根配置節的ConfigurationSection對象來說,它僅僅保留著對根節點的引用,后者是一個類型為ConfigurationRoot的對象。當我們調用ConfigurationSection方法獲取或者設置配置數據的時候,它會直接將調用請求轉發給表示配置樹根的ConfigurationRoot對象。

具體來說,當我們試圖通過某個ConfigurationSection對象得到對應配置節點的值時,該對象會將配置數據的讀取請求轉發給它所引用的表示數值樹根的ConfigurationRoot對象,同時將自身的路徑一并傳遞給后者。ConfigurationRoot最終利用ConfigurationProvider根據指定的路徑得到對應配置項的值,左圖揭示了這樣的流程。

在對實現在ConfigurationRoot和ConfigurationSection這兩個類中針對配置的讀寫機制有了大概的了解之后,我們從代碼實現的角度來進一步地來認識這兩個類型,在這之前我們需要先來認識一個名為ConfigurationPath的工具類。顧名思義,ConfigurationPath幫助我們實現針對配置樹路徑相關的計算,其中Combine方法將多個片段合并成一個完整的路徑,GetSectionKey方法會根據指定的路徑得到對應的Key,而GetParentPath則根據指定的路徑得到上一級的路徑。

1: public static class ConfigurationPath 2: { 3: public static string Combine(params string[] pathSegements) ; 4: public static string Combine(IEnumerable<string> pathSegements) ; 5: public static string GetSectionKey(string path) ; 6: public static string GetParentPath(string path) ; 7: }

ConfigurationRoot

ConfigurationRoot真實的實現邏輯基本上體現在如下所示的代碼片段中。一個ConfigurationRoot對象維護著一組提供原始配置數據的ConfigurationProvider對象,每一次對配置數據的讀寫操作最終都會轉移到它們頭上。當調用它的索引指定相應的Key獲取對應配置項的值時,我們會將這組ConfigurationProvider對象進行逆向排序,并將指定的Key作為參數依次調用每個ConfigurationProvider的TryGet方法直到該方法返回True,并將這個方法返回的值最為索引最終的返回值。當我們利用索引對指定配置項的值進行設置的時候,實際上會調用每個ConfigurationProvider的Set方法。

1: public class ConfigurationRoot: IConfigurationRoot 2: { 3: private IList<IConfigurationProvider> providers; 4:? 5: public ConfigurationRoot(IList<IConfigurationProvider> providers) 6: { 7: this.providers = providers; 8: providers.ForEach(provider => provider.Load()); 9: } 10:? 11: public string this[string key] 12: { 13: get 14: { 15: string value = null; 16: return providers.Reverse().Any(p => p.TryGet(key, out value)) 17: ? value: null; 18: } 19: set 20: { 21: providers.ForEach(provider => provider.Set(key, value)); 22: } 23: } 24:? 25: public IEnumerable<IConfigurationSection> GetChildren()=> this.GetChildren(null); 26:? 27: public IConfigurationSection GetSection(string key) => new ConfigurationSection(this, key); 28:? 29: public void Reload() => providers.ForEach(provider => provider.Load()); 30:? 31: internal IEnumerable<IConfigurationSection> GetChildrenCore(string path) 32: { 33: return providers.Aggregate(Enumerable.Empty<string>(), 34: (seed, source) => source.GetChildKeys(seed, path, ":")) 35: .Distinct() 36: .Select(key => GetSection(ConfigurationPath.Combine(path, key))); 37: } 38: //其它成員 39: }

ConfigurationRoot實現在索引中讀取配置的邏輯體現了配置模型一個重要的特性,那就是如果某個配置項的數據具有多個來源,那么最后添加到ConfigurationBuilder中的ConfigurationProvider具有更高的優先級,我們姑且將這個特性稱為ConfigurationProvider“后來居上”的原則。如果希望覆蓋應用現有的某個配置,我們只需要將提供新配置的ConfigurationProvider添加到ConfigurationBuilder之上即可。

我們定義了一個輔助方法GetChildrenCore來獲取某個配置節的所有子配置節,這個指定的配置節通過作為參數的路徑來表示。當這個方法執行之后,所有ConfigurationProvider的GetChildKeys方法會被調用以獲取所有子配置節的Key,我們利用它們生成表示配置節的ConfigurationSection對象。在實現的GetChildren方法中,我們會調用這個方法來獲取隸屬于自己的所有子配置節。而另一個GetSection方法中,我們直接返回根據指定路徑(對于表示根配置節來說,參數key表示配置節的路徑)創建的ConfigurationSection對象。

ConfigurationSection

在上面關于用于模擬ConfigurationRoot類型定義的代碼中我們知道最終表示非根配置節的ConfigurationSection對象是根據它的路徑和作為根配置節的ConfigurationRoot對象創建的。ConfigurationRoot將配置的讀寫操作遞交給相應的ConfigurationProvider來完成,而ConfigurationSection則將委托自己的根配置節來完成讀寫配置的操作,這樣的策略體現在如下所示的代碼中。

1: public class ConfigurationSection: IConfigurationSection 2: { 3: private ConfigurationRoot root; 4: private string key; 5:? 6: public string Key 7: { 8: get { return key ?? (key = ConfigurationPath.GetSectionKey(this.Path)); } 9: } 10: public string Path { get; private set; } 11: public string Value { get; set; } 12: public string this[string key] 13: { 14: get 15: { 16: return root[this.Path]; 17: } 18:? 19: set 20: { 21: root[this.Path] = Value; 22: } 23: } 24:? 25: public ConfigurationSection(ConfigurationRoot root, string path) 26: { 27: this.root = root; 28: this.Path = path; 29: } 30:? 31: public IConfigurationSection GetSection(string key) => root.GetSection(ConfigurationPath.Combine(this.Path, key)); 32: public IEnumerable<IConfigurationSection> GetChildren() => root.GetChildren(this.Path); 33: //其它成員 34: }

[1] ForEach是為了讓代碼盡量精練而為類型IEnumerable<T>定義的擴展方法,在后續章節中我們會經常使用到它。

?

ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
ASP.NET Core的配置(3): 將配置綁定為對象[上篇]
ASP.NET Core的配置(3): 將配置綁定為對象[下篇]
ASP.NET Core的配置(4):多樣性的配置源[上篇]
ASP.NET Core的配置(4):多樣性的配置源[中篇]
ASP.NET Core的配置(4):多樣性的配置源[下篇]
ASP.NET Core的配置(5):配置的同步[上篇]
ASP.NET Core的配置(5):配置的同步[下篇]

轉載于:https://www.cnblogs.com/artech/p/asp-net-core-config-02.html

總結

以上是生活随笔為你收集整理的ASP.NET Core的配置(2):配置模型详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩在线首页 | 天天草夜夜 | 免费在线观看亚洲视频 | 日韩免费一级a毛片在线播放一级 | 亚洲一级黄色片 | 色网av| 久久国语 | 成人黄色免费观看 | 99精品免费久久久久久久久日本 | 人人狠狠综合久久亚洲 | 日韩视频免费观看高清完整版在线 | 国产成人在线一区 | 91高清在线| 国产中文字幕在线 | av在线观 | 亚洲久草视频 | 国产婷婷久久 | 在线观看www. | av成人免费在线观看 | 久免费 | 91av视频| 日韩激情免费视频 | 在线播放av网址 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 精品色999 | 欧美视屏一区二区 | 免费观看完整版无人区 | 玖玖视频免费在线 | 啪啪免费观看网站 | 中文字幕乱码在线播放 | 中文字幕网站视频在线 | 韩国一区二区三区视频 | 狠狠躁日日躁狂躁夜夜躁 | 韩国三级av在线 | 成 人 黄 色 片 在线播放 | 97人人人| 九色91在线视频 | 91久久国产露脸精品国产闺蜜 | 久久精品超碰 | 精品一区二区三区在线播放 | 综合色伊人 | 久久亚洲美女 | 欧美黑人猛交 | 精品成人免费 | 精品久久美女 | 日韩精品免费在线视频 | 又黄又爽又刺激视频 | 日韩在线视频播放 | 欧美a级片免费看 | 在线观看国产日韩 | 97在线视| 青青五月天 | 一级成人免费视频 | 欧美国产日韩一区二区三区 | 国产精品自产拍在线观看 | av电影不卡 | 91精品免费看| 欧美做受高潮电影o | 久久99操| av电影亚洲 | 国产精品婷婷 | 国产亚洲精品久久19p | 国产精品私拍 | 日日日日干| 欧美伦理一区 | 天天干天天干天天 | 亚洲春色奇米影视 | 黄色一级影院 | 免费国产亚洲视频 | 精品美女久久久久久免费 | 99久久影视 | 久久黄色精品视频 | 九九热久久免费视频 | 日韩av一区二区在线播放 | 一区二区在线影院 | 精品福利在线 | 91高清免费在线观看 | 久久久综合香蕉尹人综合网 | 欧美ⅹxxxxxx| 中文字幕色婷婷在线视频 | 亚洲综合小说电影qvod | 四虎在线影视 | 国产精品九九九 | 岛国av在线不卡 | av福利第一导航 | 久久综合在线 | 精品美女在线视频 | 一区二区 不卡 | 成人午夜精品 | 国内精品久久久久影院男同志 | 国产亚洲精品久久久久久久久久久久 | 91精品国产乱码 | 色婷婷亚洲 | 久久久伦理 | 天天操天天摸天天爽 | 国产伦理久久精品久久久久_ | 激情婷婷丁香 | 欧美 日韩 国产 中文字幕 | 999热视频 | 久久久久国产精品免费免费搜索 | 亚洲视频 一区 | 日日干天天爽 | 亚洲天天在线 | 7777精品伊人久久久大香线蕉 | 激情欧美xxxx| 天天干天天操天天做 | 色999在线 | 久久综合色天天久久综合图片 | 五月香视频在线观看 | 色视频成人在线观看免 | 视频福利在线 | 国产精品毛片一区视频播 | 伊人天堂网 | avove黑丝 | www亚洲国产 | 日韩高清在线一区二区 | 综合色播| 亚洲成人频道 | 日韩在线国产精品 | 日韩一区精品 | 中文字幕中文 | 国产黄色片一级三级 | 黄色a视频 | 人人射| 91视频在线 | 欧美精品亚洲二区 | 婷婷去俺也去六月色 | 国产精品久久三 | 国产免费久久久久 | 午夜12点| 一级一级一片免费 | 日韩精品久久一区二区 | 欧美日韩国产在线一区 | 亚洲欧洲一级 | 久久精品美女视频网站 | 国内偷拍精品视频 | 国产成人精品亚洲日本在线观看 | 91在线精品视频 | 奇米网在线观看 | 99精品偷拍视频一区二区三区 | 久草精品视频 | 欧美成人手机版 | 色综合久久久久综合99 | 日韩av偷拍 | 成人一级片免费看 | 国产黄色看片 | 亚洲精品久久视频 | 亚洲欧美日韩精品久久奇米一区 | 人人干天天射 | 国产视频精品免费 | 久久久久亚洲最大xxxx | 日韩黄色av网站 | 欧美日韩国产色综合一二三四 | 国产中文伊人 | 国产又粗又猛又色又黄网站 | 在线黄色免费 | 岛国精品一区二区 | 色999视频| 成人91av| 色爱成人网 | 亚洲2019精品 | 成人永久视频 | 日韩欧美国产免费播放 | 国产美女网站在线观看 | 亚洲成人av片在线观看 | 成人综合日日夜夜 | 99热精品久久 | 国产一区免费看 | 久久人人爽人人爽人人片av免费 | 91麻豆文化传媒在线观看 | 91精品国自产在线偷拍蜜桃 | 成人av在线观 | 亚洲精品国产精品99久久 | 精品视频在线播放 | av免费看电影 | 77国产精品 | 国产麻豆视频网站 | 亚洲无吗av | 日韩精品欧美专区 | 制服丝袜在线 | 日韩在线高清视频 | 97人人爽 | 人人澡av | 天天干天天做天天操 | 国产欧美久久久精品影院 | 中文字幕在线看视频国产 | 日韩一区二区三区免费电影 | 日本3级在线观看 | 亚洲一级特黄 | 韩国精品在线 | 亚洲国产精品资源 | 在线成人中文字幕 | 黄色小网站在线 | 日日夜夜狠狠操 | 天天看天天干 | 美女久久视频 | 日韩电影一区二区三区 | 色999五月色 | 亚洲精品小视频在线观看 | 在线成人观看 | 免费黄a| 国产成人久久久77777 | 91精品视频在线看 | 日韩动漫免费观看高清完整版在线观看 | 国产呻吟在线 | 亚洲精品久久久蜜桃直播 | 久久人操| 五月婷婷色播 | 日本中文字幕网 | 日韩免费在线观看视频 | 亚洲五月 | 国产精品高清在线观看 | 国产福利精品视频 | 亚洲综合色播 | 久久免费大片 | 日韩精品最新在线观看 | 激情综合网五月婷婷 | 九九色综合| 91成人网页版 | 成人黄色在线 | 天天干天天干天天干 | 日韩电影黄色 | 午夜精品视频在线 | 国产色中涩 | 亚洲激情国产精品 | 999电影免费在线观看 | 久久久久女人精品毛片九一 | 人人插人人玩 | 久久99国产精品久久99 | 中文字幕在线观看网站 | 中文字幕在线观看完整版 | 欧美日韩一区二区三区免费视频 | 国产精品久久久久一区 | 天天激情综合 | 999久久国产精品免费观看网站 | 久久精品99国产 | 国产精品成人国产乱一区 | 国产视| www久久精品| 在线免费观看黄 | 在线免费视频一区 | 久久精品视频99 | 久久国产精品免费 | 国产精品黑丝在线观看 | 亚洲午夜久久久久久久久电影网 | 91精品在线播放 | 狠狠干天天| 久久一区二区三区国产精品 | 91视频最新网址 | 国产91精品一区二区麻豆亚洲 | 久久中文网 | 久草国产在线 | 深爱激情亚洲 | 一区二区中文字幕在线 | 99国产一区二区三精品乱码 | 在线精品视频免费播放 | 狠狠狠狠狠色综合 | 久久精品视频4 | 精品久久免费 | 不卡日韩av | 国产高清在线一区 | 久久国产露脸精品国产 | 麻花传媒mv免费观看 | a天堂中文在线 | 日韩欧美在线一区二区 | 久久久精品二区 | 国产精品免费在线 | 婷婷精品在线 | 日本aaaa级毛片在线看 | 91九色丨porny丨丰满6 | 亚洲精选视频在线 | 中文字幕在线观看免费高清电影 | 国产精品久久在线观看 | 久久久久久久久艹 | 婷婷综合影院 | 天天操天天透 | 九九热只有这里有精品 | 国产精品v欧美精品v日韩 | 一区二区欧美日韩 | 久久精品视频在线观看 | 久久精品亚洲一区二区三区观看模式 | 国产在线91在线电影 | 国产又黄又爽又猛视频日本 | 色视频在线看 | 久久久综合色 | 午夜在线资源 | 国产人成一区二区三区影院 | 免费在线精品视频 | 色综合久久久网 | 亚洲一区二区视频 | 五月婷婷综合激情网 | 友田真希x88av | 欧美日韩色婷婷 | 久久99精品国产 | 18久久久久| 国产剧情av在线播放 | 久久精品中文字幕免费mv | 亚洲女同ⅹxx女同tv | 国产专区在线 | 久久久亚洲精华液 | 久久99国产精品久久 | 狠狠干夜夜爽 | 99久久电影| 色狠狠综合天天综合综合 | 精品在线视频一区二区三区 | 天天摸日日摸人人看 | 婷婷综合国产 | 免费在线观看视频a | 99久久99精品| 亚洲一级二级 | 一区二区三区久久 | 国产成人黄色 | 99久久婷婷国产一区二区三区 | 精品国产一区二区三区噜噜噜 | www.av在线.com| 国产二区视频在线观看 | 国产在线观看99 | 午夜精品久久久久久99热明星 | 高潮毛片无遮挡高清免费 | 精品一区二区亚洲 | 91色蜜桃| 狠狠狠色丁香婷婷综合久久88 | 天堂av在线免费观看 | 欧美一级淫片videoshd | 久久精品亚洲 | 亚洲好视频 | 高清国产一区 | 久久综合五月婷婷 | a√资源在线 | 808电影免费观看三年 | 日日草天天干 | www.久久色.com | 天天操综合| 伊人五月天av| 久久亚洲美女 | 久久9999久久免费精品国产 | 波多野结衣在线视频免费观看 | 五月天综合婷婷 | 久久九九精品久久 | 国产啊v在线观看 | 亚洲激情免费 | 精品成人免费 | 最新不卡av| 国产精品一区二区在线免费观看 | 久久躁日日躁aaaaxxxx | 国产精品成人在线观看 | 色婷婷色 | 日韩精品中文字幕在线 | 色夜影院 | 97av视频 | 黄色片网站 | 久久国内精品99久久6app | 亚洲精品乱码久久久久久按摩 | 久草在线一免费新视频 | 久久噜噜少妇网站 | 免费亚洲视频 | 婷婷综合视频 | 亚洲精品福利在线观看 | 在线观看视频一区二区三区 | 日韩成人看片 | 91九色综合| 亚洲精品自拍视频在线观看 | 久久99电影 | 中国一 片免费观看 | 国产精品一区二区你懂的 | 欧美五月婷婷 | 精品国产伦一区二区三区观看说明 | 一区二区三区四区精品视频 | 国产盗摄精品一区二区 | 国产精品一区二区麻豆 | 91精品专区| 久草成人在线 | 欧美a级成人淫片免费看 | 日韩电影一区二区三区在线观看 | 日本不卡一区二区 | 91完整版在线观看 | 亚洲精品自拍 | 人人澡澡人人 | 久草在线免费资源 | 免费a视频| 在线观看免费 | 亚洲视频www | 另类五月激情 | 91激情在线视频 | 久久综合婷婷 | 在线国产精品视频 | 国产精品一区在线观看你懂的 | 久久亚洲国产精品 | 在线国产视频一区 | 手机在线观看国产精品 | 免费国产在线精品 | 成人av在线影院 | 欧美性生活久久 | 国产精品午夜在线观看 | 成人免费视频网站 | 美女黄频在线观看 | 99免费视频 | 久久国产精品久久国产精品 | 亚洲手机av | 69视频永久免费观看 | 欧美日韩国产二区 | 婷婷av在线 | 黄色小说18| 91成人精品一区在线播放69 | 欧美精品在线免费 | 久久情侣偷拍 | 少妇性色午夜淫片aaaze | 国产福利专区 | 丁香久久久| 欧美久久综合 | 久草在线免费资源 | va视频在线观看 | 国产精品va视频 | 国产精品免费av | 成人免费在线播放视频 | 99999精品视频 | 日韩aa视频| 国产精品大片在线观看 | 国内揄拍国内精品 | 国产成人精品在线播放 | 亚洲精品免费播放 | 日日操夜 | 丁香婷婷综合网 | 国产 一区二区三区 在线 | 久久这里只有精品久久 | 精选久久 | 精品久久电影 | 香蕉网在线 | 成人欧美日韩国产 | 精品在线播放 | 激情网色 | 国产99久久久精品 | 超碰在线人人草 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 精品a在线 | 97av影院 | 天天操综合网 | 久草国产在线观看 | 在线观看黄色国产 | 国产精品国产三级国产专区53 | 精品国产伦一区二区三区 | 人人澡人人舔 | 一区二区免费不卡在线 | 永久免费精品视频 | 99久久精品免费看国产一区二区三区 | 国产精品久久久久一区 | 欧美激情视频在线观看免费 | 欧美少妇的秘密 | 日韩二区三区在线 | 国产精品一区二区久久精品爱微奶 | 久久久久久美女 | 国产成人免费观看 | 婷婷色综合色 | 手机看片99 | 91色吧 | 黄色小说18 | 五月综合网| 日韩美女免费线视频 | 激情网五月 | 久久精品电影 | 人人爽人人片 | 免费99精品国产自在在线 | 国产精品成人久久久久 | 免费视频在线观看网站 | 超碰公开在线观看 | 国产二区精品 | 亚洲欧美日韩在线一区二区 | 狠狠躁18三区二区一区ai明星 | 久久久久久久国产精品 | 香蕉久久久久久久 | www.av在线.com | 99久久精品国 | 亚洲精品黄色在线观看 | 亚洲乱码久久久 | 色综合人人 | 在线视频欧美亚洲 | 麻豆一二三精选视频 | 国产一二三精品 | 国产精品日韩高清 | 久久精品在线免费观看 | 91视视频在线直接观看在线看网页在线看 | 久久免费电影网 | 欧美在线视频二区 | 久草视频免费看 | 国产亚洲日本 | 久久久www成人免费精品张筱雨 | 在线观看欧美成人 | 国际精品网 | 亚洲视频在线免费观看 | 精品国产一区二区三区蜜臀 | 91在线porny国产在线看 | 中文字幕精品一区二区三区电影 | 五月天综合激情 | 欧美在线free | 亚洲国产精品va在线看 | 亚洲在线视频观看 | 天天做综合网 | 欧美日韩三级 | 丁香五月亚洲综合在线 | 国产在线观看h | 久久国际影院 | 亚洲a色 | 婷婷国产v亚洲v欧美久久 | 97久久久免费福利网址 | 国产成人精品aaa | 久久99精品一区二区三区三区 | 91在线影视 | 国产黄色资源 | 国产一区二区免费 | www色,com| 成人午夜av电影 | 91男人影院 | 国产成人中文字幕 | 日本在线观看视频一区 | 亚洲人成在线观看 | 人人爽人人爽人人片av免 | 国产精品久久久久久久久久久久久 | 在线 精品 国产 | 亚洲精品动漫在线 | av一级网站 | 欧美精选一区二区三区 | 日韩高清无线码2023 | 综合激情av| 中文一区二区三区在线观看 | 婷婷丁香七月 | 五月天天天操 | 国产拍揄自揄精品视频麻豆 | www.99在线观看 | aaa亚洲精品一二三区 | 色五月情| 九九九在线 | 久久男人影院 | 欧美色图另类 | 成人午夜电影免费在线观看 | www.五月天婷婷 | 丁香花在线视频观看免费 | 伊人婷婷网 | 在线观看午夜av | 日本久久久精品视频 | 一级黄色免费网站 | 韩国av免费观看 | 在线免费观看的av网站 | 91亚洲欧美激情 | 婷婷资源站 | 亚洲婷婷在线视频 | 日精品 | 免费看日韩片 | 久久dvd | 国产美女久久久 | 欧美精品久久久久久久久久白贞 | 日韩电影在线视频 | 2023年中文无字幕文字 | 国产成人av网 | 久久精品免费观看 | 日日天天狠狠 | 又色又爽的网站 | 国产成人免费av电影 | 亚洲欧美日韩一区二区三区在线观看 | 免费三级影片 | 美女av免费看 | 久久视频这里有久久精品视频11 | 亚洲一区二区麻豆 | 8x成人免费视频 | 亚洲黄色片在线 | 久久国产日韩 | 久久久久久久国产精品视频 | 国产香蕉97碰碰久久人人 | 亚洲国产中文字幕在线视频综合 | 免费观看一级特黄欧美大片 | 久久精品国产亚洲精品2020 | 成年人在线观看视频免费 | 国产成人精品久久亚洲高清不卡 | 在线视频国产区 | 色先锋av资源中文字幕 | 2019天天干夜夜操 | 在线小视频 | 成人福利在线观看 | 黄色官网在线观看 | 在线视频日韩欧美 | 日日夜夜人人精品 | 极品美女被弄高潮视频网站 | 夜添久久精品亚洲国产精品 | 欧美久久久影院 | 国产成人一区在线 | av电影久久 | 97色噜噜| 日韩视频中文 | 国产成人免费在线 | 国际精品网 | 成人国产精品入口 | 五月天综合 | av+在线播放在线播放 | 精品免费观看 | 九九国产精品视频 | 亚洲精品综合欧美二区变态 | 精品欧美一区二区在线观看 | 亚洲欧美综合精品久久成人 | 久久久免费看片 | 国产免费中文字幕 | 中文字幕刺激在线 | 国产成人精品久久二区二区 | 国产精品久久一 | 成年人在线观看免费视频 | 国产不卡在线看 | 狠狠狠色丁香婷婷综合久久88 | 日本99热| 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 欧美亚洲免费在线一区 | 99精品免费久久久久久日本 | 成人福利在线播放 | 草久久影院 | 91麻豆网站 | 在线观看午夜av | 国产精品久久麻豆 | 亚洲精品在线二区 | 亚洲日本黄色 | 精品网站999www | 香蕉影院在线 | 爱色婷婷 | 天堂av在线免费 | 久久国产精品久久国产精品 | a视频免费在线观看 | 精品福利片 | 中文字幕在线看视频国产中文版 | 丁香五香天综合情 | 最近中文字幕在线中文高清版 | 97夜夜澡人人爽人人免费 | 日本韩国精品一区二区在线观看 | 午夜91视频 | www.午夜色.com | av品善网| 免费看国产一级片 | 亚洲欧美日韩精品一区二区 | 国产精品久久久久999 | 午夜婷婷在线播放 | 三级黄色理论片 | 国产免费视频在线 | 成年人黄色在线观看 | 久久国产综合视频 | 日韩国产欧美在线视频 | 国产精品高清av | 国产精品久久久久一区二区三区 | 人人盈棋牌 | 国产在线观看不卡 | 精品久久片 | 国产视频一区二区在线 | 在线电影日韩 | 99视频精品全部免费 在线 | 日日夜精品| 天天操天天舔天天爽 | 一区二区三区免费在线观看视频 | 久久视频在线观看中文字幕 | 91色欧美| 黄色网址国产 | 久久成熟 | 一区精品在线 | 91自拍视频在线观看 | 另类老妇性bbwbbw高清 | 欧美日韩免费一区二区 | 三三级黄色片之日韩 | 国产午夜一区 | 日韩网站免费观看 | 天天综合入口 | 日韩欧美电影在线观看 | 欧美一级艳片视频免费观看 | 在线观看日韩精品 | 欧美激情精品久久久久久免费 | 国产精品久久久久久久妇 | 最新超碰在线 | 国产精品毛片 | 伊人久久婷婷 | 中文字幕你懂的 | 国产精品中文字幕av | 精品不卡视频 | 国产精品网红直播 | 97在线视频免费看 | 91av在| 激情五月在线观看 | 一区二区视频电影在线观看 | 国产精品夜夜夜一区二区三区尤 | 日本黄色免费电影网站 | 日日操操 | 国产精品 中文在线 | 黄色午夜网站 | 国产精品一区二区在线免费观看 | 六月丁香激情综合色啪小说 | 日韩精品国产一区 | 亚洲精品免费在线视频 | 婷婷丁香自拍 | 中文字幕黄色av | 欧美色婷婷| 久久久久久不卡 | 亚洲乱码精品 | 久久国产影院 | 五月婷婷激情六月 | 在线观看视频在线观看 | 免费观看性生活大片 | 久久久鲁 | 人人射av | 在线免费视频a | 日韩视频免费看 | 日韩精品中文字幕av | 91久久精品日日躁夜夜躁国产 | 毛片网站观看 | 黄污视频网站大全 | 成人黄色小视频 | 99精品视频免费观看视频 | 国产一区免费 | 人人干人人干人人干 | 亚洲视频中文 | 91麻豆传媒 | 日韩成人邪恶影片 | 久久97久久 | 去干成人网 | 永久免费av在线播放 | 久久久黄视频 | 五月天堂色 | 国产一区二区三区在线免费观看 | 国产在线中文 | 东方av在 | 久久久久久97三级 | www.久草视频 | 欧美a√大片 | 国产精品 美女 | 色婷婷福利视频 | 国产精品黄网站在线观看 | 叶爱av在线 | 黄色在线免费观看网站 | 国产又粗又猛又黄又爽视频 | 99视频导航 | 国产精品久久电影网 | 干干日日 | 天天色天天草天天射 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人超碰97| 久久精品美女视频网站 | 最新av电影网站 | 美女免费黄视频网站 | 五月婷影院 | 欧美日韩一级久久久久久免费看 | 国产色女人 | 亚洲综合色播 | 国产a精品 | 中文在线免费一区三区 | 日韩av电影免费在线观看 | 久草精品网 | 四虎影视精品成人 | 精品v亚洲v欧美v高清v | 中文字幕日韩电影 | 久久精品日产第一区二区三区乱码 | www.av免费观看| 国产亚洲精品久久久久5区 成人h电影在线观看 | 91av视屏| 中文字幕国语官网在线视频 | 黄色免费网战 | 91夫妻视频 | 日韩三级视频在线观看 | 国产高清免费视频 | 四虎影视精品永久在线观看 | 久久人网 | 婷婷伊人五月 | 久久久久免费观看 | 国产精品白丝jk白祙 | 天天干天天天 | 日韩精品亚洲专区在线观看 | 天天曰天天干 | 99精品国产在热久久 | 日韩爱爱片 | 久久精品久久久久电影 | 中文字幕中文字幕在线中文字幕三区 | 免费精品视频在线观看 | 亚洲精品国产精品国自 | 中文国产成人精品久久一 | www99久久| 欧亚日韩精品一区二区在线 | a色视频| 免费观看国产视频 | 黄色一级免费 | 欧美坐爱视频 | 国产精品久久久久久一区二区三区 | 日韩精品视频免费专区在线播放 | 日韩理论片中文字幕 | 亚洲精品美女在线观看 | 91在线视频免费播放 | 国产成人三级在线播放 | 中文字幕一区二区三区在线观看 | 国产美女视频免费 | 亚洲网站在线看 | 91精品视频免费在线观看 | 麻豆影视在线免费观看 | 日韩字幕 | 综合色影院 | 狠狠操影视 | 国产成人精品一二三区 | 国产成人不卡 | 欧美日韩一区二区在线观看 | 国产精品小视频网站 | 久久久久99999| 国产精品久久久久久久久久 | 国产精品99久久久久人中文网介绍 | 欧美一区视频 | 碰超在线97人人 | 黄色福利网站 | 人人爱夜夜操 | 国产成人一级 | 久久综合免费视频影院 | 成人av免费在线播放 | 久久久久这里只有精品 | 国产免费视频一区二区裸体 | 国产午夜精品一区二区三区嫩草 | 中文字幕亚洲精品在线观看 | 日本久久免费电影 | 久久精品国产v日韩v亚洲 | 婷婷黄色片 | 久久人操 | www.久久com| 国产成人久久精品一区二区三区 | 午夜精品麻豆 | 亚洲精品在线二区 | 午夜黄色一级片 | 久久人人做 | 超碰在线99 | 国产在线观看你懂的 | 国产免费三级在线观看 | 丁香六月婷婷激情 | 超碰在线人人97 | 久久精品成人 | 国产人成看黄久久久久久久久 | 天天草天天色 | 欧美美女激情18p | 中文字幕av在线免费 | 亚洲人天堂 | 国产手机在线 | 欧美性做爰猛烈叫床潮 | 欧美巨乳波霸 | 亚洲无吗天堂 | 97香蕉久久国产在线观看 | 天天天综合网 | 奇米先锋 | 日韩av成人 | 操操操干干干 | 夜夜干夜夜| 全久久久久久久久久久电影 | 九九热免费观看 | 色综合激情网 | 一区二区精品国产 | 婷婷激情av | 亚洲午夜精品一区二区三区电影院 | 日韩欧美综合 | 成年美女黄网站色大片免费看 | 亚洲欧美日韩在线看 | 亚洲综合一区二区精品导航 | 伊人色**天天综合婷婷 | 欧美成天堂网地址 | 日韩精品一区二区久久 | 亚洲国产精品va在线看 | 久久国产精品免费一区二区三区 | 高清av中文在线字幕观看1 | 啪啪肉肉污av国网站 | 婷五月激情 | 亚洲国产三级在线 | 黄色一级大片在线观看 | 国产一区二区三区在线免费观看 | 亚洲国产三级 | 人人搞人人干 | 欧美精品v国产精品 | 亚洲成人午夜在线 | 婷婷午夜| 午夜精品福利一区二区三区蜜桃 | 黄污视频网站大全 | 玖玖玖影院 | 精品久久久久一区二区国产 | 天天天干夜夜夜操 | 久久久久成人精品 | 少妇搡bbbb搡bbb搡忠贞 | 免费中文字幕视频 | 国产精品久久久久av福利动漫 | 深夜福利视频在线观看 | 日日操天天操夜夜操 | 97精品视频在线播放 | 亚洲第一久久久 | 欧美日韩在线视频一区二区 | 国产高清av免费在线观看 | 免费看黄网站在线 | av电影中文字幕在线观看 | 天堂在线免费视频 | 久久黄色免费观看 | 中文字幕av有码 | 亚洲视频在线观看网站 | 国内精品久久久久久久影视麻豆 | 综合国产在线观看 | 国产视频久 | 精品一区二区三区在线播放 | 国产精品久久久久久久久久尿 | 国产二区视频在线 | 国产91大片 | av免费成人| 香蕉视频在线免费 | 黄色av影视 | 欧美一级片在线播放 | 欧美一级电影免费观看 | 欧美精彩视频在线观看 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 97在线精品视频 | 天天操夜夜拍 | 久久免费精品国产 | 日韩精品一区二区免费 | 免费精品国产va自在自线 | 午夜 免费 | 91男人影院 | 日韩一级理论片 | 黄色福利视频网站 | 国产一区二区三区高清播放 | 九九交易行官网 | 一级一级一片免费 | a成人v在线 | 91视频免费| 精品自拍sae8—视频 | 丁香九月激情综合 | 国内精品久久久久久久影视简单 | 伊人激情网 | 91成人亚洲| 精品国产一区二区三区久久久蜜月 | 日韩欧美一区二区在线播放 | 国产精品毛片一区视频播不卡 | 午夜精品久久久久久久久久久久 | 日韩在线精品 | 日韩黄色在线观看 | a级一a一级在线观看 | 亚洲九九九在线观看 | 亚洲伦理一区 | 香蕉97视频观看在线观看 | 久久久91精品国产一区二区精品 | 91在线看视频 | 国产精品免费观看久久 | 国产在线a | 三级av免费看 | 亚洲精品在 | 91麻豆免费视频 | 欧美日韩调教 | 狠狠狠色丁香综合久久天下网 | 精品欧美乱码久久久久久 | 激情网综合 | 日韩久久精品一区二区 | 亚洲最新视频在线 | 99久久视频| 天天超碰 | 在线午夜电影神马影院 | 99久久999久久久精玫瑰 | 国产一区私人高清影院 | 天天亚洲| 久久免费观看少妇a级毛片 久久久久成人免费 | 欧洲精品一区二区 | 亚洲jizzjizz日本少妇 | 丁香电影小说免费视频观看 | www.久久色| 西西4444www大胆艺术 | 久草在线官网 | 久草在线视频免费资源观看 | 人人草在线观看 | 天天射网 | 国产中文欧美日韩在线 | 国产成人精品久久久久蜜臀 | 91成人免费看 | 色资源在线 | 久久免费视频这里只有精品 | 国产精品黄色av | 国产高清在线不卡 | 天天亚洲 | 久久久久久久久久久久久久av | 日韩欧美国产视频 | 欧美精品九九99久久 | 精品视频在线看 | 一区二区中文字幕在线 | 婷婷 综合 色| 午夜精品一区二区国产 | 婷婷色六月天 | 激情久久久久久久久久久久久久久久 | 日日夜夜91 | 亚洲综合网 | 成人免费视频在线观看 | 美女视频黄网站 | 日韩免费一级电影 | 999热线在线观看 | 手机在线黄色网址 | www亚洲一区| 日韩亚洲在线观看 | 亚洲一二三区精品 | 日韩在线观看a | 国产精品视频久久 | 亚洲手机av | 天天天综合网 | 91精品办公室少妇高潮对白 | 成年人看片网站 | 中文字幕一区二区三区在线播放 | 丁香色天天| 亚洲激情视频在线观看 | 色偷偷88欧美精品久久久 |