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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和lua的效率对比测试_Unity游戏开发Lua更新运行时代码! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近沉迷lua腳本熱更,想說這個可以提高多少菜雞的調試效率,找了網上好多文章,但是都不行,嘗試了很久,并且自己測試和學習,寫了一遍,勉強能熱更了。下面記錄一下熱更Lua的過程。

一、用來卸載表格的加載

最簡單粗暴的熱更新就是將package.loaded[modelname]的值置為nil,強制重新加載:

function reload_module_obsolete(module_name)
package.loaded[module_name] = nil
require(module_name)
end

這樣做雖然能完成熱更,但問題是已經引用了該模塊的地方不會得到更新, 因此我們需要將引用該模塊的地方的值也做對應的更新。

function ReloadUtil.Reload_Module(module_name)
local old_module = _G[module_name]

package.loaded[module_name] = nil
require (module_name)

local new_module = _G[module_name]
for k, v in pairs(new_module) do
old_module[k] = v
end

package.loaded[module_name] = old_module
end

二、我認為邏輯最清晰的,但是可能是我不會用吧!

源鏈接:鏈接

--region 利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數 -- 失敗

function ReloadUtil.hotfix(chunk, check_name)
check_name = check_name or 'hotfix'
local env = {}
setmetatable(env, { __index = _G })
local f, err = load(chunk, check_name, 't', env)
assert(f,err)
local ok, err = pcall(f)
assert(ok,err)

local protection = {
setmetatable = true,
pairs = true,
ipairs = true,
next = true,
require = true,
_ENV = true,
}
--防止重復的table替換,造成死循環
local visited_sig = {}

function ReloadUtil.update_table(newTable, oldTable, name, deep)
--對某些關鍵函數不進行比對
if protection[newTable] or protection[oldTable] then return end
--如果原值與當前值內存一致,值一樣不進行對比
if newTable == oldTable then return end
local signature = tostring(oldTable)..tostring(newTable)
if visited_sig[signature] then return end
visited_sig[signature] = true
--遍歷對比值,如進行遍歷env類似的步驟
for name, newValue in pairs(newTable) do
local old_value = oldTable[name]
if type(newValue) == type(old_value) then
if type(newValue) == 'function' then
ReloadUtil.update_func(newValue, old_value, name, deep..' '..name..' ')
oldTable[name] = newValue
elseif type(newValue) == 'table' then
ReloadUtil.update_table(newValue, old_value, name, deep..' '..name..' ')
end
else
oldTable[name] = newValue
end
end
--遍歷table的元表,進行對比
local old_meta = debug.getmetatable(oldTable)
local new_meta = debug.getmetatable(newTable)
if type(old_meta) == 'table' and type(new_meta) == 'table' then
ReloadUtil.update_table(new_meta, old_meta, name..'s Meta', deep..' '..name..'s Meta'..' ' )
end
end

function ReloadUtil.update_func(newFunc, oldFunc, name, deep)
--取得原值所有的upvalue,保存起來
local old_upvalue_map = {}
for i = 1, math.huge do
local name, value = debug.getupvalue(oldFunc, i)
if not name then break end
old_upvalue_map[name] = value
end
--遍歷所有新的upvalue,根據名字和原值對比,如果原值不存在則進行跳過,如果為其它值則進行遍歷env類似的步驟
for i = 1, math.huge do
local name, value = debug.getupvalue(newFunc, i)
if not name then break end
local old_value = old_upvalue_map[name]
if old_value then
if type(old_value) ~= type(value) then
debug.setupvalue(newFunc, i, old_value)
elseif type(old_value) == 'function' then
ReloadUtil.update_func(value, old_value, name, deep..' '..name..' ')
elseif type(old_value) == 'table' then
ReloadUtil.update_table(value, old_value, name, deep..' '..name..' ')
debug.setupvalue(newFunc, i, old_value)
else
debug.setupvalue(newFunc, i, old_value)
end
end
end
end

--原理
--利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數
for name,value in pairs(env) do
local g_value = _G[name]
if type(g_value) ~= type(value) then
_G[name] = value
elseif type(value) == 'function' then
ReloadUtil.update_func(value, g_value, name, 'G'..' ')
_G[name] = value
elseif type(value) == 'table' then
ReloadUtil.update_table(value, g_value, name, 'G'..' ')
end
end
return 0
end

function ReloadUtil.hotfix_file(debugName)
local newCode
local fp = io.open(debugName)
if fp then
newCode = fp:read('*all')
io.close(fp)
end
if not newCode then
return -1
end
return ReloadUtil.hotfix(newCode, debugName)
end

--endregion

圖文無關

三、有點復雜,遞歸了debug.getregistry(),然后去替換舊的值

源鏈接:asqbtcupid.github.io/lu?有介紹原理,講得還蠻細的,學習了蠻多,但是這個遞歸真的是復雜,我注釋掉了一些遞歸,能滿足基本的需求。

local ReloadUtil = {}

local tableInsert = table.insert
local tableRemove = table.remove
local tableConcat = table.concat
local ioPopen = io.popen
local ioInput = io.input
local ioRead = io.read
local stringMatch = string.match
local stringFind = string.find
local stringSub = string.sub
local stringGsub = string.gsub
local packageLoaded = package.loaded
local type = type
local getfenv = getfenv
local setfenv = setfenv
local loadstring = loadstring
local mathHuge = math.huge
local debugGetupvalue = debug.getupvalue
local debugSetupvalue = debug.setupvalue
local debugGetmetatable = debug.getmetatable
local debugSetfenv = debug.setfenv

function ReloadUtil.FailNotify(...)
printAError(...)
end

function ReloadUtil.DebugNofity(...)
print(...)
end

function ReloadUtil.ErrorHandle(e)
ReloadUtil.FailNotify("HotUpdate Error\n"..tostring(e))
ReloadUtil.ErrorHappen = true
end

function ReloadUtil.InitProtection()
ReloadUtil.Protection = {}
local Protection = ReloadUtil.Protection
Protection[setmetatable] = true
Protection[pairs] = true
Protection[ipairs] = true
Protection[next] = true
Protection[require] = true
Protection[ReloadUtil] = true
Protection[ReloadUtil.Meta] = true
Protection[math] = true
Protection[string] = true
Protection[table] = true
end

local function Normalize(path)
path = path:gsub("/","\\")

local pathLen = #path
if path:sub(pathLen, pathLen) == "\\" then
path = path:sub(1, pathLen - 1)
end

local parts = { }
for w in path:gmatch("[^\\]+") do
if w == ".." and #parts ~=0 then tableRemove(parts)
elseif w ~= "." then tableInsert(parts, w)
end
end
return tableConcat(parts, "\\")
end

