wangguolei

更新baidu人脸识别

Showing 239 changed files with 545 additions and 19 deletions
//
// BDFaceAdjustParamsCell.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import "BDFaceAdjustParamsRootCell.h"
#import "BDFaceAdjustParamsItem.h"
NS_ASSUME_NONNULL_BEGIN
typedef void(^BDFaceAdjustParamsCellDidChangedValue)(BDFaceAdjustParamsItemType, float);
@interface BDFaceAdjustParamsCell : BDFaceAdjustParamsRootCell
@property(nonatomic, copy) BDFaceAdjustParamsCellDidChangedValue didFinishAdjustParams;
@property(nonatomic, assign) BOOL isSameConfig;
@end
NS_ASSUME_NONNULL_END
... ...
... ... @@ -73,6 +73,8 @@ extern NSString *const BDFaceAdjustParamsControllerConfigIsSameKey;
extern UInt32 const BDFaceAdjustParamsRecoverActiveTextColor;
extern UInt32 const BDFaceAdjustParamsRecoverUnactiveTextColor;
extern NSString *const BDFaceAdjustParamsRecoverActiveTextColorNew;
extern NSString *const BDFaceAdjustParamsRecoverUnactiveTextColorNew;
/**
@class: BDFaceAdjustParamsConstants
... ...
//
// BDFaceAdjustParamsController.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import "BDFaceAdjustParamsRootController.h"
#import "BDFaceAdjustParamsConstants.h"
@class BDFaceAdjustParams;
NS_ASSUME_NONNULL_BEGIN
/**
@class: BDFaceAdjustParamsController
@description 调节参数页面
*/
@interface BDFaceAdjustParamsController : BDFaceAdjustParamsRootController
- (instancetype)initWithConfig:(BDFaceAdjustParams *)config;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceAdjustParamsFileManager.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BDFaceAdjustParamsConstants.h"
@class BDFaceAdjustParams;
NS_ASSUME_NONNULL_BEGIN
/**
@class: BDFaceAdjustParamsFileManager
@description数据管理类
*/
@interface BDFaceAdjustParamsFileManager : NSObject
@property(nonatomic, strong, readonly) BDFaceAdjustParams *normalConfig; /**<正常参数配置*/
@property(nonatomic, strong, readonly) BDFaceAdjustParams *looseConfig; /**<宽松参数配置*/
@property(nonatomic, strong, readonly) BDFaceAdjustParams *strictConfig; /**<严格参数配置*/
@property(nonatomic, strong, readonly) BDFaceAdjustParams *customConfig; /**<自定义配置*/
@property(nonatomic, assign) BDFaceSelectType selectType;
+ (instancetype)sharedInstance;
/// 读取自定义配置
- (BDFaceAdjustParams *)readCustomCongfig;
/// 储存自定义配置
- (void)saveToCustomConfigFile:(BDFaceAdjustParams *)config;
/// 读取缓存的选择
+ (BDFaceSelectType)readCacheSelect;
/// 保存用户的选择
- (void)saveUserSelection:(BDFaceSelectType)select;
/// 跟进select 选择config
- (BDFaceAdjustParams *)configBySelection:(BDFaceSelectType)type;
+ (NSString *)currentSelectionText;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceAdjustParamsItem.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/3.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, BDFaceAdjustParamsContentType) {
BDFaceAdjustParamsContentTypeNormal = 0, // 可以修改的值
BDFaceAdjustParamsContentTypeRecoverToNormal = 1 // 恢复默认一栏
};
typedef NS_ENUM(NSUInteger, BDFaceAdjustParamsItemType) {
BDFaceAdjustParamsTypeMinLightIntensity = 1, /**<最小光照值 */
BDFaceAdjustParamsTypeMaxLightIntensity = 2,/**<最大光照值 */
BDFaceAdjustParamsTypeAmbiguity = 3,/**<模糊度 */
BDFaceAdjustParamsTypeLeftEyeOcclusion = 4,/**<左眼遮挡阈值 */
BDFaceAdjustParamsTypeRightEyeOcclusion = 5,/**< 右眼遮挡阈值 */
BDFaceAdjustParamsTypeNoseOcclusion = 6,/**<鼻子遮挡阈值 */
BDFaceAdjustParamsTypeMouthOcclusion = 7,/**<嘴巴遮挡阈值 */
BDFaceAdjustParamsTypeLeftFaceOcclusion = 8,/**<左脸遮挡阈值 */
BDFaceAdjustParamsTypeRightFaceOcclusion = 9,/**< 右脸遮挡阈值 */
BDFaceAdjustParamsTypeLowerJawOcclusion = 10,/**<下巴遮挡阈值 */
BDFaceAdjustParamsTypeUpAndDownAngle = 11,/**< 俯仰角 */
BDFaceAdjustParamsTypeLeftAndRightAngle = 12,/**< 左右角*/
BDFaceAdjustParamsTypeSpinAngle = 13/**<旋转角 */
};
@interface BDFaceAdjustParamsItem : NSObject
@property(nonatomic, copy) NSString *itemTitle;
@property(nonatomic, assign) float currentValue;
@property(nonatomic, assign) float maxValue;
@property(nonatomic, assign) float minValue;
@property(nonatomic, assign) float interval;
@property(nonatomic, assign) BDFaceAdjustParamsItemType configDetailType;
@property(nonatomic, assign) BDFaceAdjustParamsContentType contentType; /**<Item内容类型,0为默认,可以调的参数,1为恢复默认*/
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceAdjustParamsModel.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/3.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BDFaceAdjustParams.h"
#import "BDFaceAdjustParamsConstants.h"
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceAdjustParamsModel : NSObject
/// 加载数据
+ (NSMutableArray *)loadItemsArray:(BDFaceAdjustParams *)config
recorverText:(NSString *)text
selectType:(BDFaceSelectType)type;
/// 根据类型,获取字符串
+ (NSString *)getSelectTypeString:(BDFaceSelectType)type;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceAdjustParamsRootCell.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceAdjustParamsRootCell : UITableViewCell
@property(nonatomic, strong) NSObject *data;
@property(nonatomic, copy) NSIndexPath *indexPath;
// 设置cell 视图,这里data已不为空,可以使用,必须重写
- (void)cellFinishLoad:(NSInteger)rowsInSection;
+ (CGFloat)HeightOfFaceAdjustCell;
// 分割线颜色
+ (UIColor *)seperatorColor;
/// layoutsubview 方法中才能使用
- (void)setConerRadius:(float)cornerRadius
borderWidth:(CGFloat)borderWidth
borderColor:(nullable CGColorRef)borderColor;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceAdjustParamsRootController.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
/**
@class: BDFaceAdjustParamsRootController
@description UITableViewDelegate协议方法需要子类实现,dataSource不需要子类实现
*/
@interface BDFaceAdjustParamsRootController : UIViewController <UITableViewDelegate>
@property(nonatomic, strong, readonly) UILabel *titleLabel;
@property(nonatomic, strong) UITableView *tableView;
@property(nonatomic, strong) UIView *titleView;
#pragma mark 需要在子类ViewDidLoad里调用该方法
- (void)loadTableWithCellClass:(Class)cellClass
reuseLabel:(NSString *)reuseLabel
dataSourceArray:(NSMutableArray *)array;
// controller 设置cell内容,第一次加载完成
- (void)updateCellContent:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath;
/// 定义表格样式,默认plain,子类可以覆盖
- (UITableViewStyle)customTableViewStyle;
/// 返回操作,子类需要覆盖
- (void)goBack;
@end
NS_ASSUME_NONNULL_END
... ...
... ... @@ -14,6 +14,9 @@ NS_ASSUME_NONNULL_BEGIN
@interface BDFaceAdjustParamsTool : NSObject
/// 设置默认config
+ (void)setDefaultConfig;
/// 改变config配置
+ (void)changeConfig:(BDFaceAdjustParams *)params;
... ...
//
// BDFaceAgreementViewController.h
// IDLFaceSDKDemoOC
// FaceSDKSample_IOS
//
// Created by 孙明喆 on 2020/3/12.
// Copyright © 2020 Baidu. All rights reserved.
... ...
//
// BDFaceAlertViewController.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/7.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
/**
@class:BDFaceAlertController
@description: 自定义AlertController,实现了右边是Bold字体的样式。
*/
@interface BDFaceAlertController : UIAlertController
- (void)changeTextToBold:(NSString *)string;
- (void)changeTextToLight:(NSArray *)array;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDSettingViewController.h
// IDLFaceSDKDemoOC
// BDFaceInterfaceSelectViewController.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2021/6/2.
// Created by 之哥 on 2021/8/19.
// Copyright © 2021 Baidu. All rights reserved.
//
... ... @@ -10,8 +10,9 @@
NS_ASSUME_NONNULL_BEGIN
@interface BDSettingViewController : UIViewController
@interface BDFaceInterfaceSelectViewController : UIViewController
@property (nonatomic ,assign)NSInteger selectType;
@end
... ...
//
// CDFaceLiveItemDetailsViewController.h
// FaceSDKSample_IOS
//
// Created by 之哥 on 2021/8/20.
// Copyright © 2021 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <BDFaceBaseKit/BDFaceBaseKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceLiveItemDetailsViewController : UIViewController
@property(nonatomic, assign) int livenessNum;
@property(nonatomic, assign) BDFaceLiveSelectType selectType; //方案类型
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceLiveSelectItemViewController.h
// FaceSDKSample_IOS
//
// Created by 之哥 on 2021/8/20.
// Copyright © 2021 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <BDFaceBaseKit/BDFaceBaseKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceLiveSelectItemViewController : UIViewController
@property(nonatomic, assign) int livenessNum; //动作列表内动作个数
@property(nonatomic, assign) BDFaceLiveSelectType selectType; //方案类型
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceLiveSelectViewController.h
// FaceSDKSample_IOS
//
// Created by 之哥 on 2021/8/19.
// Copyright © 2021 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceLiveSelectViewController : UIViewController
@property (nonatomic ,assign)NSInteger selectType;
@end
NS_ASSUME_NONNULL_END
... ...
//
// LivingConfigViewController.h
// FaceSDKSample_IOS
//
// Created by 阿凡树 on 2017/5/23.
// Copyright © 2017年 Baidu. All rights reserved.
//
// 此类为了方便选择活体检测命令选项
//
#import <UIKit/UIKit.h>
@interface BDFaceLivingConfigViewController : UIViewController
@end
... ...
//
// BDFaceSelectConfigCell.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import "BDFaceAdjustParamsRootCell.h"
#import "BDFaceSelectRadio.h"
#import "BDFaceSelectItem.h"
#import "BDFaceAdjustParams.h"
NS_ASSUME_NONNULL_BEGIN
typedef void(^BDFaceUserWillAdjustParams)(BDFaceSelectType);
extern float const BDFaceSelectConfigCellHeight;
@interface BDFaceSelectConfigCell : BDFaceAdjustParamsRootCell
@property(nonatomic, strong) BDFaceSelectRadio *radio;
@property(nonatomic, copy) BDFaceUserWillAdjustParams adjustConfigAction;
- (void)showSettingButton:(BOOL)show;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceSelectConfigController.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/1.
// Copyright © 2020 Baidu. All rights reserved.
//
#import "BDFaceAdjustParamsRootController.h"
#import "BDFaceAdjustParamsConstants.h"
NS_ASSUME_NONNULL_BEGIN
/**
@class: BDFaceSelectConfigController
@description 选择配置界面
*/
@interface BDFaceSelectConfigController : BDFaceAdjustParamsRootController
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceSelectConfigModel.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/7.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceSelectConfigModel : NSObject
+ (NSMutableArray *)loadItems;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceSelectItem.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/2.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BDFaceAdjustParams.h"
#import "BDFaceAdjustParamsConstants.h"
NS_ASSUME_NONNULL_BEGIN
@interface BDFaceSelectItem : NSObject
@property(nonatomic, copy) NSString *itemTitle;
@property(nonatomic, assign) BDFaceSelectType itemType;
@property(nonatomic, strong) BDFaceAdjustParams *adjustParams;
@end
NS_ASSUME_NONNULL_END
... ...
//
// BDFaceSelectRadio.h
// FaceSDKSample_IOS
//
// Created by Zhang,Jian(MBD) on 2020/12/2.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^BDFaceSelectRadioState)(NSInteger index, BOOL selected);
@interface BDFaceSelectRadio : UIButton
@property(nonatomic, copy) BDFaceSelectRadioState radioTaped;
/// 指定初始化方法
+ (instancetype)buttonWithType:(UIButtonType)buttonType selected:(BOOL)selected;
// 改变按钮状态
- (void)changeRadioState:(BOOL)state;
// 初始化按钮状态
- (void)initRadioState:(BOOL)state;
@end
NS_ASSUME_NONNULL_END
... ...
... ... @@ -14,7 +14,7 @@
// (您申请的应用名称(appname)+「-face-ios」后缀,如申请的应用名称(appname)为test123,则此处填写test123-face-ios)
// 在后台 -> 产品服务 -> 人脸识别 -> 客户端SDK管理查看,如果没有的话就新建一个
#define FACE_LICENSE_ID @"hhdoctor-face-ios"
#define FACE_LICENSE_ID @"hhdoctor1-face-ios"
// OCR license文件名
#define FACE_API_ORC_KEY @"aip"
... ...
... ... @@ -11,16 +11,16 @@
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, HHAuthStatus) {
HHAuthStatusSuccess,
HHAuthStatusIdentifyFail,
HHAuthStatusAuthenFail,
HHAuthStatusSuccess = 0,
HHAuthStatusIdentifyFail = 1,
HHAuthStatusAuthenFail = 2,
};
@interface HHDoctorFace : NSObject
@property (strong, nonatomic) BDFaceLogicService *logicService;
@property (copy, nonatomic) NSString *accessToken;
@property (strong, nonatomic) UIViewController *fromeVC;
@property (weak, nonatomic) UIViewController *fromeVC;
+ (instancetype)sharedInstance;
... ... @@ -28,6 +28,7 @@ typedef NS_ENUM(NSUInteger, HHAuthStatus) {
+ (void)startCheckFace: (UIViewController *)vc dict:(NSDictionary *)dict response:(void(^)(HHAuthStatus code, NSString *errorMsg))response;
+ (void)unInitSDK;
@end
NS_ASSUME_NONNULL_END
... ...
... ... @@ -11,23 +11,40 @@
#endif
#import "BDConfigFileParser.h"
#import "BDSettingViewController.h"
#import "BDConfigDataService.h"
#import "BDFaceAdjustParams.h"
#import "BDFaceAdjustParamsConstants.h"
#import "BDFaceAdjustParamsTool.h"
#import "FaceParameterConfig.h"
#import "BDFaceVideoCaptureDevice.h"
#import "Reachability.h"
#import "BDFaceSDKObjectChecker.h"
#import "BDUIConstant.h"
#import "VerifyRegexTool.h"
#import "BDFaceAdjustParamsController.h"
#import "BDFaceAdjustParamsRootController.h"
#import "BDFaceAlertController.h"
#import "BDFaceInterfaceSelectViewController.h"
#import "BDFaceLiveItemDetailsViewController.h"
#import "BDFaceLiveSelectItemViewController.h"
#import "BDFaceLiveSelectViewController.h"
#import "BDFaceSelectConfigController.h"
#import "BDFaceAdjustParamsTool.h"
#import "BDFaceAdjustParams.h"
#import "BDFaceAdjustParamsConstants.h"
#import "BDFaceAdjustParamsFileManager.h"
#import "BDFaceAdjustParamsItem.h"
#import "BDFaceAdjustParamsModel.h"
#import "BDFaceSelectConfigModel.h"
#import "BDFaceSelectItem.h"
#import "BDFaceAdjustParamsCell.h"
#import "BDFaceAdjustParamsRootCell.h"
#import "BDFaceSelectConfigCell.h"
#import "BDFaceSelectRadio.h"
#import "BDBaseCalculateTool.h"
#import "BDBaseToastView.h"
#import "BDFaceAlertView.h"
#import "UIColor+BDFaceColorUtils.h"
#import "UIViewController+BDPresentingAnimation.h"
#import "BDFaceAgreementViewController.h"
#import "BDFaceLivingConfigViewController.h"
#import "BDFacePoorNetworkController.h"
#import "BDFaceVerificationConstant.h"
#import "BDFaceVerificationController.h"
... ...
... ... @@ -42,8 +42,6 @@
*/
+ (BOOL)isVaildIDCardNo:(NSString *)idCardNo;
/**
判断输入框内的人名是否是有效的中文名
@param textField 文本输入框
... ... @@ -64,4 +62,28 @@
*/
+ (BOOL)isVaildRealName:(NSString *)realName;
/**
港澳居民来往内陆通行证号码验证
@param strName 验证的字符串
*/
+ (BOOL)isValidForGAT:(NSString *)strName;
/**
外国人永久居留证
@param strName 验证字符串
*/
+ (BOOL)isValidForForeignersPermit:(NSString *)strName;
/**
定居国外中国公民护照
@param strName 验证字符串
*/
+ (BOOL)isValidForCitizenPassport:(NSString *)strName;
/**
定居港澳居民身份
@param strName 验证字符串
*/
+ (BOOL)isValidForGATCard:(NSString *)strName;
@end
... ...
{"onlineImageQuality":"NORMAL","onlineLivenessQuality":"NORMAL","version":"3.0.0","solutionType":"2","planId":"13438","faceActionNum":2,"faceLivenessType":1,"faceVerifyAction":["mouth","eye"],"livenessThreshold":0.8,"collection":2,"policeCheck":0,"policeThreshold":80,"localImageQuality":{"loose":{},"normal":{"minIllum":40,"maxIllum":220,"leftEyeOcclusion":0.8,"rightEyeOcclusion":0.8,"noseOcclusion":0.8,"mouseOcclusion":0.8,"leftContourOcclusion":0.8,"rightContourOcclusion":0.8,"chinOcclusion":0.8,"pitch":20,"yaw":18,"roll":20,"blur":0.6},"strict":{}}}
{"onlineImageQuality":"NORMAL","onlineLivenessQuality":"NORMAL","version":"3.0.0","solutionType":"2","planId":"18602","faceActionNum":2,"faceLivenessType":1,"faceVerifyAction":["mouth","eye"],"livenessThreshold":0.8,"collection":2,"policeCheck":0,"policeThreshold":80,"localImageQuality":{"loose":{},"normal":{"minIllum":40,"maxIllum":220,"leftEyeOcclusion":0.8,"rightEyeOcclusion":0.8,"noseOcclusion":0.8,"mouseOcclusion":0.8,"leftContourOcclusion":0.8,"rightContourOcclusion":0.8,"chinOcclusion":0.8,"pitch":20,"yaw":18,"roll":20,"blur":0.6},"strict":{}}}
... ...
{
"face_license_id": "hhdoctor-face-ios"
"face_license_id": "hhdoctor1-face-ios"
}
... ...
0A75927447B3B8193B98ED08B55F8E51EC84CA483E8CABCE38CFD8603ED99D9CF9DCE49C43D8A01AE2CA0F2D84864744ED1DFC59008C7C8F9FB06E9D5D66189C2D17DF6795B4D4870A0888762810DD2A9DDAFB915A3CDC137BEE31800F3DCFB12DADDA9E293AE05CB2EE3891AF334086D3594C92AF1FF4E37A42182B1EB9B63C9BC27CAE8EA920E7EC0C0E0FE26AF40DBA11431F4B54DAB9579F819FC5593A7A6F16B4FB48F1AA9A9B84C53014DE8B0D5D5A8FCF4ACDED578258594FA5E27E971FA72C7244D6110ABB65405BCEE17F97FA9DA4EC3C7BE2B877B5E225B25E796E3CA6F01321D3850C2EB7B2512744690B5134186BBD53CCB3D348279681ACF00D
3C18A6F60B301302E5C10692B99A8328BEE1CDE5493F04F7E672C0E4231B727956D25A5D292976039945D73E47E3BE541122731A2F8A3927BC747BA5FA63E1147C61F1A9C8442DFD72B3120606FCDB016547AE14B5F61BD5951973C4E1078D36E8B305A48B19A9FA5DB51E15E3A1AEDEF4246053DE0FFA765E4FB0CDDDFCFA4811741E7B699869C9F6E1FE34C0272E1EF343C64A95C99950C1DD2B6668BA30AB5CC4DFB66B833112B1666F66FAB3C06F6EEF186CFE911ACFEDB2AFDE573810C0B36181C30B6C22FE3EF1D9F3AD110E337A7A080D3F996B85250A9787190EDE09AC83E7B9F5FD2EAAA11A6E1E1E3BC14A11345B76131143B693EDDE5943F8705E
549603A3268655193F3F69E11F9E6F328B10DE32E21CBDA2EAA2CA7B44D7DA2A348A346CDC1022E4EE42769B42625CD03763375B691397AFDF6C1A1FEB22014228A8E6162AF561FFA4694C20962637FF16BE9C84D4EF2CFC903D0187DA497FECB630210124908CEC6988826C17814F358EEE16D0E35DA79BA2A7A37244E4CF8E8043C55A09507BB26E5B3E46C299DE4AC3C408C162A26922F20548F3EDDBE0A78C45A1D95BB57A2CFC089C754AA794A4E8462A4A614C4EBCA5F3BD027A10EFCEE039B01C2DA2AAD95477218F8A3FD3EBD9BB7F8984E57E0E3FDE698FC203A96C233BE33881B1FFE3B061A0DD1DBBA3E9FB194D9976B531ED920FD601660927AA
... ...

2.1 KB | W: | H:

2.42 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

1.21 KB | W: | H:

1.51 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

944 Bytes | W: | H:

1.22 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin