亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? iso8583.cpp

?? ISO 8583 implementation.
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	{	
	// Length de campo especifico
	return(wField >= 1 && wField <= CISOFIELDS)
		? fdFields[wField-1].wLength
		: 0;
	}

// Tipo de Campo en el Mensaje
 WORD ISO8583MSG::FieldType(WORD wField)  // Type
	{	
	// Type de campo especifico
	return(wField >= 1 && wField <= CISOFIELDS)
		? fdFields[wField-1].wType
		: (WORD)(-1);
	}

// Longitud de Mensaje
 WORD ISO8583MSG::MessageLength(void) 
	{		
	return (cbMsgLen);
	}

// Descripcion de Campos, tomada desde un archivo de parametrizacion
// externo opcional. Por omision se asume la tabla de inicializacion
// descripta en ISO8583MSG::DefaultFieldDescriptions()
 BOOL ISO8583MSG::GetFieldsDescription(PSTR szFldDescFile)
	{
	// Campos temporales de conversion
	int  iFldType   = 0,
		 iFldOffset = 0,
		 iFldLength = 0,
		 iIndex     = 0,
		 iCount     = 0,
		 iFldCount	= 0;
	FILE *pfStream	= NULL;
	// Rango ISO de posicion de campo, 1..128 en vez de 0..127
	BOOL bIs_ISO_Range = FALSE;	
	// Campos de conversion ASCII-binario
	char	szIndex[128]     = {0},
			szFldType[128]   = {0},
			szFldOffset[128] = {0},
			szFldLength[128] = {0},
			szBuffer[128]    = {0};

	// Abrir flujo de entrada
	pfStream = fopen(szFldDescFile, "rt");
	if(NULL == pfStream)
		return (FALSE);

	// Reset de Descripcion de Campos
	for(iIndex=0; iIndex < CISOFIELDS; iIndex++)		
		fdFields[iIndex].Reset();	

	// Mientras haya datos... leerlos y cargarlos (siempre habra 4 por linea)
	while( fgets( szBuffer, sizeof szBuffer, pfStream ) ) 
		{
			// Escaneo de parametros (siempre habra 4 por linea)
			iCount = sscanf( szBuffer, "%s %s %s %s", szIndex, szFldType, szFldOffset, szFldLength);
			// Verificar parametros (siempre habra 4 por linea)
			if(iCount == EOF || iCount != 4)
				continue;
			// Suma contador
			iFldCount++;
			// Convierte asignaciones
			iIndex     = atoi(szIndex);
			iFldType   = atoi(szFldType);
			iFldOffset = atoi(szFldOffset);
			iFldLength = atoi(szFldLength);
			// De posicion indice 0..127, no ISO 1..128
			if(iIndex == 0 && bIs_ISO_Range == FALSE && iFldCount == 1)
				bIs_ISO_Range = FALSE; // Basado en campo 0..127, no en campo 1..128
			else if(iIndex == 1 && bIs_ISO_Range == FALSE && iFldCount == 1)
				{
				bIs_ISO_Range = TRUE; // Basado en campo 1..128, no en campo 0..127
				iIndex--; // Ajustar ISO 1..128 a formato interno de indice 0..127
				}
			// De posicion ISO 1..128 a indice 0..127
			else if( iIndex >= 1 && iIndex <= CISOFIELDS && bIs_ISO_Range == TRUE  )
				iIndex--; // Ajustar ISO 1..128 a formato interno de indice 0..127

			// Son valores validos?
			if(
			   ((iFldType == (WORD)(-1)) ||       // Reservado,
			    ((iFldType >= FIELD_TYPE_FIX &&   // De Longitud Fija o
		         iFldType <= FIELD_TYPE_VAR_MAX)) // Variable?
			   ) 
			   && 
			   (iFldLength >= 0 && iFldLength <= CISOMESSAGESIZE) // Longitud?
			   && 
			   (iFldOffset >= 0 && iFldOffset <= CISOMESSAGESIZE) ) // Desplazamiento?
			  {
				// Copia de valores (Type,Offset,Length)
				fdFields[iIndex].wType   = iFldType;
				fdFields[iIndex].wOffset = iFldOffset;
				fdFields[iIndex].wLength = iFldLength;
			  	// Backup de Descriptor de Campo
				fdFieldsBkp[iIndex] = fdFields[iIndex];
			  }			  
			else
			{
				// Cierre del flujo
				fclose(pfStream);
				pfStream = NULL;		
				// Error
				return (FALSE);
			};//end-if
		};//while
	// Cierre del flujo
	fclose(pfStream);
	pfStream = NULL;		
	// Retorno Ok
	return (TRUE);	
	}

