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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 按照軟件的執行流程,我們首先遇到《以金山界面庫(openkui)為例思考和分析界面庫的設計和實現——問題》中提出的最后一個問題:界面描述文件的放置位置。我們曾提出一種方案:將界面描述文件打包后放在資源文件中;在使用時,解析并讀取資源文件。實際上Kui也是按照我們這個思路在做的,只是做得比我們要精巧。在閱讀這部分代碼的過程中,我發現其存在一定的編碼缺陷以及設計缺陷。我會在文中適時指出問題并提出修正及改進的方案。(轉載請指明出于breaksoftware的csdn博客)

? ? ? ? 為了表述方便,我們將以KUI自帶的例子工程Sample1為例。在該項目的res目錄下,我們看到一個名字為sample1.kui的文件。


? ? ? ? 在Sample1工程的資源文件中,上圖中sample1.kui將作為一個類型為“SKIN”,名字為“KUIRED.DAT”的資源。


? ? ? ? 從這個特殊的后綴名.kui可以猜測出,這個文件是一個壓縮文件。


? ? ? ??這樣,我們心里有了底,同時為我們閱讀Kui的資源管理代碼提供了視覺上的參考。
? ? ? ? 在openkui\KUILib\kscbase\src下有個文件kscres.cpp。它定義了資源文件處理邏輯。
? ? ? ? 首先,我們查看這段代碼

KAppRes& KAppRes::Instance()
{static KAppRes _singleton;return _singleton;
}
? ? ? ??可以看出,這是個單例類。因為界面描述數據只需要讀取和解析一次,所以這兒設計成單例類。以后使用它的地方,就不用重復讀取和解析了。
? ? ? ? 我們再看下作為私有函數的構造函數,它顯示該類執行的脈絡
KAppRes::KAppRes() : m_hTempRes(INVALID_HANDLE_VALUE)
{PrepareRes();OpenResPack();LoadStringRes();LoadImageRes();LoadXmlRes();LoadFontRes();
}
? ? ? ??粗略看了函數名。可以得出如下流程

? ? ? ??除了“讀取String”、“讀取Image”和“讀取字體”資源外,我們可能比較難以猜測到其他過程做了什么。如果按照我前一篇的思路,“預處理資源文件”可能對應于“讀取指定資源”,“打開資源文件”可能對應于“將壓縮包文件解壓”,是不是如此呢?我們拭目以待。在解讀之后的代碼之前,我有個疑問,這些操作如果有一步沒有成功,還有必要繼續往下走么?怎么就沒一個判斷?放下這個問題,我們看之后的代碼。

? ? ? ??我們先看

bool KAppRes::PrepareRes()
{bool retval = false;KFilePath pathRes = KFilePath::GetFilePath(g_hInstance);HRSRC hResInfo = NULL;HGLOBAL hResDat = NULL;PVOID pResBuffer = NULL;DWORD dwResBuffer;wchar_t szTempPath[MAX_PATH] = { 0 };wchar_t szTempFilePath[MAX_PATH] = { 0 };pathRes.RemoveExtension();pathRes.AddExtension(L"kui");if (GetFileAttributesW(pathRes) != INVALID_FILE_ATTRIBUTES){m_strResPackPath = pathRes.value();}else{hResInfo = FindResourceW(_ModulePtr->GetResourceInstance(), L"kuires.dat", L"SKIN");if (!hResInfo)goto clean0;hResDat = LoadResource(_ModulePtr->GetResourceInstance(), hResInfo);if (!hResDat)goto clean0;pResBuffer = LockResource(hResDat);if (!pResBuffer)goto clean0;dwResBuffer = SizeofResource(_ModulePtr->GetResourceInstance(), hResInfo);m_memZipRes.SetData(pResBuffer, dwResBuffer);}retval = true;clean0:return retval;
}
? ? ? ??到12行,都是在Exe文件所在目錄拼接出與Exe文件同名,但是后綴為kui的資源文件。比如我的電腦上,調試文件目錄是D:\快盤\Code Project\openkui\Samples\Sample1\Debug\Sample1.exe,得到的pathRes對應的目錄是D:\快盤\Code Project\openkui\Samples\Sample1\Debug\Sample1.kui。如果該資源文件獨立存在于Exe目錄下,則使用該文件做后續操作。如果該文件不存在,則從PE文件資源中,讀取出類型為“SKIN”、名字為“kuires.data”的資源,并保存在memZipRes(一段內存中)中。

? ? ? ??這個流程,我們可以看出來,其大體思路和我之前猜測的一致,只是它增加了優先對獨立的壓縮包資源文件的處理。于是我們可以得出:Kui的界面描述文件,可以放在:
? ? ? ? 1 Exe文件所在的目錄下,名字和Exe相同的、后綴為kui的文件(以后簡稱界面文件包)中
? ? ? ? 2 PE文件資源類型為“SKIN”、名字為“kuires.dat”的資源(以后簡稱界面內存塊)中
? ? ? ? 其中1的優先級要高于2。
? ? ? ? 這種設計方案還是很有意思的。因為這個流程可以實現換膚功能。比如我們下載了A.kui、B.kui、C.kui和D.kui四套皮膚。如果用戶選擇了A皮膚,則我們可以將A.kui拷貝到Exe所在目錄,并將其命名為與Exe同名、后綴為kui的名字。這樣就實現了換膚。即使這套外置皮膚壞了,或者被刪了,我們還可以使用資源中的那套皮膚。

? ? ? ? 雖然想法很好,但是代碼中的邏輯卻存在一定的編碼缺陷和設計缺陷,我們先說編碼缺陷:

    if (GetFileAttributesW(pathRes) != INVALID_FILE_ATTRIBUTES){m_strResPackPath = pathRes.value();}
? ? ? ??這步,可以用來判斷一個文件是否存在么?其實不可以。因為如果我新建一個與壓縮包同名的“文件夾”,GetFileAttributesW將返回FILE_ATTRIBUTE_DIRECTORY,這將導致這個錯誤的邏輯認為該文件夾是一個壓縮文件,從而導致之后的邏輯出現處理異常。該函數應該寫成
    if ( PathFileExists(pathRes) && 0 == ( GetFileAttributesW(pathRes) & FILE_ATTRIBUTE_DIRECTORY ) ){m_strResPackPath = pathRes.value();}
? ? ? ??其中 還有個設計缺陷。假如我們是使用這個庫的開發者,我們在調試過程中,難免會修改界面描述文件。那么難道我們每修改一次,都要將描述文件壓縮成一個包么?這樣不是很難調用?我覺得,可以在PrepareRes函數中, 新增一段對debug情況的處理:在debug情況下我們應該獲取工程res目錄下一個特定的文件夾,該文件夾保存了未壓縮的各個文件。這樣我們就可以不用每次修改資源后都要打個資源包了。
? ? ? ? 我們在KAppRes類私有成員中增加