-- 根據給的路徑,找到路徑下所有文件,HU.FileMap[FileName] = {SysPath = line, LuaPath = luapath}
function ReloadUtil.InitFileMap(RootPath)
local systemPathList = {}
local HotUpdateDic = ReloadUtil.HotUpdateDic
local OldCode = ReloadUtil.OldCode
RootPath = Normalize(RootPath)
--獲取一個File對象其下的所有文件和目錄的絕對路徑: 的所有文件(/S/B),不包括文件夾(/A:A),ioPopen返回文件句柄file handle
--todo 這里有的問題,多次啟動后會報bad file decorator ,檢查是否是打開文件沒有關閉導致
local file = ioPopen("dir /S/B /A:A \""..RootPath.."\"")

for SysPath in ioInput(file):lines() do
local FileName = stringMatch(SysPath,".*\\(.*)%.lua")
--todo meta 優化一下regex
local metaFile = stringMatch(SysPath,".*\\(.*)%.lua.meta")
if FileName ~= nil and metaFile == nil then
--todo !!! luaPath在保存的時候是按文件夾路徑保存的比如:game.modules.XXX.lua,所以可能要自己搞對這個路徑

local startIndex = stringFind(SysPath,"game")
local luaPath = stringSub(SysPath, startIndex, #SysPath -4)
luaPath = stringGsub(luaPath, "\\", ".")
HotUpdateDic[luaPath] = SysPath
tableInsert(systemPathList,SysPath)
-- 初始化舊代碼
ioInput(SysPath)
OldCode[SysPath] = ioRead("*all")
ioInput():close()
end
end

file:close()

return systemPathList
end

function ReloadUtil.InitFakeTable()
local meta = {}
ReloadUtil.Meta = meta
local function FakeT() return setmetatable({}, meta) end
local function EmptyFunc() end
local function pairs() return EmptyFunc end
local function setmetatable(t, metaT)
ReloadUtil.MetaMap[t] = metaT
return t
end
local function getmetatable(t, metaT)
return setmetatable({}, t)
end

local function require(LuaPath)
if not ReloadUtil.RequireMap[LuaPath] then
local FakeTable = FakeT()
ReloadUtil.RequireMap[LuaPath] = FakeTable
end
return ReloadUtil.RequireMap[LuaPath]
end

function meta.__index(table, key)
if key == "setmetatable" then
return setmetatable
elseif key == "pairs" or key == "ipairs" then
return pairs
elseif key == "next" then
return EmptyFunc
elseif key == "require" then
return require
else
local FakeTable = FakeT()
rawset(table, key, FakeTable)
return FakeTable
end
end
function meta.__newindex(table, key, value) rawset(table, key, value) end
function meta.__call() return FakeT(), FakeT(), FakeT() end
function meta.__add() return meta.__call() end
function meta.__sub() return meta.__call() end
function meta.__mul() return meta.__call() end
function meta.__div() return meta.__call() end
function meta.__mod() return meta.__call() end
function meta.__pow() return meta.__call() end
function meta.__unm() return meta.__call() end
function meta.__concat() return meta.__call() end
function meta.__eq() return meta.__call() end
function meta.__lt() return meta.__call() end
function meta.__le() return meta.__call() end
function meta.__len() return meta.__call() end
return FakeT
end

function ReloadUtil.IsNewCode(SysPath)
ioInput(SysPath)
local newCode = ioRead("*all")

local oldCode = ReloadUtil.OldCode[SysPath]
if oldCode == newCode then
ioInput():close()
return false
end

ReloadUtil.DebugNofity(SysPath)
return true, newCode
end

function ReloadUtil.GetNewObject(newCode, LuaPath, SysPath)
--loadstring 一段lua代碼以后,會經過語法解析返回一個函數,執行返回的函數時,字符串中的代碼就被執行了。
local NewFunction = loadstring(newCode)
if not NewFunction then
ReloadUtil.FailNotify(SysPath.." has syntax error.")
collectgarbage("collect")
else
-- 把加載的字符串放置在空環境了,防止報錯
setfenv(NewFunction, ReloadUtil.FakeENV)
local NewObject
ReloadUtil.ErrorHappen = false
--類似其它語言里的 try-catch, xpcall 類似 pcall xpcall接受兩個參數:調用函數、錯誤處理函數
-- todo 父類沒拿到
xpcall(function () NewObject = NewFunction() end, ReloadUtil.ErrorHandle)

if not ReloadUtil.ErrorHappen then
ReloadUtil.OldCode[SysPath] = newCode
return NewObject
else
collectgarbage("collect")
end
end
end

function ReloadUtil.ResetENV(object, name, From, Deepth)
local visited = {}
local function f(object, name)
if not object or visited[object] then return end
visited[object] = true
if type(object) == "function" then
ReloadUtil.DebugNofity(Deepth.."HU.ResetENV", name, " from:"..From)
xpcall(function () setfenv(object, ReloadUtil.ENV) end, ReloadUtil.FailNotify)
elseif type(object) == "table" then
ReloadUtil.DebugNofity(Deepth.."HU.ResetENV", name, " from:"..From)
for k, v in pairs(object) do
f(k, tostring(k).."__key", " HU.ResetENV ", Deepth.." " )
f(v, tostring(k), " HU.ResetENV ", Deepth.." ")
end
end
end
f(object, name)
end

-- 遍歷_G這張全局表,替換HU.ChangedFuncList 有改動列表 的函數
function ReloadUtil.Travel_G()
local visited = {}
local ChangedFuncList = ReloadUtil.ChangedFuncList
visited[ReloadUtil] = true

local function f(table)
if (type(table) ~= "function" and type(table) ~= "table") or visited[table] or ReloadUtil.Protection[table] then return end

visited[table] = true

if type(table) == "function" then
for i = 1, mathHuge do
local name, value = debugGetupvalue(table, i)
if not name then break end

if type(value) == "function" then
for _, funcs in ipairs(ChangedFuncList) do
if value == funcs.OldObject then
debugSetupvalue(table, i, funcs.NewObject)
end
end
end
-- todo
--f(value)
end
elseif type(table) == "table" then
-- 不要漏掉元表和upvalue的表,元表的獲取用debug.getmetatable,
-- todo 這樣對于有metatable這個key的元表,也能正確獲取。
--f(debugGetmetatable(table))

local changeIndexList = {}
for key, value in pairs(table) do
-- todo 還有注意table的key也可以是函數。
--f(key)
f(value)

if type(value) == "function" then
for _, funcs in ipairs(ChangedFuncList) do
if value == funcs.OldObject then
table[key] = funcs.NewObject
end
end
end

-- 找出改動的index
if type(key) == "function" then
for index, funcs in ipairs(ChangedFuncList) do
if key == funcs.OldObject then
changeIndexList[#changeIndexList + 1] = index
end
end
end
end

-- 修改改動的值
for _, index in ipairs(changeIndexList) do
local funcs = ChangedFuncList[index]
table[funcs.NewObject] = table[funcs.OldObject]
table[funcs.OldObject] = nil
end
end
end

--遍歷_G這張全局表,_G在registryTable里
--f(_G)
--如果有宿主語言,那么還要遍歷一下注冊表,用debug.getregistry()獲得。
local registryTable = debug.getregistry()
f(registryTable)
end

function ReloadUtil.UpdateTable(OldTable, NewTable, Name, From, Deepth)
if ReloadUtil.Protection[OldTable] or ReloadUtil.Protection[NewTable] then return end

if OldTable == NewTable then return end

local signature = tostring(OldTable)..tostring(NewTable)

if ReloadUtil.VisitedSig[signature] then return end

ReloadUtil.VisitedSig[signature] = true
ReloadUtil.DebugNofity(Deepth.."HU.UpdateTable "..Name.." from:"..From)

for ElementName, newValue in pairs(NewTable) do
local OldElement = OldTable[ElementName]
if type(newValue) == type(OldElement) then
if type(newValue) == "function" then
ReloadUtil.UpdateOneFunction(OldElement, newValue, ElementName, OldTable, "HU.UpdateTable", Deepth.." ")
elseif type(newValue) == "table" then
ReloadUtil.UpdateTable(OldElement, newValue, ElementName, "HU.UpdateTable", Deepth.." ")
end
elseif OldElement == nil and type(newValue) == "function" then
-- 新增的函數,添加到舊環境里
if pcall(setfenv, newValue, ReloadUtil.ENV) then
OldTable[ElementName] = newValue
end
end
end

-- todo 更新metatable
--local OldMeta = debug.getmetatable(OldTable)
--local NewMeta = ReloadUtil.MetaMap[NewTable]
--if type(OldMeta) == "table" and type(NewMeta) == "table" then
-- ReloadUtil.UpdateTable(OldMeta, NewMeta, Name.."'s Meta", "HU.UpdateTable", Deepth.." ")
--end
end

-- Upvalue 是指那些函數外被引用到的local變量
function ReloadUtil.UpdateUpvalue(OldFunction, NewFunction, Name, From, Deepth)
ReloadUtil.DebugNofity(Deepth.."HU.UpdateUpvalue", Name, " from:"..From)
local OldUpvalueMap = {}
local OldExistName = {}
-- 記錄舊的upvalue表
for i = 1, mathHuge do
local name, value = debugGetupvalue(OldFunction, i)
if not name then break end
OldUpvalueMap[name] = value
OldExistName[name] = true
end

-- 新的upvalue表進行替換
for i = 1, mathHuge do
local name, value = debugGetupvalue(NewFunction, i)
if not name then break end
if OldExistName[name] then
local OldValue = OldUpvalueMap[name]
if type(OldValue) ~= type(value) then
-- 新的upvalue類型不一致時,用舊的upvalue
debugSetupvalue(NewFunction, i, OldValue)
elseif type(OldValue) == "function" then
-- 替換單個函數
ReloadUtil.UpdateOneFunction(OldValue, value, name, nil, "HU.UpdateUpvalue", Deepth.." ")
elseif type(OldValue) == "table" then
-- 對table里面的函數繼續遞歸替換
ReloadUtil.UpdateTable(OldValue, value, name, "HU.UpdateUpvalue", Deepth.." ")
debugSetupvalue(NewFunction, i, OldValue)
else
-- 其他類型數據有改變,也要用舊的
debugSetupvalue(NewFunction, i, OldValue)
end
else
-- 對新添加的upvalue設置正確的環境表
ReloadUtil.ResetENV(value, name, "HU.UpdateUpvalue", Deepth.." ")
end
end
end

function ReloadUtil.UpdateOneFunction(OldObject, NewObject, FuncName, OldTable, From, Deepth)
if ReloadUtil.Protection[OldObject] or ReloadUtil.Protection[NewObject] then return end

if OldObject == NewObject then return end

local signature = tostring(OldObject)..tostring(NewObject)

if ReloadUtil.VisitedSig[signature] then return end
ReloadUtil.DebugNofity(Deepth.."HU.UpdateOneFunction "..FuncName.." from:"..From)
ReloadUtil.VisitedSig[signature] = true
--最后注意把熱更新的函數的環境表再改回舊函數的環境表即可,方法是setfenv(newfunction, getfenv(oldfunction))。
if pcall(debugSetfenv, NewObject, getfenv(OldObject)) then
ReloadUtil.UpdateUpvalue(OldObject, NewObject, FuncName, "HU.UpdateOneFunction", Deepth.." ")
ReloadUtil.ChangedFuncList[#ReloadUtil.ChangedFuncList + 1] = {OldObject = OldObject,NewObject = NewObject,FuncName = FuncName,OldTable = OldTable}
end
end

function ReloadUtil.ReplaceOld(OldObject, NewObject, LuaPath, From)
if type(OldObject) == type(NewObject) then
if type(NewObject) == "table" then
ReloadUtil.UpdateTable(OldObject, NewObject, LuaPath, From, "")
elseif type(NewObject) == "function" then
ReloadUtil.UpdateOneFunction(OldObject, NewObject, LuaPath, nil, From, "")
end
end
end

function ReloadUtil.HotUpdateCode(LuaPath, SysPath)
local OldObject = packageLoaded[LuaPath]
if not OldObject then
-- 沒加載的就不熱更??
return
end

local isNew,newCode = ReloadUtil.IsNewCode(SysPath)
if not isNew then
return
end

local newObject = ReloadUtil.GetNewObject(newCode,SysPath,LuaPath)
-- 更新舊代碼
ReloadUtil.ReplaceOld(OldObject, newObject, LuaPath, "Main")

--原理
--利用_ENV環境,在加載的時候把數據加載到_ENV下,然后再通過對比的方式修改_G底下的值,從而實現熱更新,函數
--setmetatable(ReloadUtil.FakeENV, nil)
--todo ??
--ReloadUtil.UpdateTable(ReloadUtil.ENV, ReloadUtil.FakeENV, " ENV ", "Main", "")

-- 替換完,上一次的代碼就是舊代碼
ReloadUtil.OldCode[SysPath] = newCode
end


-- 外部調用(先Init需要的路徑,然后Update是熱更時候調用的)

---@param RootPath 需要被更新的文件夾路徑
---@param UpdateListFile 需要被更新的文件列表,不傳為整個文件夾,會卡
function ReloadUtil.Init(RootPath, ENV)
ReloadUtil.HotUpdateDic = {}
ReloadUtil.FileMap = {}
ReloadUtil.OldCode = {}
ReloadUtil.ChangedFuncList = {}
ReloadUtil.VisitedSig = {}
ReloadUtil.FakeENV = ReloadUtil.InitFakeTable()()
--當我們加載lua模塊的時候,這時候這個模塊信息并不像初始化全局代碼一樣,就算提前設置了package.loaded["AA"] = nil,
--也不會出現在env中同時也不會調用_G的__newindex函數,也就是說env["AA"]為空,故這種寫法無法進行熱更新,所以通常模塊的寫法改成如下
--定義模塊AA
local AA = {}
--相當于package.seeall
setmetatable(AA, {__index = _G})
--環境隔離
local _ENV = AA
ReloadUtil.NewENV = _ENV
ReloadUtil.ENV = ENV or _G
ReloadUtil.InitProtection()
ReloadUtil.ALL = false
return ReloadUtil.InitFileMap(RootPath)
end

function ReloadUtil.Update()
ReloadUtil.VisitedSig = {}
ReloadUtil.ChangedFuncList = {}
for LuaPath, SysPath in pairs(ReloadUtil.HotUpdateDic) do
ReloadUtil.HotUpdateCode(LuaPath, SysPath)
end

if #ReloadUtil.ChangedFuncList > 0 then
ReloadUtil.Travel_G()
end
collectgarbage("collect")
end

我跟老大炫耀的時候,老大說,那你懂其中的原理嗎,一下問懵我了,老大說,你要學習到其中的原理才能進步啊,不然就只是個會用工具的人。好有道理,搞得我羞愧難當,趕緊好好學習其中原理。

Upvalue

Upvalue 是指那些函數外被引用到的local變量,比如:local a = 1
function foo()
print(a)
end那么a就是這個foo的upvalue。

getupvalue (f, up)

此函數返回函數 f 的第 up 個上值的名字和值。如果該函數沒有那個上值,返回 nil 。
以 '(' (開括號)打頭的變量名表示沒有名字的變量 (去除了調試信息的代碼塊)。

setupvalue (f, up, value):

這個函數將 value 設為函數 f 的第 up 個上值。如果函數沒有那個上值,返回 nil 否則,返回該上值的名字。

_G和debug.getregistry這2張表

學習的時候,我一直以為只有把_G這張全局表的舊值替換掉就好了,然后真正實施的時候,還是會有種種問題,實在是很糟糕,看這段代碼的時候一直不是很理解,看了debug.getregistry的定義:debug.getregistry():返回注冊表表,這是一個預定義出來的表, 可以用來保存任何 C 代碼想保存的 Lua 值。
還是半桶水,但是我有注意到_G這種表其實在debug.getregistry返回的這張注冊表里有,所以最后就遞歸這張表其替換里面的舊值就好了。

getfenv(object):返回對象的環境變量。
setfenv(function,_ENV):設置一段代碼的運行環境

io.popen("dir /S/B /A:A \""..RootPath.."\""):獲取一個File對象其下的所有文件和目錄的絕對路徑: 的所有文件(/S/B),不包括文件夾(/A:A),io.popen返回文件句柄file handle

對了,InitFileMap這個函數有個要注意的,luaPath在保存的時候是按文件夾路徑保存的比如:game.modules.XXX.lua,所以可能要自己搞對這個路徑;

最后總結一下流程:

1. 初始化需要熱更的文件路徑,用一張哈希表存下來;
2. 然后遍歷這些路徑,讀取所有的代碼,判斷是否是新代碼,新的話記錄到ChangedFuncList列表里面;3.?新代碼的話,就把加載的字符串放置在空環境了,防止報錯setfenv(NewFunction, ReloadUtil.FakeENV);4.?代替舊代碼,拿著ChangedFuncList列表到注冊表(debug.getregistry())里面去找舊值,遞歸注冊表的舊值替換成新的值。

來源知乎專欄:Unity手游開發叨叨

總結

以上是生活随笔為你收集整理的和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产乱视频 | 人人爱夜夜操 | 日韩欧美一区二区三区黑寡妇 | 一区二区毛片 | 一区二区三区免费在线 | 欧美日韩久久久 | 日韩精品一区二区三区高清免费 | 欧美日韩在线视频免费 | 久久永久视频 | 18网站在线观看 | 欧美日在线 | 日韩欧美视频在线观看免费 | 日本黄色免费网站 | 精品久久在线 | 久久久国产一区二区 | 在线观看精品黄av片免费 | 中文字幕日韩免费视频 | 国产3p视频 | 92中文资源在线 | 中文字幕激情 | 色婷婷亚洲精品 | 国产又粗又猛又黄又爽视频 | 国产精品久久久久久久久久久久久久 | 国产精品手机看片 | 国产999精品久久久影片官网 | 美女性爽视频国产免费app | 色婷婷五 | 在线免费观看麻豆视频 | av大全在线播放 | 欧美精品在线一区二区 | 97视频资源 | 丁香婷婷综合色啪 | 精品在线观看一区二区 | 国产资源在线观看 | 国产黄大片在线观看 | 成人影音在线 | av大片免费 | 五月婷婷影视 | 中文字幕高清av | 成人影片免费 | 密桃av在线| 最近中文字幕完整视频高清1 | 亚洲精品乱码久久久久久 | 91成人网页版 | 最近2019年日本中文免费字幕 | 亚洲闷骚少妇在线观看网站 | 国产 在线 日韩 | 国产麻豆精品95视频 | 伊人成人激情 | 九九视频免费观看视频精品 | 色小说在线 | 日日久视频 | 久草国产在线观看 | 国产精品久久久久9999 | 伊人在线视频 | 国产精品18久久久久久不卡孕妇 | 97超碰网 | av在线中文 | 99精彩视频在线观看免费 | 在线亚洲天堂网 | 日日干激情五月 | 久久久久亚洲最大xxxx | 美女网站色免费 | 国产精品第一 | 欧美先锋影音 | 免费久久网站 | 综合婷婷久久 | 国产一区在线免费 | 久久综合九色综合97婷婷女人 | 99热这里只有精品久久 | 亚洲天堂网视频在线观看 | 日韩激情视频 | 国产成人福利在线观看 | 91成人精品国产刺激国语对白 | av丝袜在线 | 国产一区免费在线 | 国产一级精品绿帽视频 | 天天色天天爱天天射综合 | 91黄色免费看 | 日日干夜夜爱 | 国产一在线精品一区在线观看 | 亚洲天堂网在线视频观看 | 99久久婷婷国产综合亚洲 | 中文字幕中文字幕 | 国产精品丝袜久久久久久久不卡 | 成年人免费观看国产 | 久久综合久久综合久久综合 | 91人人射| 久久久网址 | 亚洲天天在线 | 黄色亚洲大片免费在线观看 | 亚洲国产黄色片 | 成人午夜免费福利 | 日韩精品久久久久久 | www.人人干| 久久九九久久精品 | 欧美在线一级片 | 黄色软件在线观看 | 日韩免费电影网站 | 天天综合天天做 | 日韩欧美高清一区二区三区 | 欧美精品一区二区在线播放 | 国产精品成人久久久 | 91专区在线观看 | 夜夜操天天干, | 日韩在线视频二区 | 成人一区二区在线观看 | 免费av在线网 | 国产精品自拍av | 激情五月婷婷激情 | 国产成人精品一区一区一区 | 最近中文字幕免费av | 天天综合亚洲 | 激情五月看片 | 91完整版在线观看 | 国产成人在线观看 | 国产精品高清免费在线观看 | 天天操夜夜拍 | 国产精品免费麻豆入口 | 天天综合网久久综合网 | 免费在线观看av | 亚洲精品色视频 | 国产精品自产拍在线观看 | 日本中文在线观看 | 午夜av一区二区三区 | 精品国产乱码久久久久久1区2匹 | 国产成免费视频 | 国产精品国产自产拍高清av | 在线 成人 | 激情中文在线 | 亚洲精品欧美视频 | 五月天激情综合网 | 国产999精品久久久久久 | 丁香花在线观看视频在线 | 免费成人在线观看视频 | 亚洲夜夜网 | 91九色综合 | www.色午夜 | 在线观看免费黄色 | 亚洲午夜精 | 中文字幕专区高清在线观看 | 偷拍福利视频一区二区三区 | 婷婷资源站 | 黄网站色成年免费观看 | 免费视频二区 | 高清国产午夜精品久久久久久 | 国产精品久久久区三区天天噜 | 99视频久久 | 国产黄色特级片 | 久久国内精品99久久6app | 欧美一级电影免费观看 | 日本黄色免费电影网站 | 欧美日韩精品在线播放 | 精品国产一区二区三区男人吃奶 | 久久夜色电影 | 成年人在线免费看视频 | 黄视频网站大全 | 日韩高清网站 | 天天操天天干天天爱 | 麻豆传媒在线免费看 | 天天在线操 | 热久久精品在线 | 91超在线| 人人干97 | 久久精品国产99国产 | 天天干天天操天天 | 国内精品久久影院 | 91成人久久 | 亚洲欧美日韩国产精品一区午夜 | 久久99中文字幕 | 九九热在线观看视频 | 亚洲综合色网站 | 午夜免费在线观看 | 人人爽人人爽av | 国产亚洲精品久久久网站好莱 | 国产一线天在线观看 | 久久精品一二三 | 久久久久久久久爱 | 国产美女久久 | 激情大尺度视频 | 一本一道波多野毛片中文在线 | 久久99久国产精品黄毛片入口 | 日本久久高清视频 | 久碰视频在线观看 | 午夜.dj高清免费观看视频 | 国产亚洲成av片在线观看 | 九九欧美 | 久久久麻豆精品一区二区 | 国产一区在线视频播放 | 欧美一级性视频 | 超碰日韩 | 国产精品粉嫩 | 欧美日韩一区二区免费在线观看 | 在线亚洲欧美视频 | 成人影视免费 | 国产精品毛片一区视频播 | 亚州人成在线播放 | 成人免费视频在线观看 | 国产精品久久久久久久久久直播 | 99视频在线精品 | 91在线精品视频 | 久久免费毛片 | 日韩精品专区在线影院重磅 | 日韩av一区二区在线影视 | 91香蕉视频黄色 | 97成人啪啪网 | 激情综合啪 | 亚洲专区视频在线观看 | 亚洲闷骚少妇在线观看网站 | 国精产品一二三线999 | 亚洲一级二级 | 91成人精品| 色激情五月 | 日本久久电影网 | 四虎免费av | 国产精品毛片久久久久久久 | 高清日韩一区二区 | 九九综合久久 | 亚洲午夜精品一区二区三区电影院 | 日韩一区二区三区免费视频 | 麻豆视频免费看 | 亚洲精品永久免费视频 | 97品白浆高清久久久久久 | 日日摸日日碰 | 久久男人中文字幕资源站 | 麻豆传媒电影在线观看 | 久青草影院 | 在线免费中文字幕 | 婷婷射五月 | 区一区二区三在线观看 | av在线官网 | av不卡免费在线观看 | 久久呀 | av成人免费网站 | 中文字幕在线字幕中文 | 久久久九色精品国产一区二区三区 | 欧美另类z0zx | 福利视频网站 | 免费av的网站 | 亚洲成人精品av | 综合久久久久久 | 日韩欧美视频免费看 | 免费观看性生活大片3 | 99视频在线观看免费 | 中文字幕 第二区 | 欧美a级在线免费观看 | 免费日韩av片 | 国产资源精品 | 国产手机av | av中文在线播放 | 天天爽夜夜爽人人爽曰av | 五月天电影免费在线观看一区 | 一区二区精品久久 | 91桃色在线免费观看 | 日本黄色片一区二区 | 婷婷国产在线观看 | 国产剧情一区二区在线观看 | 国产成人免费在线 | 天天鲁一鲁摸一摸爽一爽 | 国产麻豆果冻传媒在线观看 | 自拍超碰在线 | 在线 欧美 日韩 | 香蕉97视频观看在线观看 | 伊人天天综合 | 又黄又爽又湿又无遮挡的在线视频 | 五月婷婷另类国产 | 欧美成人精品三级在线观看播放 | aaa黄色毛片 | 看片在线亚洲 | 欧美一区二区精美视频 | www日韩精品| 99视频免费播放 | 国产精品欧美 | av888.com | 999电影免费在线观看 | 国产五月色婷婷六月丁香视频 | 国产精品欧美精品 | 99精品视频免费在线观看 | 中文字幕在线观看免费 | 不卡视频在线 | 国产麻豆果冻传媒在线观看 | 在线观看精品 | 天天天天天天天操 | 国产精品久久久久久999 | 欧美日韩一区二区在线观看 | 黄色一级在线观看 | 伊色综合久久之综合久久 | 欧美日韩精品免费观看视频 | 毛片99| 一本一道久久a久久精品 | 黄色一级免费网站 | 五月婷婷综合在线观看 | 99久久精品久久久久久动态片 | 91亚洲国产成人 | 精品一区二区精品 | 性色av一区二区三区在线观看 | 亚洲美女免费精品视频在线观看 | 国产手机在线观看 | 久久久免费精品视频 | 欧美精品小视频 | 中文字幕欧美三区 | av在线免费播放 | 有码中文字幕 | 国产精品国产精品 | 精品国产99 | 五月天婷婷丁香花 | 99久久久久国产精品免费 | 97精品国产一二三产区 | 日韩在线免费小视频 | 午夜婷婷在线观看 | 国产九九精品视频 | 国产在线成人 | 欧美日本一区 | 成人小视频在线观看免费 | 91视视频在线直接观看在线看网页在线看 | 中文字幕国产 | 在线观看的a站 | 国产精品k频道 | 国产不卡一二三区 | 午夜婷婷在线观看 | 亚洲黄色av网址 | 在线亚洲天堂网 | 一区二区三区免费看 | 免费福利在线 | 免费看搞黄视频网站 | 精品国模一区二区 | 天天爱综合 | 日韩欧美在线观看一区二区三区 | www.激情五月.com | 91aaa在线观看 | 黄色av三级在线 | 探花视频在线观看+在线播放 | 黄色片免费在线 | 国产伦理久久精品久久久久_ | 三上悠亚一区二区在线观看 | 在线视频日韩 | 亚洲国产99 | 久久久精品在线观看 | 中文字幕在线影视资源 | 一级淫片在线观看 | 成人在线观看网址 | 日日夜夜噜 | 在线视频黄| 天天操婷婷 | avsex| 日韩午夜av电影 | 久久人人爽视频 | 亚洲精品自拍视频在线观看 | av 一区二区三区四区 | 99精品在线免费 | 麻花天美星空视频 | 911久久香蕉国产线看观看 | 91在线影院| 久久国产日韩 | 玖玖玖精品 | 色综合久久88色综合天天6 | 久久久久久久看片 | 五月婷婷av | 午夜精品av | 亚洲h色精品 | 亚洲综合在线五月 | 久久久久欠精品国产毛片国产毛生 | 欧美在线视频二区 | 91精品在线观看视频 | 国产激情久久久 | 国产精品av免费在线观看 | 国产成人一区二区三区 | 黄色特级一级片 | 97人人模人人爽人人喊中文字 | 国产999精品久久久影片官网 | 蜜桃麻豆www久久囤产精品 | 一级特黄aaa大片在线观看 | 日韩中文字幕视频在线 | 97视频人人免费看 | 日韩精品视频免费在线观看 | 色吊丝在线永久观看最新版本 | 国内精品视频久久 | 成人动漫一区二区 | 久久99精品国产99久久6尤 | 日韩中文字幕免费电影 | 久久精品第一页 | 国产v在线 | 久久国产a | 在线看国产精品 | 中文在线中文资源 | 一区二区三区在线免费播放 | 色综合激情久久 | 久久久久亚洲a | 国产精品门事件 | www.久久久| 波多野结衣视频一区二区 | 亚州精品成人 | 欧美 日韩 国产 中文字幕 | 精品一区精品二区 | 99久久精品国产亚洲 | 中日韩免费视频 | 色婷在线| 天天射综合 | 成人午夜网址 | 六月激情婷婷 | 在线观看黄色大片 | 毛片888| 欧美一区二区三区激情视频 | 婷婷国产一区二区三区 | 精品国产一区二区三区久久影院 | 成人sm另类专区 | 久草在线视频看看 | 天堂视频一区 | 久久伊人精品天天 | 欧美精品久久久久 | 国产精品视频区 | 亚洲人人精品 | 中文字幕在线观看不卡 | 99精品国产高清在线观看 | 国产破处在线播放 | 色婷婷久久久综合中文字幕 | av大全在线播放 | 国产精品视频 | 综合网婷婷 | av在线播放一区二区三区 | 五月激情视频 | 天天操人 | 91资源在线观看 | 亚洲久在线 | 黄色毛片视频免费 | 成人在线视频在线观看 | www色 | 久久人视频| 91精品免费在线观看 | 国产在线播放一区二区 | 久久久久网址 | 日韩欧美一区二区在线播放 | 久久久精品国产一区二区电影四季 | 久久91久久久久麻豆精品 | 色天天综合久久久久综合片 | 亚洲精品在线播放视频 | 久久精品美女视频 | 毛片99| 亚洲欧洲日韩在线观看 | 最近更新的中文字幕 | 欧美精品做受xxx性少妇 | 欧美日韩调教 | 99久久久久 | 又紧又大又爽精品一区二区 | av免费观看高清 | 日本大片免费观看在线 | 一级片免费在线 | 精品9999| 91在线最新 | 国产精品大片免费观看 | 国产精品免费视频网站 | a色视频 | 中文一区在线 | 天天综合视频在线观看 | 色999五月色 | 99爱精品在线| 96视频在线 | 国产一区二区影院 | 国产小视频在线播放 | 日韩av影片在线观看 | 在线www色 | 精品久久久久久久久久久院品网 | 国产精品一区在线观看你懂的 | 中文字幕最新精品 | 51久久成人国产精品麻豆 | 在线视频免费观看 | 欧美日韩超碰 | 玖玖玖在线 | 中文资源在线观看 | www.五月婷婷.com | 国产青春久久久国产毛片 | 日韩女同av | 一级黄色片在线播放 | 91成人午夜 | 日韩免费| av福利免费| 天天射综合网视频 | 伊人资源站 | 天天曰天天曰 | 亚洲国产手机在线 | 麻豆精品视频 | 五月婷婷视频在线 | 日韩免费三级 | 亚洲国产精品激情在线观看 | 美女在线黄 | 91精品日韩 | 日韩在线在线 | 伊人色**天天综合婷婷 | 免费观看一级视频 | 日韩视频欧美视频 | 黄色片视频在线观看 | av资源免费在线观看 | 伊人黄| 国产小视频精品 | 国产一区在线视频播放 | 国产色拍拍拍拍在线精品 | 国产精品毛片一区 | 在线免费观看羞羞视频 | 激情图片久久 | 久久久久久久久久网 | 91精品国自产拍天天拍 | 97视频在线观看免费 | 黄色激情网址 | av怡红院 | 国产91精品看黄网站在线观看动漫 | 色搞搞| 99色免费视频 | 看国产黄色片 | 啪啪激情网 | 国产免费一区二区三区网站免费 | 国产精品黑丝在线观看 | 亚洲一区欧美精品 | 精品国产乱码久久久久久1区二区 | 日日爽日日操 | 国产精品人成电影在线观看 | 亚洲视频精品在线 | 久久久久夜色 | 制服丝袜一区二区 | 一区二区三区不卡在线 | 伊人亚洲综合 | 一本一本久久a久久精品综合 | 国产一区二三区好的 | 亚洲精品日韩在线观看 | 免费看国产曰批40分钟 | 日本在线观看黄色 | 热久久免费视频精品 | 97超碰人人干 | 91麻豆精品久久久久久 | 国产999精品久久久久久绿帽 | 视频在线观看日韩 | 亚洲区视频在线观看 | 日韩精品免费一线在线观看 | 日韩av电影免费在线观看 | 91精品国产自产在线观看永久 | av中文天堂在线 | 日日干天天插 | 国产 日韩 欧美 中文 在线播放 | 国产成人三级在线 | 日韩午夜大片 | 精品国产人成亚洲区 | 欧美色道| 亚洲男模gay裸体gay | www178ccom视频在线 | 国产精品福利在线观看 | 欧美人牲| 五月婷婷,六月丁香 | 久久艹久久 | 欧美国产日韩一区二区三区 | 国产精品久久精品国产 | 午夜成人免费电影 | 国产精品久久久久久高潮 | 激情网站免费观看 | 日本中文字幕免费观看 | 香蕉97视频观看在线观看 | 亚洲精品久久久久久久不卡四虎 | 免费在线观看一级片 | 久久久精品一区二区三区 | av片在线看 | 草免费视频 | 最近高清中文字幕在线国语5 | 奇米网8888 | 久久久久综合精品福利啪啪 | 日精品| 婷婷在线视频观看 | 久久刺激视频 | 婷婷av综合| 91亚洲精品久久久蜜桃网站 | 久久午夜电影网 | 日韩综合一区二区三区 | 国产免费人成xvideos视频 | 国产精品精品国产色婷婷 | 成人免费一区二区三区在线观看 | 可以免费看av | 色婷婷久久久 | 免费亚洲黄色 | 亚洲三级av | 国产一区二区免费在线观看 | 激情婷婷| 免费网站在线 | 午夜美女福利 | 久久伊人精品一区二区三区 | 国产精品久久久影视 | 99久久精品久久久久久动态片 | 国产精久久 | 亚洲免费在线 | 亚洲一区免费在线 | 免费视频a| 激情av网| 国产精品 欧美 日韩 | 欧美日韩视频在线 | 国产婷婷色 | 欧美精品一区在线 | 国产成人精品一区二三区 | 91成人在线观看喷潮 | wwwwww黄 | 日韩av二区 | 日本美女xx | 亚洲最大av在线播放 | 高清在线一区二区 | 国产综合久久 | 少妇精品久久久一区二区免费 | 亚洲欧洲美洲av | 波多野结衣视频一区二区三区 | 欧美日韩中文字幕综合视频 | 精品亚洲午夜久久久久91 | 特级毛片在线免费观看 | 精品久久久久免费极品大片 | 午夜视频在线观看一区二区三区 | 亚洲人成影院在线 | 人人爱夜夜操 | 亚洲精品资源 | 日本成人中文字幕在线观看 | 亚洲精品ww | 成人黄色小说视频 | 日韩一区二区三区高清免费看看 | 99视频+国产日韩欧美 | 久草在线视频看看 | 久草香蕉在线视频 | 很黄很污的视频网站 | 国产黄色片一级三级 | 日韩欧美一区二区三区黑寡妇 | 久久久久久高清 | 国产中文字幕一区二区 | 亚洲综合黄色 | 中文在线天堂资源 | 亚洲涩综合 | 免费观看成年人视频 | 91麻豆免费看 | 人人爱人人爽 | www.夜夜操.com | 久久久综合精品 | 久久福利在线 | 午夜av免费看 | 色在线免费视频 | 免费能看的黄色片 | 亚洲夜夜爽 | 免费看黄在线看 | 456免费视频 | 97视频网站| 狠狠激情中文字幕 | 天天干人人 | 极品美女被弄高潮视频网站 | 国产91精品欧美 | 五月开心六月婷婷 | 高清日韩一区二区 | 国产美女免费视频 | 不卡的av在线 | 五月婷社区 | 精品综合久久 | 亚洲精品综合一区二区 | 日韩精品不卡在线 | 97精品免费视频 | 91精彩视频 | 国产香蕉视频在线观看 | 中文字幕免费高 | 草免费视频 | 一本一道波多野毛片中文在线 | 狠狠狠狠狠狠天天爱 | 美女黄频网站 | 天堂va在线高清一区 | 911久久香蕉国产线看观看 | 99久久免费看 | 国产精品91一区 | 丁香五香天综合情 | 手机成人在线 | 亚洲综合五月天 | 成人久久视频 | 日韩精品久久久 | 亚洲精品免费在线观看视频 | 四虎天堂 | 久久99国产精品自在自在app | 国产精品毛片一区视频 | 免费一区在线 | 国产精品网在线观看 | 日日干精品| 99 久久久久 | 中文在线字幕观看电影 | 亚洲欧美综合 | 国产欧美在线一区 | 亚洲极色 | 国产精品 国内视频 | 人人网av | 福利久久| 国产精品午夜久久久久久99热 | 欧美va天堂va视频va在线 | 久久这里精品视频 | 天天干天天操天天干 | 九九热在线视频免费观看 | 国内丰满少妇猛烈精品播 | 人人操日日干 | a级国产片| 日韩美女高潮 | 久久在线精品视频 | 99久久精品免费视频 | 日韩精品最新在线观看 | av在线免费在线观看 | 一级一级一片免费 | 欧洲精品视频一区二区 | av网站在线免费观看 | 天天操狠狠干 | av在线网站观看 | 国产视频综合在线 | 一色屋精品视频在线观看 | 99re久久资源最新地址 | 日韩欧美一区二区三区在线观看 | 黄色一级在线免费观看 | 久草精品在线 | 日本黄色免费大片 | 久操视频在线免费看 | 天天躁日日躁狠狠躁av中文 | 天天操天天射天天添 | 久久免费精彩视频 | 色婷婷 亚洲 | 欧美午夜寂寞影院 | 日韩av一区二区在线播放 | 婷婷中文在线 | 天天天天天天操 | 黄色av免费 | 国产精品免费一区二区 | 日韩精品在线视频免费观看 | 成年人在线视频观看 | 福利视频一二区 | 美女网站色 | 激情综合网在线观看 | 国产亚州精品视频 | 色狠狠一区二区 | av福利资源 | 日韩高清精品免费观看 | 六月丁香社区 | 国产精品免费久久久久久久久久中文 | 97超碰超碰久久福利超碰 | 亚洲精品视频在线观看视频 | 日本黄区免费视频观看 | 69中文字幕| free. 性欧美.com| 欧美精品久久久久久久免费 | 国产精品欧美久久久久三级 | 欧美日韩精品二区第二页 | 久久99国产精品免费 | 丁香婷婷激情 | 91手机电视| 免费视频一区 | 免费av免费观看 | 国产美女精品久久久 | 色婷婷综合久久久久中文字幕1 | 最新国产在线视频 | 人人操日日干 | 在线看av网址 | 亚洲精色| 国产99久久久精品 | 天天操天天拍 | 成人国产精品av | a级国产乱理伦片在线观看 亚洲3级 | 久久久久高清 | 亚洲第一区在线观看 | 四虎影视精品 | a黄色片在线观看 | 中文字幕a在线 | 亚洲精品婷婷 | 久久视频在线观看中文字幕 | 黄色大片国产 | 美国三级黄色大片 | 99热最新| 在线国产黄色 | 亚洲免费不卡 | 五月天国产 | 日韩视频免费播放 | 中文字幕在线播放av | 日韩黄色网络 | 久久人91精品久久久久久不卡 | 成人av网页 | 国产成人一区二 | 国产精品一区二区三区视频免费 | 亚洲美女在线一区 | 亚洲精品在线视频网站 | 日韩网站免费观看 | 国产精品欧美一区二区三区不卡 | 伊人资源视频在线 | 精品久久久久久国产 | 99这里只有 | 综合色亚洲 | 在线视频 精品 | 视频在线99 | 久久久久久久精 | 精品免费99久久 | a级国产毛片 | 久久爱992xxoo | 九九久久电影 | av色综合网 | 在线播放 亚洲 | 国产一区自拍视频 | 成人一级| se视频网址 | 97精品久久人人爽人人爽 | 亚洲成人网av | 狠狠地操 | 欧美成人在线免费 | 日韩区欧美久久久无人区 | 99热在线国产精品 | 欧美大片第1页 | 91免费观看视频网站 | 亚洲成人动漫在线观看 | 黄色91免费观看 | 成人久久亚洲 | 婷婷综合五月天 | 五月天综合色激情 | 久久这里只有精品9 | 国产精品视频永久免费播放 | 亚洲一区美女视频在线观看免费 | 九九九九精品九九九九 | 国产做aⅴ在线视频播放 | 在线视频一区二区 | 国产视频99| 欧美一区二区精美视频 | 91传媒在线| 久久av电影| 免费国产在线精品 | 黄网站www | 一本大道久久精品懂色aⅴ 五月婷社区 | 免费国产黄线在线观看视频 | 亚洲最大免费成人网 | 色视频在线免费观看 | 久久国产精品99久久久久久进口 | 久久不卡视频 | 亚洲狠狠操 | 国产在线观看免费 | 在线观看视频你懂得 | 成片免费 | 国产综合精品一区二区三区 | 最近中文字幕国语免费av | 处女av在线 | 欧美在线aaa | 99久久精品免费看国产一区二区三区 | www.99久久.com| 国产麻豆电影在线观看 | 日韩h在线观看 | 欧美在线观看视频一区二区三区 | 国产精品一区二区三区视频免费 | 精品女同一区二区三区在线观看 | 成人黄色电影在线播放 | 日本黄色片一区二区 | 午夜国产在线观看 | 欧美日韩一级久久久久久免费看 | 国产一级特黄毛片在线毛片 | 国产麻豆成人传媒免费观看 | 91精品久久久久久 | 91麻豆精品国产自产在线 | 中文字幕免费看 | 久久精品久久99精品久久 | 久章草在线观看 | 国产精品一级在线 | 精品欧美一区二区三区久久久 | 在线观看v片 | 成人在线小视频 | 中文字幕在线播放视频 | 99视频免费观看 | 九九热久久免费视频 | 久久国产精品久久精品 | 麻豆影音先锋 | 夜夜高潮夜夜爽国产伦精品 | 日韩99热| 欧美日韩在线电影 | 狠狠色网 | 久久涩涩网站 | 97超碰香蕉 | 国产精品九九热 | 亚洲精品国产欧美在线观看 | 日韩视频三区 | 欧美激情在线看 | 欧美,日韩| 色婷婷激情电影 | 国产亚洲精品成人 | 狠狠操夜夜 | 久精品在线观看 | 久久综合九色欧美综合狠狠 | 亚洲精品影视 | 黄色avwww| 亚洲国产电影在线观看 | 国产精品美女www爽爽爽视频 | 五月综合网站 | 欧美性久久久 | 国产精品免费不卡 | 99在线播放 | 超碰资源在线 | 久久免费视频这里只有精品 | 在线观看中文字幕dvd播放 | 久久久国产电影 | 久久精品国产v日韩v亚洲 | 99在线免费视频 | 视频一区二区在线观看 | 在线观看mv的中文字幕网站 | 91精品视频免费看 | 精品国内自产拍在线观看视频 | 欧美国产日韩一区二区三区 | 免费观看丰满少妇做爰 | 69国产盗摄一区二区三区五区 | 日韩精品一区二区三区丰满 | 国产999在线观看 | 在线观看中文字幕亚洲 | 99色视频在线 | 国产精品久久久久久爽爽爽 | 国精产品一二三线999 | 色全色在线资源网 | 特级毛片网 | 精品麻豆入口免费 | 亚洲 av网站 | 超碰在线官网 | 在线影视 一区 二区 三区 | 亚洲免费国产视频 | 久久久久免费 | 亚洲精品欧洲精品 | 久久久久 免费视频 | 色5月婷婷| 最近免费中文字幕 | 亚洲专区欧美专区 | 久久人人爽人人爽 | 色av男人的天堂免费在线 | 久久成年人视频 | 亚洲91视频 | 六月丁香在线视频 | 色网站免费在线观看 | 久久综合干 | 久久综合毛片 | 中文字幕丝袜美腿 | 久久成人免费电影 | 亚洲一区二区三区在线看 | 日韩最新理论电影 | 日韩欧美视频免费在线观看 | 婷久久| 欧美孕妇与黑人孕交 | 91伊人影院| 中文字幕av最新 | 国产中出在线观看 | 九九视频这里只有精品 | 亚洲高清不卡av | 在线黄网站 | 成人综合婷婷国产精品久久免费 | 国产高清在线免费视频 | 日韩高清不卡一区二区三区 | 国产一级性生活视频 | 黄色www在线观看 | 成人午夜性影院 | 亚洲精品av中文字幕在线在线 | 在线播放精品一区二区三区 | 日日夜夜精品免费观看 | 久久理论电影网 | 欧美一区二区伦理片 | www.亚洲黄色| 日韩精品一区二区三区免费观看视频 | 四虎在线免费观看 | 超碰在97 | 人人澡人人模 | 国产成人三级在线观看 | 久久久黄视频 | 福利视频一区二区 | 久久99亚洲精品 | 中文字幕免费成人 | 久久久国产精品一区二区中文 | 亚洲国产合集 | 国产精品理论片在线观看 | 西西人体4444www高清视频 | 亚洲免费av电影 | 91中文字幕 | 亚洲电影图片小说 | 国产在线观看h | 国产精品免费成人 | 99精品视频在线播放观看 | 特级毛片在线观看 | 日本丶国产丶欧美色综合 | 精品国产亚洲在线 | 中文字幕在线高清 | 国产涩涩在线观看 | 在线午夜 | 日日夜夜操操操操 | 人人澡澡人人 | 国产探花 | 国内外成人免费在线视频 | 国产视频导航 | 麻豆视频在线免费看 | 狠狠色丁香婷婷综合基地 | 久久久久久美女 | 欧美成人69av | 国产精品美女久久久久久免费 | 日本成址在线观看 | 特级片免费看 | 国内精品久久久久久久久久 | 久热av| 天天操天天干天天干 | 五月天婷婷在线视频 | 日韩在线观看网址 | 伊人天堂久久 | 午夜影院在线观看18 | 五月婷在线观看 | 最新av中文字幕 | 久久96 | 丰满少妇高潮在线观看 | 亚洲在线视频播放 | 日韩精品免费在线观看 |