// Recalculo de Offset segun BitMaps actuales
 BOOL ISO8583MSG::RecalculateOffsets(void)
	{
	// Precondicion: Mensaje presente
	if(!cbMsgLen)
		return (FALSE);

	// Precondicion: Header valido
	if( !IsValidHeader() ) 
		return (FALSE);

	// Desplazamiento de campos desde el inicio del mensaje
	int  iOffset  = 32; // ISO-Fix-Header-Size
	// Longitud de Campo temporal
	WORD wFldLen  = 0;

	// Segun la descripcion inicial de Campos evaluada,
	// recalcular los Offsets de los campos variables,
	// si los hubiere segun el BitMap... segun los descriptores
	// originales...
	for(WORD iIndex=0; iIndex < CISOFIELDS; iIndex++)
		{

		  // Restore de Descriptor original
		  fdFields[iIndex] = fdFieldsBkp[iIndex];

		  // Esta activo el campo? (ISO 1-128)
		  if(IsValidField(iIndex+1))
			{
			// Es campo de Longitud Fija?
			if((fdFields[iIndex].wType == FIELD_TYPE_FIX) &&
			   (fdFields[iIndex].wOffset != 0) &&
			   (fdFields[iIndex].wLength != 0))
				{
				// Se establece el Offset dinamico...
				fdFields[iIndex].wOffset = iOffset;
				// ...y se lo recalcula en base al Length
				iOffset += fdFields[iIndex].wLength;				
				}
			// Es campo de Longitud Variable?
			else if((fdFields[iIndex].wType >= FIELD_TYPE_VAR_MIN)   &&
					(fdFields[iIndex].wType <= FIELD_TYPE_VAR_MAX)   &&				    
			        (fdFields[iIndex].wLength != 0))
				{
				// Se establece el Offset dinamico...
				fdFields[iIndex].wOffset = iOffset;

				// ... y se lo recalcula segun la Longitud Implicita
				// ... mas el Tipo de Campo Variable {1,2,3} (digitos implicitos)
				// (Field ISO 1..128, Index 0..127)
				if(!GetImplicitLength(iIndex+1, &wFldLen)) 
				{
					/////////////////////////////////////////
					// Precondicion: Verificacion habilitada?
					if(!bCheckMessage) 
						return (TRUE);
					/////////////////////////////////////////
					return (FALSE);
				};

				// Longitud implicita
				fdFields[iIndex].wLength = wFldLen + fdFields[iIndex].wType;
				// ...y se recalcula el Offset, Longitud mas los digitos implicitos:
				iOffset += wFldLen + fdFields[iIndex].wType;
				
				}
			// (Type!={0,1,2,3})&&(Offset=Length=0) no considerados
			}//if
		}//for

	// 2001-06-23-mdc. Postcondicion: Offset valido?
	return (iOffset < CISOMESSAGESIZE) 
		? TRUE 
		: FALSE;	

	// Postcondicion: Offset valido?
	return (iOffset < CISOMESSAGESIZE && iOffset < cbMsgLen) 
		? TRUE 
		: FALSE;	
	}