#ifdef DEBUG// 保存debug環境下界面描述文件文件夾目錄std::wstring m_strResFloderPath;
#endif
? ? ? ??在PrepareRes的pathRes.RemoveExtension();之前新增
#ifdef DEBUGpathRes.RemoveFileSpec();pathRes.RemoveFileSpec();pathRes.AddBackslash();pathRes.Append(L"res");pathRes.AddBackslash();pathRes.Append(L"skin");pathRes.AddBackslash();if ( PathFileExists(pathRes) && GetFileAttributesW(pathRes) & FILE_ATTRIBUTE_DIRECTORY ){m_strResFloderPath = pathRes.value();return true;}else{_ASSERT_EXPR(FALSE, L"Debug環境下要求res目錄下skin目錄保存界面描述文件");return false;}
#endif
? ? ? ??這樣我們將方便我們調試工作。
? ? ? ? 接下來我們看OpenResPack這個函數。在PrepareRes中,我們可能會得到界面文件包或者界面內存塊。OpenResPack將先后嘗試從這兩個位置獲取界面信息。在這個函數中,我們將看到,如何使用開源的Zlib代碼去獲取壓縮包(內存)中文件的信息。
bool KAppRes::OpenResPack()
{bool retval = false;zlib_filefunc_def zip_funcs;std::string strPathAnsi;int nRetCode;HRSRC hResInfo = NULL;HGLOBAL hResDat = NULL;PVOID pResBuffer = NULL;DWORD dwResBuffer = 0;fill_win32_filefunc(&zip_funcs);strPathAnsi = UnicodeToAnsi(m_strResPackPath);m_pResPackData = unzOpen2(strPathAnsi.c_str(), &zip_funcs);if (m_pResPackData)goto UNZRESPACKDATA;
? ? ? ? 這段代碼是嘗試預處理界面文件包。我們注意下 這兒使用了fill_win32_filefunc填充了zlib_filefunc_def結構體,還要注意下我們對unzOpen2傳入了界面文件包的路徑。我們接著看,預處理之后的流程
UNZRESPACKDATA:nRetCode = unzGoToFirstFile(m_pResPackData);while (UNZ_OK == nRetCode){char szCurrentFile[260];unz_file_info fileInfo;uLong dwSeekPos;uLong dwSize;nRetCode = unzGetCurrentFileInfo(m_pResPackData, &fileInfo, szCurrentFile, sizeof(szCurrentFile), NULL, 0, NULL, 0);if (nRetCode != UNZ_OK)goto clean0;dwSeekPos = unzGetOffset(m_pResPackData);dwSize = fileInfo.uncompressed_size;m_mapResOffset.insert(KResOffset::value_type(szCurrentFile, KResInfo(dwSeekPos, dwSize)));nRetCode = unzGoToNextFile(m_pResPackData);}
? ? ? ??這段代碼,大致可以看出來,這種遍歷方式和VC中遍歷文件的一種方法——FindFirstFile、FindNextFile很相似。


? ? ? ??如此,便將壓縮包中的文件信息保存到Map結構體對象m_mapResOffset中。其中信息包括文件的相對目錄,文件的相對偏移和大小。
? ? ? ? 有了這組信息,我們之后讀取單個文件,將變得非常方便了。
? ? ? ? 以上我們討論了如何使用Zlib獲取界面壓縮包中文件信息的方法。現在我們再看下如何使用Zlib從界面內存塊中獲取壓縮后的文件信息。


? ? ? ??是否還記得,之前我著重提到一點“使用了fill_win32_filefunc填充了zlib_filefunc_def結構體”。之所以著重,是因為我們現在解析界面內存塊的信息時,將要自己填充zlib_filefunc_def結構體中各個回調函數。我們先看fill_win32_filefunc內部的實現

void fill_win32_filefunc (pzlib_filefunc_def)zlib_filefunc_def* pzlib_filefunc_def;
{pzlib_filefunc_def->zopen_file = win32_open_file_func;pzlib_filefunc_def->zread_file = win32_read_file_func;pzlib_filefunc_def->zwrite_file = win32_write_file_func;pzlib_filefunc_def->ztell_file = win32_tell_file_func;pzlib_filefunc_def->zseek_file = win32_seek_file_func;pzlib_filefunc_def->zclose_file = win32_close_file_func;pzlib_filefunc_def->zerror_file = win32_error_file_func;pzlib_filefunc_def->opaque=NULL;
}
? ? ? ??可以見得,它傳遞了“打開文件”、“讀取文件”、“寫入文件”、“移動讀標識”和“關閉文件”等操作的函數地址。我粗略看下這些函數的實現,它們只是對CreateFile、ReadFile和WriteFile等文件操作的封裝。對應的,對于不在磁盤上的文件,我們可以封裝相應的操作內存的函數,然后將這些函數地址傳遞給該結構體對象。
zip_funcs.zopen_file = ZipOpenFunc;
zip_funcs.zread_file = ZipReadFunc;
zip_funcs.zwrite_file = ZipWriteFunc;
zip_funcs.ztell_file = ZipTellFunc;
zip_funcs.zseek_file = ZipSeekFunc;
zip_funcs.zclose_file = ZipCloseFunc;
zip_funcs.zerror_file = ZipErrorFunc;
zip_funcs.opaque=NULL;
m_pResPackData = unzOpen2((const char*)&m_memZipRes, &zip_funcs);if (!m_pResPackData)goto clean0;
? ? ? ??我們 注意下unzOpen2函數,該函數在聲明時指明其是一個文件路徑,而我們卻將資源的內存塊首地址傳遞進去了。那么unzOpen2可以正確處理么?我們看下ZipOpenFunc函數的實現,就知道這個問題是如何巧妙的解決掉的。
void* ZipOpenFunc(void* opaque, const char* filename, int mode) 
{return (void*)filename;
}
? ? ? ??看,它直接將filename返回了。可以想象ZipOpenFunc就是為了打開文件,并定位到首地址。既然傳進來的就是內存塊首地址,那么直接返回之就行了。而其他函數的實現,也是很簡單的,和操作文件一樣。比如
long ZipSeekFunc (void* opaque, void* stream, uLong offset, int origin)
{uLong ret = -1;CMemFile* pMemFile = (CMemFile*)stream;DWORD dwRetCode;if (!pMemFile)goto clean0;dwRetCode = pMemFile->SetFilePointer(offset, NULL, origin);if (INVALID_SET_FILE_POINTER == dwRetCode)goto clean0;ret = 0;clean0:return ret;
}
? ? ? ??在調用解析界面內存塊的函數前。OpenResPack還多了一個判斷:判斷已讀取的m_memZipRes是否為空,如果為空,則再從資源文件中讀取界面描述塊到內存中。
if (strlen((const char*)&m_memZipRes) == 0)
{//防止.kui格式錯誤導致unzOpen2返回空的m_pResPackDatahResInfo = FindResourceW(_ModulePtr->GetResourceInstance(), L"kuires.dat", L"SKIN");if (!hResInfo)goto clean0;hResDat = LoadResource(_ModulePtr->GetResourceInstance(), hResInfo);if (!hResDat)goto clean0; pResBuffer = LockResource(hResDat);if (!pResBuffer)goto clean0;dwResBuffer = SizeofResource(_ModulePtr->GetResourceInstance(), hResInfo);m_memZipRes.SetData(pResBuffer, dwResBuffer);
}
? ? ? ?? 這個代碼一開始判斷m_memZipRes是否為空,存在一定的漏洞:假如資源文件的第一個字符就是\0,則就會認為這段讀取的數據為空了。當然,一般不存在這樣的問題,因為目前壓縮包文件的第一個字符肯定不是\0。但是從代碼的嚴謹性上來說,應該給openkui\KUILib\Include\kscbase下kscmemfile.h中的CMemFile新增一個共有函數
BOOL IsEmpty()
{return m_buffer.GetCount() == 0 ? TRUE : FALSE;
}
? ? ? ??然后那個判斷應該改成
If( m_memZipRes.IsEmpty()) 
{
……
}
? ? ? ??還有,這個if中的邏輯PrepareRes中讀取資源邏輯一樣。應該將其提煉出來,這樣可以不會讓代碼看著十分冗余。我在之后附加的工程中,會將這個函數提煉到一個名字為 GetResInResfile的函數中。

? ? ? ? 我們接著看之后對數據的讀取和保存。

LoadStringRes();
LoadImageRes();
LoadXmlRes();
LoadFontRes();
? ? ? ??中前三個函數對應于

? ? ? ??KUI提供的例子中,都沒有LoadFontRes對應的fonts.xml文件存在。所以我們可以先忽略字體處理這塊邏輯。
? ? ? ? 我們以LoadXmlRes為例,講解其執行過程。

bool KAppRes::LoadXmlRes()
{bool retval = false;void* pBuffer = NULL;unsigned long dwBuffer = 0;TiXmlDocument xmlDoc;const TiXmlElement* pXmlChild = NULL;const TiXmlElement* pXmlItem = NULL;if (!GetRawDataFromRes("xmls.xml", &pBuffer, dwBuffer))goto clean0;if (!xmlDoc.LoadBuffer((char*)pBuffer, (long)dwBuffer, TIXML_ENCODING_UTF8))goto clean0;pXmlChild = xmlDoc.FirstChildElement("xmls");if (!pXmlChild)goto clean0;pXmlItem = pXmlChild->FirstChildElement("xml");while (pXmlItem) {std::string strId;std::string strPath;strId = pXmlItem->Attribute("id");strPath = pXmlItem->Attribute("path");if (strId.length() && strPath.length()){m_mapXmlTable[strId] = strPath;}pXmlItem = pXmlItem->NextSiblingElement("xml");}retval = true;clean0:if (pBuffer){FreeRawData(pBuffer);}return retval;}
? ? ? ? ?第10行的GetRawDataFromRes是我們特別需要注意的一個函數。該函數傳入一個文件相對路徑、用于保存該文件內容的內存塊首地址和該內存塊的大小。
bool KAppRes::GetRawDataFromRes(const std::string& strId, void** ppBuffer, unsigned long& dwSize)
{bool retval = false;KResStore::iterator store;KResOffset::iterator offset;unsigned long dwOffset;int nRetCode;if (!ppBuffer)goto clean0;offset = m_mapResOffset.find(strId);if (offset == m_mapResOffset.end())goto clean0;dwOffset = offset->second.first;dwSize = offset->second.second;*ppBuffer = new unsigned char[dwSize+1];if (!*ppBuffer)goto clean0;nRetCode = unzSetOffset(m_pResPackData, dwOffset);if (nRetCode != UNZ_OK)goto clean0;nRetCode = unzOpenCurrentFile(m_pResPackData);if (nRetCode != UNZ_OK)goto clean0;nRetCode = unzReadCurrentFile(m_pResPackData, *ppBuffer, dwSize);if (0 == nRetCode)goto clean0;retval = true;clean0:if (!retval){if (ppBuffer){if (*ppBuffer){delete[] (*ppBuffer);*ppBuffer = NULL;}}}return retval;
}
? ? ? ? ?該函數先在保存文件信息的map中尋找傳入的相對路徑對應的文件信息,然后動態分配一段大小合適的空間(如果成功,則在函數外部釋放,否則在函數內部釋放),再使用unzSetOffset將壓縮包讀取位置設置到相應的偏移處,通過unzReadCurrentFile將指定文件讀到內存中。是否還記得,我曾提出,這個庫在設計時存在一定的缺陷:沒有考慮debug情況下會經常修改界面文件的問題。我們之前在PrepareRes函數中獲取了保存界面描述文件(非壓縮)的路徑。這樣,我們可以對該函數做段修改,入參都不用改,我們只是讓該函數讀取指定文件的內容。
#ifdef DEBUGif ( ReadResFile(strId, ppBuffer, dwSize) ) {return true;}else {// _ASSERT_EXPR(FALSE, L"debug下從界面描述目錄讀取文件失敗");return false;}
#endif
? ? ? ??我封裝了一個讀取文件的函數ReadResFile
#define NEWBUFFERSIZE 0x100bool KAppRes::ReadResFile( const std::string& strId,void** ppBuffer, unsigned long& dwSize )
{std::string strFilePath = CW2A(m_strResFloderPath.c_str());strFilePath += strId;HANDLE hFile = CreateFileA(strFilePath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );if ( NULL == hFile ) {return false;}// 先分配讀取的數據空間DWORD dwTotalSize = NEWBUFFERSIZE;                     // 總空間char* pchReadBuffer = new char[dwTotalSize];memset(pchReadBuffer, 0, NEWBUFFERSIZE);DWORD dwFreeSize = dwTotalSize;                 // 閑置空間bool bSuc = false;do {char chTmpReadBuffer[NEWBUFFERSIZE] = {0};DWORD dwbytesRead = 0; // 用于控制讀取偏移OVERLAPPED Overlapped;memset(&Overlapped, 0, sizeof(OVERLAPPED) );while (true) {   // 清空緩存memset(chTmpReadBuffer, 0, NEWBUFFERSIZE);// 讀取管道BOOL bRead = ReadFile( hFile, chTmpReadBuffer, NEWBUFFERSIZE, &dwbytesRead, &Overlapped );DWORD dwLastError = GetLastError();if ( bRead ) {if ( dwFreeSize >= dwbytesRead ) {// 空閑空間足夠的情況下,將讀取的信息拷貝到剩下的空間中memcpy_s( pchReadBuffer + Overlapped.Offset, dwFreeSize, chTmpReadBuffer, dwbytesRead );// 重新計算新空間的空閑空間dwFreeSize -= dwbytesRead;}else {// 計算要申請的空間大小DWORD dwAddSize = ( 1 + dwbytesRead / NEWBUFFERSIZE ) * NEWBUFFERSIZE;// 計算新空間大小DWORD dwNewTotalSize = dwTotalSize + dwAddSize;// 計算新空間的空閑大小dwFreeSize += dwAddSize;// 新分配合適大小的空間char* pTempBuffer = new char[dwNewTotalSize];// 清空新分配的空間memset( pTempBuffer, 0, dwNewTotalSize );// 將原空間數據拷貝過來memcpy_s( pTempBuffer, dwNewTotalSize, pchReadBuffer, dwTotalSize );// 保存新的空間大小dwTotalSize = dwNewTotalSize;// 將讀取的信息保存到新的空間中memcpy_s( pTempBuffer + Overlapped.Offset, dwFreeSize, chTmpReadBuffer, dwbytesRead );// 重新計算新空間的空閑空間dwFreeSize -= dwbytesRead;// 將原空間釋放掉delete [] pchReadBuffer;// 將原空間指針指向新空間地址pchReadBuffer = pTempBuffer;}// 讀取成功,則繼續讀取,設置偏移Overlapped.Offset += dwbytesRead;}else{if ( ERROR_HANDLE_EOF == dwLastError ) {bSuc = TRUE;}break;}}if ( bSuc ) {*ppBuffer = pchReadBuffer;dwSize = dwTotalSize - dwFreeSize;}else {if ( NULL != pchReadBuffer ) {delete [] pchReadBuffer;pchReadBuffer = NULL;}}     } while (0);if ( NULL != hFile ) {CloseHandle(hFile);hFile = NULL;}return bSuc;
}
? ? ? ? 這樣,我們只要在res下新建一個skin文件夾,然后將我們的界面描述文件放在這個目錄下即可。

? ? ? ??我們看一下xmls.xml文件內容

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xmls><xml id="IDR_KSC_SKIN" path="res/def_skin.xml" /><xml id="IDR_KSC_STYLE" path="res/def_style.xml" /><xml id="IDR_KSC_STRING" path="res/def_string.xml" /><xml id="IDR_DLG_MAIN" path="res/dlg_main.xml" />
</xmls>
? ? ? ??可以見到其中對應的文件是

? ? ? ??在使用KUI庫的程序中,我們將使用到這些id。
? ? ? ? 我們看下最終的讀取結果




? ? ? ??我們注意到res目錄下三個文件這個時候并沒有加載。為什么不加載,我們之后會在探索《以金山界面庫(openkui)為例思考和分析界面庫的設計和實現——問題》中“如何讀取保存界面元素屬性”問題時,對這個問題作出解釋。
? ? ? ? 總體來說,KUI這套資源管理邏輯存在以下問題:
? ? ? ? 1 部分代碼不嚴謹
? ? ? ? 2 設計缺乏對debug環境下的優化
? ? ? ? 3 讀取資源代碼容余,應該封裝下

bool KAppRes::GetResInResfile()
{bool retval = false;HRSRC hResInfo = NULL;HGLOBAL hResDat = NULL;PVOID pResBuffer = NULL;DWORD dwResBuffer;hResInfo = FindResourceW(_ModulePtr->GetResourceInstance(), L"kuires.dat", L"SKIN");if (!hResInfo)goto clean0;hResDat = LoadResource(_ModulePtr->GetResourceInstance(), hResInfo);if (!hResDat)goto clean0;pResBuffer = LockResource(hResDat);if (!pResBuffer)goto clean0;dwResBuffer = SizeofResource(_ModulePtr->GetResourceInstance(), hResInfo);m_memZipRes.SetData(pResBuffer, dwResBuffer);retval = true;
clean0:return retval;
}
? ? ? ? 也有其出彩的地方:
? ? ? ? 1 CMemFile類的編寫
? ? ? ? 2 從內存中解壓文件

總結

以上是生活随笔為你收集整理的以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产在线观看a | 亚洲欧美日韩一区二区三区在线观看 | 国产精品18久久久久vr手机版特色 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚洲一级黄色大片 | 日韩视频免费看 | 天天色天天操综合 | 精品国产精品一区二区夜夜嗨 | 一区二区三区高清在线观看 | 91视频在线免费 | 午夜久久久久久久久 | 中文字幕成人网 | 日韩精品免费在线播放 | 丁香高清视频在线看看 | 粉嫩av一区二区三区四区五区 | 中文在线字幕免 | www久久精品 | 三级av在线免费观看 | 欧美日韩在线电影 | 亚洲最新在线视频 | av免费网站观看 | 国产成人一区二区三区在线观看 | 在线观看深夜视频 | 免费日韩 精品中文字幕视频在线 | 黄色av成人在线观看 | 国产精品一区二区三区久久久 | 亚洲精品久久久久久久不卡四虎 | 黄色免费国产 | 久久er99热精品一区二区三区 | 欧美一级片在线免费观看 | 国产v视频| 国产黄在线 | 麻豆视频免费看 | 久久精品视频18 | 国产亚洲综合精品 | 欧美性受极品xxxx喷水 | 久久精品99精品国产香蕉 | 日韩三级在线 | 国产精品色在线 | 18pao国产成视频永久免费 | 日韩在线精品一区 | 成人aⅴ视频 | 国产一区二区手机在线观看 | 美女视频黄免费的 | 精品国产一区二区三区免费 | 亚洲激情影院 | 天天搞天天 | 久草手机视频 | 中文在线资源 | 中文字幕人成一区 | 91九色蝌蚪在线 | 久草在线视频首页 | 国产香蕉视频在线观看 | 欧洲在线免费视频 | 综合网天天射 | 亚洲视频 视频在线 | 久9在线| 国产男女免费完整视频 | 808电影免费观看三年 | 成人在线播放网站 | 国产麻豆视频在线观看 | 色无五月 | 久福利| 亚洲 综合 国产 精品 | 欧美日韩天堂 | 亚洲精品视频网址 | 久久免费视频精品 | 一区二区视频播放 | 天天操天天舔天天爽 | 亚洲黄a| 亚洲午夜大片 | 最新成人av | 四虎伊人 | 少妇av片| 成人视屏免费看 | 亚洲国产免费av | 毛片网在线播放 | 五月婷婷激情网 | 香蕉视频在线播放 | 91中文字幕视频 | 青青久视频 | 黄色1级毛片 | 亚洲va在线va天堂 | 69久久久久久久 | 激情网色 | 日本一区二区高清不卡 | 精品国产乱码久久久久久浪潮 | 9热精品 | 青青啪 | 久久草网站 | 久久er99热精品一区二区 | 午夜精品一区二区三区在线 | 精品久久久久久亚洲综合网站 | 不卡av在线免费观看 | 国产成人精品av在线 | 日韩1级片| 91视频在线观看大全 | 狠狠网站| www.夜夜爽| 高清有码中文字幕 | 久久九九精品 | av免费福利 | 天天操天操 | 久黄色 | 91在线看黄 | 国产精品九九九九九九 | 久久婷婷开心 | 一二区av | 天天狠狠操 | 国产精品中文 | 欧美老女人xx | 久久99视频精品 | 精品视频成人 | 久久免费福利视频 | 国产夫妻自拍av | 久99久久 | 午夜美女影院 | 国产一区二区精品91 | 我要看黄色一级片 | ww亚洲ww亚在线观看 | 国产精品麻豆果冻传媒在线播放 | 国产韩国日本高清视频 | 99这里只有久久精品视频 | 国产一区二区高清 | 在线观看免费黄视频 | 天天操天天舔天天干 | 国产黄在线 | 久久国产精品成人免费浪潮 | 国产操在线 | 久草新在线 | 黄色午夜 | 国产成人亚洲在线观看 | 亚洲人精品午夜 | 狠狠色狠狠色综合日日92 | av免费成人| 黄色一级免费网站 | 久草影视在线 | 在线午夜电影神马影院 | 久久涩涩网站 | 欧美成人在线免费观看 | 色狠狠婷婷 | 97碰碰视频| 91在线视频在线观看 | 日本公妇在线观看高清 | 人人玩人人添人人 | 久久精品视频在线播放 | 超碰国产人人 | 91成品人影院 | 日韩二区三区在线 | 国产亚洲一区二区三区 | 中文在线资源 | 国产成人高清 | 超碰97网站 | 亚洲精品女人久久久 | 免费看黄20分钟 | 欧美在线视频一区二区三区 | 四虎影视成人 | 国内精品在线观看视频 | 亚洲成人黄色在线观看 | 久久黄色影院 | 色婷婷久久久综合中文字幕 | 青青久草在线视频 | 西西4444www大胆视频 | 国产激情小视频在线观看 | 九九免费观看全部免费视频 | 国产成人精品不卡 | 日韩二区三区在线观看 | 96av在线视频 | 青青河边草观看完整版高清 | 国产精品12345 | 五月综合在线观看 | 啪啪午夜免费 | 9999免费视频| 亚洲三级毛片 | 九九99| 天天草av| 成人久久久久久久久 | 国产精品色婷婷视频 | 天天做夜夜做 | 色国产精品一区在线观看 | 色综合久久久久 | 国产精品毛片完整版 | 婷婷五月情 | 欧美日韩国产二区 | 草免费视频 | 91精品国产自产91精品 | a黄色影院 | 久草网站在线 | 国产一级在线看 | 国产成人av电影在线观看 | 精品亚洲一区二区三区 | 国产精品久久久亚洲 | 国产高清专区 | 中文av影院 | 亚洲视屏一区 | 99久热在线精品视频观看 | 国产成人精品一区在线 | av中文字幕在线免费观看 | 高清免费av在线 | 日韩欧美在线中文字幕 | 国产不卡精品 | 99在线精品免费视频九九视 | 日韩最新在线 | 日韩免费在线看 | 国产精品免费观看网站 | 四虎亚洲精品 | 国产精品九九热 | 日本韩国欧美在线观看 | 麻豆视频成人 | 午夜成人免费影院 | av成人免费在线 | 日韩精品专区在线影院重磅 | 99在线精品视频观看 | 免费三级网 | av在线永久免费观看 | 国产黄色大片免费看 | 国产精品美女999 | 久av电影 | 国产精品ⅴa有声小说 | 在线97 | 国产精品久久久精品 | 成人国产一区二区 | 99综合视频| 国产黄a三级三级三级三级三级 | 久久 一区 | 日韩网站在线看片你懂的 | 欧美在线一二区 | 国产精品视频区 | 91av在线不卡 | 午夜精品久久久99热福利 | 午夜精品在线看 | 最近中文字幕第一页 | 免费在线电影网址大全 | 久久激情小说 | 夜夜干天天操 | 午夜私人影院久久久久 | 精品国产伦一区二区三区观看体验 | 亚洲一二三久久 | 国产高清绿奴videos | 日韩二三区 | 国产又黄又爽又猛视频日本 | 夜夜摸夜夜爽 | 人人插人人插 | 超碰日韩在线 | 超碰97成人 | 超碰97在线看| 欧美成人精品在线 | 国产蜜臀av| 91麻豆精品国产91久久久无需广告 | 成人av在线一区二区 | 91在线观看视频网站 | 91香蕉视频| 国产午夜精品福利视频 | 亚洲成年人免费网站 | www.xxxx变态.com | 日韩在线电影 | 国产免费美女 | 91av视频观看 | 九九精品在线观看 | 日韩在线中文字幕视频 | 91精品国产乱码在线观看 | 探花在线观看 | 天天操狠狠操网站 | 人人狠狠综合久久亚洲 | 日本韩国精品一区二区在线观看 | 欧美视屏一区二区 | 国产欧美综合在线观看 | 4p变态网欧美系列 | 一区二区视频电影在线观看 | 亚洲成免费 | 国产精品毛片一区二区 | 狠狠网亚洲精品 | 天天综合成人网 | 视频在线观看99 | 国产少妇在线观看 | 成人黄色电影视频 | 人人爽人人爽人人片av免 | 成年人免费观看在线视频 | 日本精品久久久久影院 | 国产一区二区在线免费播放 | 欧美成人亚洲成人 | 久久久久久高潮国产精品视 | 黄色在线视频网址 | www.成人sex| 超级碰碰碰免费视频 | 日韩欧美一区二区不卡 | 99久久99视频只有精品 | 欧美日韩一区二区三区在线免费观看 | 狠狠干中文字幕 | 五月婷婷六月丁香在线观看 | 国产精品永久久久久久久久久 | 91精品啪在线观看国产线免费 | 国产一区在线视频播放 | 91日韩精品一区 | 99久久99| 婷婷在线网站 | 日韩免费播放 | 69久久久久久久 | 国产黄色一级片在线 | 婷婷丁香五| 免费a v网站| 久热电影| 国产不卡免费视频 | 欧美精品亚洲精品日韩精品 | av品善网| 久久国产精品二国产精品中国洋人 | 国内外成人在线视频 | 乱男乱女www7788 | 一区在线免费观看 | 久久久久久久久久国产精品 | 国产色网站 | 精品久久久久久一区二区里番 | 日韩一区二区三区免费视频 | 日韩二区三区在线 | 日本精品一区二区三区在线观看 | 在线视频中文字幕一区 | 日韩视频在线观看视频 | 亚洲精品小视频在线观看 | 在线国产91 | 婷婷激情五月综合 | 欧美人体xx | 麻豆手机在线 | 国产成人a v电影 | 97国产情侣爱久久免费观看 | 丁香花在线视频观看免费 | 999精品网| av片一区 | 色噜噜噜噜| 久久亚洲欧美日韩精品专区 | 亚洲aⅴ一区二区三区 | 欧美亚洲成人免费 | 欧美久久久一区二区三区 | 午夜性生活 | 激情丁香5月 | 丁香五月亚洲综合在线 | 最新日韩视频 | 久久久久久久久影院 | 免费在线成人av | 玖玖在线观看视频 | 欧美性生交大片免网 | 成人免费视频视频在线观看 免费 | 网站在线观看日韩 | 国产精品久久99综合免费观看尤物 | 久久www免费人成看片高清 | 丁香六月五月婷婷 | 99精品国产高清在线观看 | 国产精品99久久久久久久久久久久 | 99精品免费 | 中文字幕av在线不卡 | 国产精品视频不卡 | 亚州欧美精品 | 玖玖在线视频观看 | www.久久成人 | 丝袜网站在线观看 | 日韩av女优视频 | 超碰97.com | 欧美成人免费在线 | 久久精品国产亚洲 | 日本久久成人 | 亚洲精品国偷自产在线99热 | 久久一区国产 | 中文av字幕在线观看 | 一区二区男女 | 在线免费观看黄网站 | 三级视频片 | 香蕉网站在线观看 | 精品亚洲一区二区三区 | 久 久久影院 | 在线观看蜜桃视频 | 精品国产自 | 在线www色 | 探花视频在线观看免费版 | 成人福利在线 | 精品色999 | 最新av在线免费观看 | 国产成人黄色网址 | 日韩一区二区三区免费电影 | 97视频免费观看 | 国产小视频免费在线观看 | 欧美影院久久 | 日韩av在线看 | 91麻豆精品国产91久久久久久久久 | www91在线观看| wwwwww黄| 在线观看视频黄色 | 中文av在线免费观看 | 天天射综合网视频 | 免费网站在线观看成人 | 黄在线| 超级av在线 | 日韩精品久久久久久中文字幕8 | 97国产大学生情侣白嫩酒店 | 天天色天天爱天天射综合 | 亚洲免费av片 | 欧美日韩亚洲第一 | v片在线看 | 欧美中文字幕久久 | 黄色av电影免费观看 | 精品视频在线观看 | 免费在线观看一级片 | 欧美激情综合五月色丁香 | 亚洲精品乱码久久久久久蜜桃欧美 | 久免费视频| 黄色aaa毛片 | 午夜私人影院久久久久 | 亚洲国产免费 | 亚洲电影av在线 | 亚洲在线视频网站 | 在线观看www. | 99在线热播 | 亚洲黄色片一级 | 99中文字幕在线观看 | 国产在线综合视频 | 久热免费在线观看 | 一本色道久久综合亚洲二区三区 | 亚洲激情小视频 | 久久久久久久久久伊人 | 一区二区视频在线看 | 美女视频久久久 | 国产不卡在线 | 日本久久久久久久久 | 婷婷丁香激情五月 | 国产精品理论在线观看 | 欧美影院久久 | 精品欧美乱码久久久久久 | 99热播精品| 国产三级精品三级在线观看 | 亚洲三区在线 | 国产精品你懂的在线观看 | 在线看片成人 | 96久久欧美麻豆网站 | 亚洲激情在线视频 | 国产免费叼嘿网站免费 | 国产色影院 | 亚洲国产69 | 欧美午夜精品久久久久 | 99re久久精品国产 | 国产精品原创视频 | av在线色 | 国产欧美高清 | 久草在线免费资源站 | 欧美性色黄 | 不卡在线一区 | 国产成a人亚洲精v品在线观看 | 玖草在线观看 | 91精品免费看 | 色视频网站在线观看一=区 a视频免费在线观看 | 久久久精品福利视频 | 国产不卡高清 | 亚洲电影在线看 | 性色视频在线 | 丁香色综合 | 国产91精品久久久久 | 国产精品一区二区在线看 | av在线免费网站 | 欧美精品久久久久性色 | 国产看片网站 | 91福利区一区二区三区 | 国产97免费 | 国内久久久久 | 日本午夜免费福利视频 | 欧美 激情 国产 91 在线 | 国产91在线观看 | 国产精品一区二区三区久久久 | 综合激情网...| 一本一本久久a久久精品综合妖精 | 91视频中文字幕 | 亚洲国产精品va在线看黑人动漫 | 人人爽影院 | 国产999精品久久久久久麻豆 | 91精品久久久久久综合五月天 | 日韩午夜av电影 | 日本不卡一区二区三区在线观看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 美女黄久久 | 一区二区精品国产 | 在线观看久 | 91精品成人| 91探花在线视频 | 亚洲精品xxx| 在线观看亚洲电影 | 一二三区高清 | 色狠狠综合天天综合综合 | 精品亚洲免费 | 亚洲精品综合欧美二区变态 | 99精品视频中文字幕 | 精品国产一区二区三区久久久蜜臀 | 蜜臀av夜夜澡人人爽人人桃色 | 在线国产能看的 | 久久线视频| 96av视频| 91成品视频| 18国产精品白浆在线观看免费 | 麻豆视频在线观看免费 | 少妇啪啪av入口 | 成 人 免费 黄 色 视频 | 日本精品中文字幕在线观看 | 亚洲免费在线播放视频 | 五月婷婷六月综合 | 又黄又爽的免费高潮视频 | 亚洲电影毛片 | 国产精久久久久久久 | 日韩精品免费一线在线观看 | www.色午夜| 18国产精品白浆在线观看免费 | 精品在线一区二区三区 | 日本h视频在线观看 | 综合激情久久 | ,久久福利影视 | 欧美视频在线观看免费网址 | 国产一及片 | 久久国产手机看片 | 国产一级片网站 | 国产高清中文字幕 | 久久99久久久久 | 少妇bbbb搡bbbb桶 | 国产精品乱码久久久久 | 国产99久久九九精品免费 | 国产福利一区二区三区在线观看 | 色悠悠久久综合 | 亚洲综合在线观看视频 | 999视频在线观看 | 91精品国产自产老师啪 | av高清一区二区三区 | 国产一区二区高清 | 国产男女爽爽爽免费视频 | 午夜久久久久久久久久影院 | 激情av综合 | 天天色视频 | 日韩mv欧美mv国产精品 | 久久久久久久久久久成人 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 婷婷伊人网 | 国产精品美女久久久久久2018 | 中午字幕在线 | 久久精品一区八戒影视 | 欧美黑人xxxx猛性大交 | 摸bbb搡bbb搡bbbb| 国产黄色在线 | 日韩在线视频免费看 | 国产精彩视频一区二区 | 黄污网站在线观看 | 涩涩网站在线播放 | 日韩高清av在线 | 成年人免费看 | 色综合久久综合 | 婷婷在线网站 | av在线免费在线观看 | 日韩一区二区久久 | 国产破处在线播放 | 特级xxxxx欧美| 亚洲国产日韩在线 | 亚洲乱码精品久久久久 | 国产一级免费在线观看 | 四虎永久免费网站 | 美女网站久久 | 久久久久伦理电影 | 欧美精品色| 天天天操天天天干 | 人人爱人人做人人爽 | 欧美91av | 91天堂素人约啪 | 免费试看一区 | 精品女同一区二区三区在线观看 | 久久久久久久久黄色 | 久久黄色美女 | www.com.日本一级 | 69精品在线观看 | 91精品啪在线观看国产 | 久久久久国产精品一区 | 91香蕉视频720p | 国产精品自产拍在线观看中文 | 久久国产免费视频 | 国产精品毛片久久蜜 | 亚洲国产精品推荐 | 色爱成人网 | 欧美一区二区三区四区夜夜大片 | 亚洲视频网站在线观看 | 中文字幕亚洲精品日韩 | 国产视频亚洲 | 91在线观看黄| 日韩xxxxxxxxx | 中文字幕一区在线观看视频 | 日日麻批40分钟视频免费观看 | 久久综合免费视频 | 人人爽人人 | 日韩av一区二区在线播放 | 成人在线视频在线观看 | 中文字幕第一页在线视频 | 99精品国产兔费观看久久99 | 亚洲精品在线观看不卡 | 18岁免费看片 | 免费a级大片| 亚洲最大av在线播放 | 91在线中文 | 91av电影| 韩国av三级| 色夜影院 | 在线www色| 免费网站v | 99精品国自产在线 | 免费av网址在线观看 | 亚洲最新视频在线播放 | 欧美在线视频日韩 | 久久久久国产精品视频 | 美女av在线免费 | 爱情影院aqdy鲁丝片二区 | 国产精品99久久久久久人免费 | av黄色免费网站 | 日日夜夜艹 | 日韩高清在线一区二区三区 | 免费手机黄色网址 | 99视频精品免费观看, | 91传媒在线看 | 免费观看国产精品 | 激情婷婷在线观看 | 成片人卡1卡2卡3手机免费看 | 免费福利视频网 | 久久永久免费视频 | 国产亚洲精品综合一区91 | 国产成人av福利 | 亚洲精品国偷自产在线91正片 | 精品国产aⅴ一区二区三区 在线直播av | 在线蜜桃视频 | 欧美电影在线观看 | 亚洲在线日韩 | 日韩精品免费在线播放 | 日韩一区二区三区在线观看 | 国产一区视频在线播放 | 国产精品国产三级国产aⅴ无密码 | 深爱激情五月婷婷 | 中文字幕亚洲不卡 | 999超碰| 久草视频在线资源 | 久久精精品视频 | 国产在线资源 | 欧美99热 | 久草视频看看 | 成年人在线免费看片 | 国产69久久久欧美一级 | 久久久网址 | 欧美日韩国产区 | 国产剧在线观看片 | aⅴ精品av导航 | 亚洲黄色区 | 一级久久久 | 久久亚洲热 | 999国内精品永久免费视频 | 国产精品乱码久久久久 | 瑞典xxxx性hd极品| 日韩在线免费高清视频 | 激情综合站 | 91手机视频在线 | 丁香六月av | 啪嗒啪嗒免费观看完整版 | 草久久久久 | 中文国产在线观看 | 精品国产一区二区三区四区vr | 韩国av一区二区三区在线观看 | 欧美视频18| 韩国av一区二区三区在线观看 | 五月亚洲综合 | 国产高清一| 粉嫩av一区二区三区四区五区 | 免费在线看成人av | 国产精品久久网 | 国产成人a v电影 | 天天视频亚洲 | 欧美成天堂网地址 | 国产99久久久国产精品成人免费 | 久久99这里只有精品 | 免费在线观看中文字幕 | 中文字幕综合在线 | 成年人在线看片 | 国产成人av福利 | 久草精品在线观看 | 亚洲精品视 | 国产97在线视频 | www.久久久久 | 久久综合九色综合97婷婷女人 | 中文av影院 | www.com.黄| h网站免费在线观看 | 六月丁香婷婷网 | 中文字幕丝袜美腿 | 黄色av播放 | 欧美一级性生活片 | 国产麻豆精品久久 | 最新午夜 | 亚洲免费小视频 | 久久超 | 天天射,天天干 | 国产精品久久久久久久久免费 | 黄色片免费电影 | 国产成本人视频在线观看 | 亚洲黄色片在线 | 91在线观看视频网站 | 国内视频 | 久久99热这里只有精品 | 婷婷午夜 | 欧美日韩中文在线视频 | 亚洲伊人网在线观看 | 国产精品成人久久久久久久 | 亚洲精品高清一区二区三区四区 | 精品麻豆入口免费 | 91av视频在线观看免费 | 亚洲韩国一区二区三区 | 亚洲最新在线视频 | 五月婷婷综合久久 | 国内精品久久天天躁人人爽 | 伊人色播 | 国内精品国产三级国产aⅴ久 | 国产精品99久久久久久宅男 | 国内丰满少妇猛烈精品播放 | 五月婷网站 | 深夜激情影院 | 日韩激情小视频 | 日韩精品久久一区二区三区 | 国产又黄又猛又粗 | 欧美精品二区 | 丁香五月网久久综合 | 一级片视频在线 | 在线中文视频 | 一区二区三区四区久久 | 正在播放久久 | 中文字幕精品在线 | 五月婷婷六月丁香 | 久久99国产精品久久 | www178ccom视频在线 | 天天干,天天草 | 狠狠撸电影 | 日本黄色大片儿 | 91av在线播放视频 | 2018好看的中文在线观看 | 久久免费毛片视频 | 国产一级在线看 | 国产亚洲精品久久久久久大师 | 日韩高清片 | 三级av网| 97在线观看视频 | 国产精品丝袜在线 | av品善网| 欧美人交a欧美精品 | 精品国产伦一区二区三区观看方式 | 成人国产精品免费观看 | 激情网第四色 | a在线观看免费视频 | av网站免费在线 | 不卡视频一区二区三区 | 成人av亚洲| 中文字幕在线免费播放 | 亚洲精品网址在线观看 | 久久久久久久久久久电影 | 久久综合在线 | 国产福利精品一区二区 | 免费91麻豆精品国产自产在线观看 | 欧美日韩视频精品 | 五月天婷婷在线观看视频 | 麻豆久久精品 | 亚洲精品视频第一页 | 成人夜晚看av | 狠狠色丁香婷婷综合久久片 | 久久久综合色 | 国产亚洲精品bv在线观看 | 日韩欧美在线高清 | 黄色a大片 | 在线观看亚洲精品视频 | 97人人精品 | 五月天六月婷婷 | 在线视频观看成人 | 亚洲男模gay裸体gay | 久久成人麻豆午夜电影 | 久久精品国产一区二区三区 | 91精品麻豆| 成人毛片一区 | 狠狠躁日日躁夜夜躁av | 天天操天天操天天操天天操天天操 | 精品福利网 | 91九色porny蝌蚪视频 | 日韩精品久久久 | 中文字幕在线久一本久 | 日韩欧美成人网 | 狠狠狠色丁香综合久久天下网 | 亚洲精品理论 | 在线中文字幕视频 | 日韩免费高清 | 在线精品视频免费播放 | 亚洲最快最全在线视频 | 中文字幕av在线免费 | 精品91久久久久 | 在线观看中文av | 97超碰超碰久久福利超碰 | 97超碰中文| 国产午夜精品一区二区三区 | 亚洲国产精品久久久久婷婷884 | 91久久久久久久 | bbb搡bbb爽爽爽 | 97在线观看免费高清 | 97品白浆高清久久久久久 | 四虎在线视频免费观看 | 高潮久久久久久 | 欧美激精品 | 夜夜干夜夜 | 中中文字幕av | 天天综合狠狠精品 | 黄色片视频免费 | 综合久久久久 | 91精品一区二区三区蜜臀 | 亚洲亚洲精品在线观看 | 亚洲在线高清 | www久久99 | 99精品成人 | 在线观看视频黄 | 韩国av免费在线观看 | 99在线高清视频在线播放 | 狠狠操综合 | 国产精品永久 | www.久久精品视频 | 国产最新在线 | 69国产精品视频免费观看 | 国色综合| 91丨九色丨高潮 | 六月丁香综合网 | 91麻豆精品91久久久久同性 | 日韩在线高清 | 激情视频在线观看网址 | 午夜精品久久久久久久久久久久久久 | 欧美日本不卡 | 中文字幕免费在线看 | 免费69视频 | 亚洲爱av | 国产麻豆精品传媒av国产下载 | 中文字幕免费国产精品 | 伊人官网 | 少妇bbbb揉bbbb日本 | 国产视频在线观看一区 | 人人搞人人爽 | 狠狠网亚洲精品 | 麻豆国产视频下载 | 国产精品一区二区久久国产 | 欧美日韩免费一区二区 | 涩涩成人在线 | 天天操天天色综合 | 国产一区影院 | 97干com| 久久久高清一区二区三区 | 色综合天天干 | 黄色三级免费看 | 午夜成人影视 | www色综合| 亚洲日本中文字幕在线观看 | 天天爱天天操 | 超碰在线国产 | 亚洲三级黄色 | 国产手机免费视频 | 成人一级在线观看 | 91av超碰| 国产在线美女 | www.国产在线观看 | 国产伦理一区二区 | 亚洲.www | 人人藻人人澡人人爽 | av黄色在线 | 激情网色 | 91精品一区二区三区久久久久久 | 久久久www成人免费精品张筱雨 | av网址aaa| 手机色站 | 手机av在线网站 | 国产精品原创av片国产免费 | 国产免费一区二区三区网站免费 | 色香天天 | 久久久久激情 | av在线网站免费观看 | 精品久久久久久久 | 91免费在线看片 | 精品在线观看国产 | 欧美日韩精品电影 | 欧美日bb | 亚洲免费观看在线视频 | 成人免费观看网址 | 99爱精品视频 | 亚洲年轻女教师毛茸茸 | 免费男女羞羞的视频网站中文字幕 | 成在线播放 | 精品国产一区二区三区在线观看 | 婷婷色5月 | 成人毛片一区 | 四虎永久免费网站 | 日日天天av | 久久精品人人做人人综合老师 | 黄网站色成年免费观看 | 黄色大全视频 | 欧美日韩在线精品 | 天天色天天射综合网 | 中文在线最新版天堂 | 91日本在线播放 | 久久免费看毛片 | 成人aⅴ视频 | 免费色av| 深夜免费福利在线 | 国产精品久久久久久久免费观看 | 国内精品久久久久久久久久 | 国产视频在线观看一区二区 | 五月开心激情网 | 在线三级播放 | 国产精品12 | 欧美 亚洲 另类 激情 另类 | 人人躁| 国产精品com | 久久综合偷偷噜噜噜色 | 久久久久女人精品毛片九一 | 久久久国产精品久久久 | av久久久| 亚洲精品免费播放 | 久久色亚洲 | 麻豆94tv免费版 | 91亚洲精品久久久久图片蜜桃 | 国产精品 9999 | 欧美精品一区二区蜜臀亚洲 | 国产视频一二区 | 色中射| 久久精品久久99精品久久 | 欧美日韩精品在线播放 | 精品一区在线 | 69av在线视频| 狠狠色狠狠色终合网 | 欧美精品久久久久性色 | a黄色片在线观看 | 亚洲美女视频在线观看 | 激情狠狠干 | 国产精品9999久久久久仙踪林 | www.av小说 | 久久人人爽 | 国产成人精品999 | 99精品视频免费看 | 97超视频 | 国产精品久久久久9999吃药 | 超碰公开在线观看 | 国产精品免费在线播放 | 91av福利视频 | 99精品欧美一区二区蜜桃免费 | 欧美日韩免费观看一区二区三区 | 午夜久久久久久久久久影院 | 亚洲综合欧美激情 | 久久国产一区 | 精品视频在线免费 | av在线永久免费观看 | 免费三级黄色 | 国内精品国产三级国产aⅴ久 | 亚洲区另类春色综合小说 | 91看片淫黄大片在线播放 | 久久精品国产一区二区 | 久久久久欧美精品999 | 国产精品99免视看9 国产精品毛片一区视频 | 婷婷精品进入 | 精品免费久久久久久 | 国产精品成人av电影 | 日本视频精品 | 亚洲日韩欧美一区二区在线 | 色婷婷狠| 精品国产大片 | 99精品色 | 婷婷色在线资源 | 欧美精品亚洲精品 | 色99之美女主播在线视频 | 最近字幕在线观看第一季 | 免费在线黄色av | 免费亚洲婷婷 | 久久精品第一页 | 国产尤物在线 | 中文字幕资源在线 | 国产中出在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 日韩欧美一区二区三区在线观看 | 日韩av免费一区二区 | 狠狠干成人综合网 | 欧洲精品码一区二区三区免费看 | 日本精品一区二区三区在线观看 | 中文资源在线播放 | 一区二区三区电影 | 欧美国产日韩在线视频 | 天天干天天操天天干 | 婷婷丁香六月 | 国产精品久久嫩一区二区免费 | 日韩成人在线一区二区 | 欧美少妇xx | 欧美在线1 | 99久久久久久国产精品 | 波多野结衣在线视频免费观看 | 久久精品99久久久久久2456 | 欧美日韩国产一二三区 | 日三级在线| 久久久久久久久影视 | 国产美女在线精品免费观看 | 激情喷水 | 国产一二区免费视频 | 欧美日韩视频 |