// Offsets & Lengths por default.
// Esta tabla de inicializacion de campos ISO-8583 de B24-HISO Release 4
// fue obtenida haciendo el siguiente comando en el BIND, en Tandem,
// "DUMP DATA BIT^MAP^TABLE^G 0,1001 DECIMAL FROM ATHISOO"
//
// TYPE especifica Longitud de Campo: {0=Fijo, 1,2,3,4=Variable} con 1,2,3,4 digitos
//	 implicitos: esto es, tomando los bytes y convertiendolos a entero.
// OFFSET especifica el desplazamiento desde el inicio del buffer. 
//   Se acumulan los desplazamientos anteriores y se suma la longitud.
// LENGTH especifica la longitud maxima admitida. 
 BOOL ISO8583MSG::DefaultFieldsDescriptions(void)
	{	
	// Recordar que los equivalentes campos ISO-8583 son de 1 a 128
	// Originales:
	// Campo Numero  ( Type, Offset, Length )	
	fdFieldsBkp[0].Set( 0, 32, 16 );
	fdFieldsBkp[1].Set( 2, 48, 21 );
	fdFieldsBkp[2].Set( 0, 69, 6 ); 
	fdFieldsBkp[3].Set( 0, 75, 12 );
	fdFieldsBkp[4].Set( 0, 87, 12 ); 
	fdFieldsBkp[5].Set( 0, 99, 12 );
	fdFieldsBkp[6].Set( 0, 111, 10 ); 
	fdFieldsBkp[7].Set( 0, 121, 8 );
	fdFieldsBkp[8].Set( 0, 129, 8 ); 
	fdFieldsBkp[9].Set( 0, 137, 8 );
	fdFieldsBkp[10].Set( 0, 145, 6 ); 
	fdFieldsBkp[11].Set( 0, 151, 6 );
	fdFieldsBkp[12].Set( 0, 157, 4 ); 
	fdFieldsBkp[13].Set( 0, 161, 4 );
	fdFieldsBkp[14].Set( 0, 165, 4 ); 
	fdFieldsBkp[15].Set( 0, 169, 4 );
	fdFieldsBkp[16].Set( 0, 173, 4 ); 
	fdFieldsBkp[17].Set( 0, 177, 4 );
	fdFieldsBkp[18].Set( 0, 181, 3 ); 
	fdFieldsBkp[19].Set( 0, 184, 3 );
	fdFieldsBkp[20].Set( 0, 187, 3 ); 
	fdFieldsBkp[21].Set( 0, 190, 3 );
	fdFieldsBkp[22].Set( 0, 193, 3 ); 
	fdFieldsBkp[23].Set( 0, 196, 3 );
	fdFieldsBkp[24].Set( 0, 199, 2 ); 
	fdFieldsBkp[25].Set( 0, 201, 2 );
	fdFieldsBkp[26].Set( 0, 203, 1 ); 
	fdFieldsBkp[27].Set( 0, 204, 9 );
	fdFieldsBkp[28].Set( 0, 213, 9 ); 
	fdFieldsBkp[29].Set( 0, 222, 9 );
	fdFieldsBkp[30].Set( 0, 231, 9 ); 
	fdFieldsBkp[31].Set( 2, 240, 13 );
	fdFieldsBkp[32].Set( 2, 253, 13 ); 
	fdFieldsBkp[33].Set( 2, 266, 30 );
	fdFieldsBkp[34].Set( 2, 296, 39 ); 
	fdFieldsBkp[35].Set( 3, 335, 107 );
	fdFieldsBkp[36].Set( 0, 442, 12 ); 
	fdFieldsBkp[37].Set( 0, 454, 6 );
	fdFieldsBkp[38].Set( 0, 460, 2 ); 
	fdFieldsBkp[39].Set( 0, 462, 3 );
	fdFieldsBkp[40].Set( 0, 465, 16 ); 
	fdFieldsBkp[41].Set( 0, 481, 15 );
	fdFieldsBkp[42].Set( 0, 496, 40 ); 
	fdFieldsBkp[43].Set( 2, 536, 27 );
	fdFieldsBkp[44].Set( 2, 563, 78 ); 
	fdFieldsBkp[45].Set( 3, 641, 103 );
	fdFieldsBkp[46].Set( 3, 744, 103 ); 
	fdFieldsBkp[47].Set( 3, 847, 103 );
	fdFieldsBkp[48].Set( 0, 950, 3 ); 
	fdFieldsBkp[49].Set( 0, 953, 3 );
	fdFieldsBkp[50].Set( 0, 956, 3 ); 
	fdFieldsBkp[51].Set( 0, 959, 16 );
	fdFieldsBkp[52].Set( 0, 975, 16 ); 
	fdFieldsBkp[53].Set( 3, 991, 123 );
	fdFieldsBkp[54].Set( 3, 1114, 363 ); 
#if defined( _SYSTEM_H24_ ) 
	fdFieldsBkp[55].Set( 4, 1477, 103 ); // Campo especialmente ampliado para H24
#elif  defined( _SYSTEM_SOAT_ ) || defined( _SYSTEM_BASE_ )
	fdFieldsBkp[55].Set( 3, 1477, 103 );
#elif  defined( _SYSTEM_ATM_ )
	fdFieldsBkp[55].Set( 3, 1477, 103 );
#else
#error "Sin definir el Sistema bajo el cual se adapta la clase ISO8583"
#endif
	fdFieldsBkp[56].Set( 3, 1580, 103 ); 
	fdFieldsBkp[57].Set( 3, 1683, 103 );
	fdFieldsBkp[58].Set( 3, 1786, 103 ); 
	fdFieldsBkp[59].Set( 3, 1889, 103 );
	fdFieldsBkp[60].Set( 3, 1992, 103 ); 
	fdFieldsBkp[61].Set( 3, 2095, 103 );
	fdFieldsBkp[62].Set( 3, 2198, 600 ); 
	fdFieldsBkp[63].Set( 0, 2798, 16 );
	fdFieldsBkp[64].Set( 65535, 0, 0 ); // Campo reservado en el estandard ISO
	fdFieldsBkp[65].Set( 0, 2814, 1 );
	fdFieldsBkp[66].Set( 0, 2815, 2 ); 
	fdFieldsBkp[67].Set( 0, 2817, 3 );
	fdFieldsBkp[68].Set( 0, 2820, 3 ); 
	fdFieldsBkp[69].Set( 0, 2823, 3 );
	fdFieldsBkp[70].Set( 0, 2826, 4 ); 
	fdFieldsBkp[71].Set( 0, 2830, 4 );
	fdFieldsBkp[72].Set( 0, 2834, 6 ); 
	fdFieldsBkp[73].Set( 0, 2840, 10 );
	fdFieldsBkp[74].Set( 0, 2850, 10 ); 
	fdFieldsBkp[75].Set( 0, 2860, 10 );
	fdFieldsBkp[76].Set( 0, 2870, 10 ); 
	fdFieldsBkp[77].Set( 0, 2880, 10 );
	fdFieldsBkp[78].Set( 0, 2890, 10 ); 
	fdFieldsBkp[79].Set( 0, 2900, 10 );
	fdFieldsBkp[80].Set( 0, 2910, 10 ); 
	fdFieldsBkp[81].Set( 0, 2920, 12 );
	fdFieldsBkp[82].Set( 0, 2932, 12 ); 
	fdFieldsBkp[83].Set( 0, 2944, 12 );
	fdFieldsBkp[84].Set( 0, 2956, 12 ); 
	fdFieldsBkp[85].Set( 0, 2968, 16 );
	fdFieldsBkp[86].Set( 0, 2984, 16 ); 
	fdFieldsBkp[87].Set( 0, 3000, 16 );
	fdFieldsBkp[88].Set( 0, 3016, 16 ); 
	fdFieldsBkp[89].Set( 0, 3032, 42 );
	fdFieldsBkp[90].Set( 0, 3074, 1 ); 
	fdFieldsBkp[91].Set( 0, 3075, 2 );
	fdFieldsBkp[92].Set( 0, 3077, 5 ); 
	fdFieldsBkp[93].Set( 0, 3082, 7 );
	fdFieldsBkp[94].Set( 0, 3089, 42 ); 
	fdFieldsBkp[95].Set( 0, 3131, 16 );
	fdFieldsBkp[96].Set( 0, 3147, 17 ); 
	fdFieldsBkp[97].Set( 0, 3164, 25 );
	fdFieldsBkp[98].Set( 2, 3189, 13 ); 
	fdFieldsBkp[99].Set( 2, 3202, 13 );
	fdFieldsBkp[100].Set( 2, 3215, 19 ); 
	fdFieldsBkp[101].Set( 2, 3234, 30 );
	fdFieldsBkp[102].Set( 2, 3264, 30 ); 
	fdFieldsBkp[103].Set( 3, 3294, 103 );
	fdFieldsBkp[104].Set( 3, 3397, 103 ); 
	fdFieldsBkp[105].Set( 3, 3500, 103 );
	fdFieldsBkp[106].Set( 3, 3603, 103 ); 
	fdFieldsBkp[107].Set( 3, 3706, 103 );
	fdFieldsBkp[108].Set( 3, 3809, 103 ); 
	fdFieldsBkp[109].Set( 3, 3912, 103 );
	fdFieldsBkp[110].Set( 3, 4015, 103 ); 
	fdFieldsBkp[111].Set( 3, 4118, 203 );
	fdFieldsBkp[112].Set( 3, 4321, 103 );
	fdFieldsBkp[113].Set( 3, 4424, 103 );
	fdFieldsBkp[114].Set( 3, 4527, 103 );
	fdFieldsBkp[115].Set( 3, 4630, 103 );
	fdFieldsBkp[116].Set( 3, 4733, 103 );
	fdFieldsBkp[117].Set( 3, 4836, 103 );
	fdFieldsBkp[118].Set( 3, 4939, 103 );
	fdFieldsBkp[119].Set( 3, 5042, 153 );
	fdFieldsBkp[120].Set( 3, 5195, 153 ); 
	fdFieldsBkp[121].Set( 3, 5348, 153 );
	fdFieldsBkp[122].Set( 3, 5501, 458 ); 
	fdFieldsBkp[123].Set( 3, 5959, 687 );
	fdFieldsBkp[124].Set( 3, 6646, 683 ); 
#if defined ( _SYSTEM_BASE_ ) || defined ( _SYSTEM_ATM_ )
	fdFieldsBkp[125].Set( 3, 7329, 683 );
	fdFieldsBkp[126].Set( 3, 8012, 203 ); 
	fdFieldsBkp[127].Set( 0, 8215, 16 );
#elif defined( _SYSTEM_SOAT_ )
	fdFieldsBkp[125].Set( 4, 7329,1500 ); // Campo especialmente ampliado para SOAT
	fdFieldsBkp[126].Set( 3, 8829, 203 ); 
	fdFieldsBkp[127].Set( 0, 9032, 16 );
#else
#error "Sin definir el Sistema bajo el cual se adapta la clase ISO8583"
#endif // _SOAT_SYSTEM_
	// Siempre OK
	return (TRUE);
	}

// TypeId de Msg
 BOOL ISO8583MSG::GetMsgTypeId(PBYTE lpszValue,WORD wValueLen)
	{
	// Precondicion: Mensaje presente
	if(!cbMsgLen)
		return (FALSE);

	// Precondicion: ISO-Header OK
	if(!IsValidHeader())
		return (FALSE);

	// Precondicion: Longitud suficiente: Son 4 de codigo mas 1 de NULL
	if( wValueLen < 5 )
		return (FALSE);

	// Message-Type-Identifier [12..15=4]
	memmove((PBYTE)lpszValue, (PBYTE)&chMsg[12], 4);	
	// Null-terminated array of bytes
	memset((PBYTE)lpszValue+4,0,1);

	// Ok
	return (TRUE);
	}

// Establecer TypeId de Msg
 BOOL ISO8583MSG::SetMsgTypeId

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区三区| 日本道精品一区二区三区| 国产精品毛片大码女人| 欧美日韩免费观看一区三区| 国产在线精品一区二区三区不卡| 亚洲另类在线视频| 精品国产精品一区二区夜夜嗨| 99久久婷婷国产综合精品| 丝袜美腿亚洲综合| 亚洲日本在线天堂| 日本一区二区不卡视频| 日韩欧美在线1卡| 欧美日韩一区不卡| 成人激情免费网站| 精品亚洲欧美一区| 天堂成人国产精品一区| 尤物在线观看一区| 中文字幕第一区二区| 欧美精品一区二区三区蜜桃| 欧美美女激情18p| 99re这里只有精品视频首页| 国产精品资源在线观看| 蜜臀av一区二区在线免费观看| 亚洲第一激情av| 一区二区高清视频在线观看| 国产精品网站在线| 久久伊人蜜桃av一区二区| 69堂国产成人免费视频| 欧美综合亚洲图片综合区| 色婷婷综合久久久久中文一区二区 | 成人激情免费网站| 久久亚洲欧美国产精品乐播 | 亚洲国产成人午夜在线一区| 狠狠色丁香婷综合久久| 国产亚洲女人久久久久毛片| 欧美亚洲动漫精品| 国产精品视频九色porn| 日韩午夜av一区| 亚洲一区中文日韩| 国产精品久久久久天堂| 久久精品免费在线观看| 久久综合久久综合亚洲| 26uuu亚洲| 国产视频911| 欧美xxxxxxxxx| 欧美国产一区在线| ...av二区三区久久精品| 亚洲欧美怡红院| 亚洲摸摸操操av| 亚洲高清中文字幕| 蜜臀国产一区二区三区在线播放| 久久国产福利国产秒拍| 国产精品 欧美精品| 99视频精品在线| 欧洲视频一区二区| 91精品免费观看| 婷婷综合五月天| 轻轻草成人在线| 国产不卡免费视频| 色哟哟在线观看一区二区三区| 欧美影院一区二区三区| 日韩免费高清av| 中文在线资源观看网站视频免费不卡 | 91小视频免费观看| 91成人国产精品| 欧美一区二区久久久| 欧美精品一区二区精品网| 久久先锋资源网| 亚洲天堂久久久久久久| 三级久久三级久久| 成人在线视频一区二区| 色欧美乱欧美15图片| 欧美一级二级在线观看| 国产精品久久久久桃色tv| 亚洲成av人片一区二区| 国产一区二区三区美女| 91丝袜高跟美女视频| 欧美一级欧美一级在线播放| 国产精品网友自拍| 肉色丝袜一区二区| 丁香六月久久综合狠狠色| 欧美日韩午夜影院| 国产性天天综合网| 午夜精品久久久久久| 国产高清久久久| 欧美乱熟臀69xxxxxx| 国产日韩欧美亚洲| 丝袜脚交一区二区| 成人av网站免费观看| 91精品国产91久久久久久一区二区| 久久先锋影音av| 午夜精品久久久久久久| 成人黄色777网| 精品少妇一区二区三区视频免付费| 亚洲少妇30p| 国产一区欧美日韩| 欧美精品乱人伦久久久久久| 国产精品美女久久久久久久 | 青青草成人在线观看| av一区二区三区在线| 日韩美女视频一区二区在线观看| 国产精品国产自产拍高清av王其 | 国产一区视频在线看| 欧美狂野另类xxxxoooo| 中文字幕一区二区三区蜜月| 美女一区二区视频| 欧美三级中文字幕| 国产精品国产三级国产a| 久久9热精品视频| 91.麻豆视频| 一区二区三区欧美久久| 成人美女视频在线看| 欧美r级在线观看| 日韩成人免费电影| 欧美日韩黄色影视| 亚洲精品伦理在线| 99久久久精品| 国产精品灌醉下药二区| 东方aⅴ免费观看久久av| 精品国内二区三区| 免费一级欧美片在线观看| 欧美性生活一区| 亚洲猫色日本管| 91麻豆123| 一区二区成人在线| 欧洲av在线精品| 亚洲精品菠萝久久久久久久| av在线不卡免费看| 综合久久给合久久狠狠狠97色 | 看片的网站亚洲| 日韩一区二区三区视频在线观看| 午夜久久久影院| 欧美巨大另类极品videosbest| 亚洲国产中文字幕在线视频综合 | 99精品黄色片免费大全| 中文字幕一区av| 91网上在线视频| 亚洲激情成人在线| 91福利国产成人精品照片| 一区二区理论电影在线观看| 欧美综合视频在线观看| 偷拍日韩校园综合在线| 欧美一卡二卡三卡| 狠狠色丁香久久婷婷综合丁香| 欧美成人免费网站| 精品一区二区三区香蕉蜜桃| 亚洲精品在线三区| 成人综合婷婷国产精品久久免费| 中文一区二区在线观看| 99国内精品久久| 亚洲va在线va天堂| 日韩一级完整毛片| 国产一区 二区| 国产精品精品国产色婷婷| 91蜜桃免费观看视频| 亚洲综合色丁香婷婷六月图片| 欧美在线视频不卡| 日本网站在线观看一区二区三区| 日韩欧美高清在线| 成人亚洲一区二区一| 亚洲精品免费在线播放| 欧美日韩亚洲高清一区二区| 精品在线观看视频| 亚洲国产精品成人综合色在线婷婷| 色综合天天综合| 日韩1区2区3区| 国产视频一区在线播放| 欧美亚洲高清一区二区三区不卡| 奇米综合一区二区三区精品视频| 精品久久久久久久人人人人传媒| 成人自拍视频在线| 亚洲一区二区3| 精品人在线二区三区| 成人av第一页| 免费久久精品视频| 国产精品进线69影院| 欧美一二三四区在线| 成人h精品动漫一区二区三区| 亚洲午夜成aⅴ人片| 久久婷婷国产综合国色天香| 91香蕉视频污| 久久99最新地址| 亚洲最新视频在线播放| 337p粉嫩大胆色噜噜噜噜亚洲 | 在线免费观看视频一区| 国产又粗又猛又爽又黄91精品| 亚洲伦理在线免费看| 日韩欧美一二三四区| 色综合久久88色综合天天6| 精品亚洲成av人在线观看| 亚洲靠逼com| 久久婷婷国产综合国色天香 | 欧美日本在线视频| 成人免费毛片片v| 日韩**一区毛片| 亚洲午夜久久久久久久久电影网 | 国产免费观看久久| 欧美一区二区三区白人| 日本高清不卡aⅴ免费网站| 国产永久精品大片wwwapp|